EXCEL_Mise en forme specifique vers un TXT

Eldsyd Messages postés 1 Statut Membre -  
wilfried_42 Messages postés 912 Statut Contributeur -
Bonjour,

Ultra-novice en VBA et utilisateur moyen d'Excel, voila mon probleme.
Pour faire tourner un programme, j'ai besoin d'un jeu de donnees en TXT avec une mise en forme bien specifique et reguliere, respectant un nombre d'espaces precis, ou plutot une "casse" precise. Je m'explique :
J'ai un tableau EXCEL rempli de donnees que je cherche a exporter en format TXT. Seulement, quelque soit les nombres que j'y entre, ils doivent etre "alignes" de la meme facon, comme s'il s'agissait d'un tableau avec des cases. Mais en TXT.

Voila typiquement ce que je veux :

Objectif.txt
95010106 17 2.5 230 E 465 14. 0.2710 -------74.50 4 0.0
95010107 17 2.9 239 C 583 12. 0.3250 100000.00 4 0.0

Les tirets ne sont la que pour replacer des espaces, et parce que le format de ce post ne permet pas d'enchainer les espaces!^^ (Ha, pas facile de parler d'un probleme de mise en forme dans une fenetre qui ne respecte pas la mise en forme en question...)

Voila ce que j'obtiens en utilisant des idees basiques (Find & Replace, exporter en Tab Delimited text file,...):

Resultat.txt
07010102 20 9.0 100 F 1715 21. 0.9899 100000.00 4 0.0
07010103 20 2.0 100 F 425 28. 0.1968 100000.00 4 0.0

Oui, c'est l'bordel, rien n'va plus!

Evidemment, j'arrive a avoir le bon nombre d'espaces entre les nombres, mais l'alignement n'est pas la. Et le programme en question est tres capricieux, il veut sa casse. Pour plus de clarte, je vous ai mis deux lignes, mais il s'agit en fait d'une petite 100aine de milliers de lignes a traiter.^^'
N.B.: les espaces dans l'Objectif.txt doivent necessairement etre des espaces et pas des tabulations. Oui, c'est ca qui est tout nul et mal programme.^^

Viens donc le temps honni de la macro, je ne vais pas y echapper. J'ai pense a utiliser la fonction CONCATENATE pour agreger mes donnees en une ligne (et est apparu un autre probleme...Voir plus bas!), et je cherche un moyen de separer la chaine de caracteres en question en plusieurs chaines de caractere avec un nombre de lettres determine, dans l'espoir que l'alignement se fasse de cette facon...
Mais je suis ouvert a toutes propositions.

Dans mes recherches, j'ai egalement decouvert un autre probleme : l'impossibilite pour Excel de conserver un "format" de donnees quand on passe du format Nombre au format Texte.
Exemple simple : ma donnee initiale est un 8, et je souhaite avoir un texte qui me retourne 8.0.

En vous remerciant,
Elderath

1 réponse

wilfried_42 Messages postés 912 Statut Contributeur 245
 
Bonjour

regarde la fonction TEXTE(nombre; Format)

comme dans ta ligne tu as tu text, tout sera ok

En A1 j'ai A, en B1, 125,75 et en C1 8 et je veux A ---125,75 8.0 (les tirets des espaces)
en d1 j'ecris =A1 & " " & texte(B1;"######,##") & " " & texte(C1;"#,0")

maintenant pour deconcatener, j'ai vu, (elle n'est pas de moi), une formule qui fait cela tres bien, mais pour toi, le plus simple c'est de faire une importation de type CSV avec comme seprarateur de champ, l'espace
1