Récupérer les valeurs d'un csv et changer le format au vol - VB/VBA/VBS - Programmation
Marsh Posté le 25-01-2021 à 10:40:18
Bonjour,
Ce code n'agit pas sur le contenu de la colonne F.
Il éclate les valeurs de la colonne A et place le résultat sur la feuille Feuil1
Que contient la colonne F ???
Où voudrais-tu le résultat x.xx au format texte ?
Notes que le fait de changer le format d'une cellule ne modifie pas son contenu :
- si c'est du texte quand on applique le format numérique "0.00", ça reste du texte !
- si c'est un nombre quand on applique le format texte "@", ça reste un nombre !
Pour modifier le contenu d'une cellule, il faut agir sur sa valeur.
Pour un code plus rapide, j'utiliserais des tableaux :
Code :
|
Marsh Posté le 25-01-2021 à 13:18:04
Bonjour Patrice
patrice33740 a écrit : |
mauvaise interprétation de ma part, je pensais que de cette façon, je forçais excel à interpréter les valeurs différemment....
patrice33740 a écrit : |
à la fin de l’exécution de la macro, la colonne F (de la feuille 1) doit contenir les valeurs de la colonne A (de la feuille csv) après manipulation, soit :
D7V:HR00000.01
D7V:HR00000.00
D7V:HR00104.13
D7V:HR00104.14
D7V:HR00000.02
D7V:HR00001.05
donc au format x.xx
patrice33740 a écrit :
|
Merci pour ton code, je l'ai copié dans mon projet.
ne maitrisant pas très bien les tableaux je ne le comprend pas aussi bien que ce que j'avais fais, mais je tacherais de me pencher dessus ;-).
Je suis désolé, je pensais avoir correctement décrit ma problématique, j’espère avoir été suffisament claire cette fois-ci
Merci à toi!!!
Marsh Posté le 25-01-2021 à 20:02:09
Je ne comprend pas ...
Tu veux donc en F de la feuille 1 la même chose qu'en A de la feuille csv ...
A quoi sert le format par défaut en x.xx ????
Pourquoi faire :
Code :
|
au lieu de faire simplement :
Code :
|
Dans mon code, au lieu de
f(i, 1) = Right(t(1), Len(t(1)) - 2)
il faudrait alors :
f(i, 1) = e(1, 1)
Tout ça n'est vraiment pas clair !!!!
Marsh Posté le 26-01-2021 à 07:49:45
Bonjour patrice,
- Je veux avoir en F ce qui est en gars
D7V:HR00000.01
D7V:HR00000.00
D7V:HR00104.13
D7V:HR00104.14
D7V:HR00000.02
D7V:HR00001.05
- Je ne veux aussi que: 0.00 ne soit pas réduit en 0
- Et pour finir, je veux que la colonne soit au format texte (sant que ça ne modifie l'écriture de 0.00 en 0)
par ce que le logiciel à qui j'envoie le fichier xls final me l'impose.....
voila
Marsh Posté le 26-01-2021 à 11:38:35
Je ne comprend pas, c'est exactement ce que fait la modification proposée !
Tu obtiens en F :
D7V:HR00000.01
D7V:HR00000.00
D7V:HR00104.13
D7V:HR00104.14
D7V:HR00000.02
D7V:HR00001.05
Avec ce code :
Code :
|
En lisant entre les lignes, peut-être qu'en F tu voudrais obtenir, au format texte :
0,01
0,00
104,13
104,14
0,02
1,05
mais tu ne l'as jamais demandé clairement !
Avec ce code :
Code :
|
Marsh Posté le 26-01-2021 à 12:31:27
patrice33740 a écrit : En lisant entre les lignes, peut-être qu'en F tu voudrais obtenir, au format texte : |
Mais si, c'est ce que je m'entête à demander depuis le début.....
Par contre je voudrais un point à la place de la virgule , mais du coup, ça a peut être un rapport avec les paramètres régionaux?
Marsh Posté le 26-01-2021 à 15:12:19
valerypetit a écrit : Mais si, c'est ce que je m'entête à demander depuis le début..... |
Relis tes demandes, malgré ma demande de précision, tu n'a jamais écris qu'en colonne F tu voulais :
0.01
0.00
104.13
104.14
0.02
1.05
Tu aurais eu la bonne réponse dès le début !
(Sinon à mauvaise question, mauvaise réponse)
valerypetit a écrit : Par contre je voudrais un point à la place de la virgule |
Voici donc le code :
Code :
|
Marsh Posté le 26-01-2021 à 15:48:00
Je ne suis pas tout à fait d'accord avec toi, mais vu que tu m'apporte la solution, je ne t'en tiendrais pas rigueur.
En plus, j'ai tendance à répéter que l'important n'est pas ce que l'on dis, mais ce que les autres comprennent
Code :
|
Dans tous les cas, je te remercie beaucoup pour ton aide
Marsh Posté le 26-01-2021 à 18:44:43
valerypetit a écrit : En plus, j'ai tendance à répéter que l'important n'est pas ce que l'on dis, mais ce que les autres comprennent |
Comment veux-tu qu'on comprenne que c'est dans la colonne F de la feuil1 si tu ne le précises pas ?
Ceci n'apparaît nulle part
00000.01
00000.00
00104.13
00104.14
00000.02
00001.05
Ton code modifies le format de la colonne F de la feuille csv
et il écrit autre chose en F de feuil1.
On se demande donc si c'est F de la feuille csv qui contient ça.
Parler de ce format ne fait qu'embrouiller le problème.
Comme ce n'était pas clair je demande des précisions
Et tu répond :
à la fin de l’exécution de la macro, la colonne F (de la feuille 1) doit contenir les valeurs de la colonne A (de la feuille csv) après manipulation, soit :
D7V:HR00000.01
D7V:HR00000.00
D7V:HR00104.13
D7V:HR00104.14
D7V:HR00000.02
D7V:HR00001.05
donc au format x.xx
Et tu répètes les mêmes valeurs au post suivant !
Comme tu dis l'important c'est ce que les autres comprennent.
Pour cela il faut être clair, net et précis, et écrire simplement :
- Je veux avoir en F :
0.01
0.00
104.13
104.14
0.02
1.05
CQFD
Marsh Posté le 25-01-2021 à 08:39:02
Bonjour,
Je cherche à faire une moulinette pour envoyer des valeurs d'un logiciel à un autre via la manipulation de fichiers csv et xls.
dans le fichier d'origine (csv), je récupère "entre autre" les valeurs suivantes :
D7V:HR00000.01
D7V:HR00000.00
D7V:HR00104.13
D7V:HR00104.14
D7V:HR00000.02
D7V:HR00001.05
que je j'éclate pour avoir les valeurs numériques dans une cellule à part.
seulement, dans le fichier de destination (xls), les cellules doivent être au format texte afin d'être correctement récupérés par le logiciel final.
donc une fois que j'ai collé mes valeurs dans les cellules de destination "format texte", elle apparaissent comme ci-dessous :
00000.01
00000.00
00104.13
00104.14
00000.02
00001.05
J'aurai besoin de supprimer tous les zéros en têtes afin d'avoir un format par défaut en x.xx surtout pour les valeurs comme 0.00 ou 1.00.
j'ai essayer de manipuler les formats mais n'arrive pas à l'écriture voulu à la fin "x.xx au format texte"
voici mon bout de code ;-).
Merci pour votre aide.
Valery
---------------
Il y a deux choses d'infini au monde : l'univers et la bêtise humaine... mais pour l'univers j'en suis pas très sûr