Mise en forme Format CSV "*.cxr" - VB/VBA/VBS - Programmation
Marsh Posté le 26-10-2017 à 14:01:04
Bonjour,
modifier temporairement le séparateur décimal directement dans le paramétrage d'Excel !
Et en activant l'Enregistreur de macro, l'instruction est vite trouvée …
Marsh Posté le 26-10-2017 à 17:27:43
Merci de ta réponse Marc,
effectivement, j'ai trouvé : Selection.NumberFormat = "0.00" pour le format.
seulement j'ai des chiffres dans les colonnes "D" et "G" et je ne dois modifier que le format des chiffres pioché dans la colonne "D"
avec le code ci-dessus, je ne sais pas trop comment l'intégrer.
en sachant que actuellement mes cellules sont déjà formaté, le problème c'est pendant le transfert vers mon fichier texte.....
Marsh Posté le 26-10-2017 à 17:45:36
Cela ne change en rien le séparateur décimal défini dans Excel !
Regarder donc l'aide VBA interne - tout y est ! - de la propriété DecimalSeparator …
Et puis avant de modifier le code, juste changer dans le paramétrage d'Excel le séparateur décimal
pour tester ensuite le code initial : si c'est OK manuellement alors la modification du code est valable.
Marsh Posté le 27-10-2017 à 14:29:44
Salut Marc,
Merci pour ton aide,
J'ai ajouté ceci à mon code:
Application.DecimalSeparator = "."
Application.UseSystemSeparators = False
toutes mes valeurs passent bien au format xxx.xx,
Rien ne change lorsque j'écrit mes données dans le fichier texte.....
j'ai toujours à l'intérieur le format xxx,xx.... et les valeur xxx.00 deviennent xxx
Marsh Posté le 27-10-2017 à 16:49:32
ça ne serait pas grand chose si je n'avais que les "," à remplacer avant d'envoyer vers mon logiciel,
mais la perte des décimales est beaucoup plus problématique je suis obligé de recontrôler chaque lignes du fichier texte avant de pouvoir l'importer....
Marsh Posté le 28-10-2017 à 12:16:51
Après la configuration du séparateur décimal dans Excel, le B-A-BA est de ne pas confondre valeur interne et valeur affichée !
Donc si l'affichage des cellules est correct alors abandon de la variable tableau - rapidité illusoire en lecture de cellules ! -
et utiliser la propriété Text au lieu de Value …
Sinon utiliser la fonction texte Format pour alourdir la boucle mais en convertissant le texte au résultat désiré.
Marsh Posté le 30-10-2017 à 11:59:53
Salut Marc,
je me disais que c’était bizarre ;-)
La premiére méthode ne fonctionne pas.....
si je modifier:
ar = Sheets("Format CX" ).Cells(5, 3).CurrentRegion.Value
en:
ar = Sheets("Format CX" ).Cells(5, 3).CurrentRegion.Text
le fichier de sortie est vide.
j'ai essayé la fonction format, en ajoutant:
Code :
|
Résultat.....:
Code :
|
j'ai un virgule après 900 et 950 alors qu'il ne sont pas censé avoir de décimal.
les autres nombres ont gardé la leur.... et les décimals égal à zéro disparaisses....
avec une bibliothèque xml cela pourrait-il changer quelque chose? ça n'est pas prévu pour?
perso je n'est pas essayé ne sachant pas comment l'inclure au projet
Marsh Posté le 31-10-2017 à 09:02:13
En fait ça n'est absolument pas du XML mais du CSV :-))
Marsh Posté le 31-10-2017 à 11:59:52
valerypetit a écrit : ar = Sheets("Format CX" ).Cells(5, 3).CurrentRegion.Text |
C'était pourtant clair :
Marc L a écrit : Donc si l'affichage des cellules est correct alors abandon de la variable tableau |
En lecture travail direct sur les cellules …
valerypetit a écrit : j'ai un virgule après 900 et 950 alors qu'il ne sont pas censé avoir de décimal. |
Là il s'agit juste de la création d'un pauvre fichier texte en formatant les valeurs numériques en texte …
Évidemment si la source n'est pas numérique mais du texte …
Il suffit juste de respecter les fondamentaux, à savoir les types de données des variables, à la portée d'un débutant.
Et là ton format dans ta boucle n'est toujours pas bon car si tu veux conserver les décimales,
ce n'est pas avec un dièse dans le format mais plutôt un zéro comme indiqué dans l'aide VBA ‼
Edit : et si ce n'est pas dans l'aide VBA alors c'est pire car il s'agit aussi du B-A-BA d'Excel ! (fonction TEXTE et formatage d'une cellule)
valerypetit a écrit : En fait ça n'est absolument pas du XML mais du CSV :-)) |
Je l'avais déjà compris … Et encore CSV ne voulant rien dire à part fichier texte car on y trouve de tout,
les séparateurs de données et décimaux pouvant changer d'une région à une autre !
Marsh Posté le 26-10-2017 à 11:00:09
Bonjour à tous ,
voila j'arrive sur la dernière étape d'un classeur dans lequel j'ai développé quelques macros pour me faciliter un travail de saisie.
il s'agit maintenant d’exporter mes données au format
XMLCSV "*.cxr" pour les importer ensuite dans un logiciel.jusque là tout va bien. je généré le fichier et les tabulations sont au bon endroit.
par contre j'ai relevé un problème de taille ......:
- la mise en forme des nombres à virgule est modifié 950.10 devient 950,1
alors j'ai fais un test d'importation, après avoir remplacé les "," par des "." et le résultat final devient 950.01 ce qui n'est plus du tout la valeur voulu......
Je ne connais pas grand chose au VBA et vu la boucle que j'utilise pour exporter mes données, je ne vois pas trop comment y intégrer la mise en forme des valeur numérique
c'est là que vos lumières m’intéresse!!!
je vous met mon petit bout de code ci-dessous, la partie qui nous intéresse est compris entres les ligne 14 et 27.
Merci d'avance pour votre aide
Message édité par valerypetit le 31-10-2017 à 09:01:37
---------------
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