Re : Creation Fichier texte à partir de données excel ??????
Bonsoir à tous, et un grand merci pour votre aide et notamment à TATIAK à l’évidence très à l’aise en VB.
Tout d’abord désolé pour mon intervention tardive à vos réponses, (semaine difficile), de plus la situation à évoluée, car je suis finalement arrivé à constituer ce fameux fichier dans le format voulu, mais pas dans le langage des puristes (VB ou VBA), Je vais donc vous déposez ma solution ici et j’espère ne pas m’attirer les foudres des puristes.
Je pensais avoir fait le plus difficile en vous déposant ma formule sur les « 2 champs numériques » correspondant à mes valeurs HT et TVA et bien non !!,
Premièrement il se trouve que cette formule c’est avérée incomplète, (après un test en grandeur nature), sur mon fichier volumineux, car elle ne tenait pas compte des valeurs négatives et donc je me retrouvais avec des résultats de ce genre :
(ex : cellule A1 valeur = -1259,30 => résultat de la formule en
B1 = -0000000000-1259.30 donc évidemment non exploitable, donc voici ma nouvelle formule qui elle fonctionne parfaitement :
en AD2 doit être une valeur <> 0 sinon je n’ai pas lieu de faire le calcul
en AM2 étant la valeur que je dois convertir
=SI(AD2=0;"";SI(AM2>=0;SI(ESTERREUR(NBCAR(AM2)-CHERCHE(",";AM2;1))=VRAI;REPT("0";19-NBCAR(AM2&".00"))&AM2&".00";SI(NBCAR(AM2)-CHERCHE(",";AM2;1)=1;REPT("0";19-NBCAR(REMPLACER(AM2;CHERCHE(",";AM2;1);1;".")&"0"))&REMPLACER(AM2;CHERCHE(",";AM2;1);1;".")&"0";REPT("0";19-NBCAR(REMPLACER(AM2;CHERCHE(",";AM2;1);1;".")))&REMPLACER(AM2;CHERCHE(",";AM2;1);1;".")));SI(ESTERREUR(NBCAR(AM2)-CHERCHE(",";AM2;1))=VRAI;"-"&REPT("0";18-NBCAR(AM2&".00"))&REMPLACER(AM2;CHERCHE("-";AM2;1);1;"0")&".00";SI(NBCAR(AM2)-CHERCHE(",";AM2;1)=1;"-"&REPT("0";18-NBCAR(REMPLACER(AM2;CHERCHE(",";AM2;1);1;".")&"0"))&REMPLACER(REMPLACER(AM2;CHERCHE("-";AM2;1);1;"0");CHERCHE(",";AM2;1);1;".")&"0";"-"&REPT("0";18-NBCAR(REMPLACER(AM2;CHERCHE(",";AM2;1);1;".")))&REMPLACER(REMPLACER(AM2;CHERCHE("-";AM2;1);1;"0");CHERCHE(",";AM2;1);1;".")))))
résultat après la formule modifiée : -000000000001259.30
Deuxièmement les champs texte à mettre entre guillemet, et bien là, j’ai souffert parce que dans une cellule Excel = ""champ1"" vous obtenez « invalide »
En fait, j’ai donc modifié le guillemet demandé pour mon format, par le signe multiplié * , ce qui donne par exemple pour mon champ texte numéro de facture qui doit être de 12 caractères
En cellule A1 la valeur 1259 => ma formule en
B1 = "*"&A1&rept(" ";12-nbcar(A1))&"*" on obtient ainsi *1259 *
une fois les colonnes de mon fichier Excel structurées du genre
A B C D E
1 *20* *1259 * 062007 -000000000001259.30 *GB810882325 *
il me fallait construire le fichier au format demandé exemple
« champ1 », « champ2 »,champ3,champ4, « champ5 »
à partir de là je pense que les puristes ne vont pas aimer (je pense qu’ils appellerons çà de la bidouille)
je sélectionne les valeurs de mes colonnes A à E jusqu’à la dernière ligne du fichier
puis CTRL C
puis en position A1 d’une feuille vierge d’un autre classeur EDITION COLLAGE SPECIAL VALEUR
puis sur ce nouveau classeur FICHIER ENREGISTRER SOUS (non du fichier) mais au format CSV (séparateur
j’ouvre ensuite avec « notepad » mon fichier .CSV
je sélectionne l’ensemble des lignes du fichier
puis EDITION REMPLACER ; par ,
je sélectionne de nouveau l’ensemble des lignes du fichier (car à la fin de l’étape précédente le fichier est désélectionné )
puis EDITION REMPLACER * par "
je sauvegarde mon fichier
j’importe mon fichier .CSV dans mon programme spécifique Eh là !!! miracle çà marche et donc je suis content
je suis désolé d’avoir été un peu long, mais si cela peu aider d’autres personnes qui comme pour moi VB ou VBA ne sont pas de leur niveau, j’en serai très heureux.
De plus par respect des gens qui ont bien voulu contribuer à ce post et notamment TATIAK, cela me paraissait tout à fait naturel de le faire.
Encore merci à tous