Creation Fichier texte à partir de données excel ??????

THYS

XLDnaute Nouveau
Bonjour à toutes et tous

Voilà mon problème,

Je précise que je ne connais pas VBA, mais peut-être n’en ai-je pas besoin pour ce problème

Je dois importer des données dans une application spécifique, dont le format de fichier est le suivant :
Les champs doivent être séparés par des virgules
Les champs texte doivent être entre guillemets et complétés par des blancs à droite jusqu'à la longueur du champ
Les champs ont une longueur fixe
Pour 2 des champs numériques (montant) => 16 chiffres + . + 2 chiffres sont complétés à gauche par des 0.


Les données que je dois importer se trouve sur une feuille Excel réparties de façon suivante :

De la colonne A à L, j’ai des données brutes
De M à AA j’ai des formules de calcul dont les résultats, à cette étape, ne sont pas encore au format demandé pour l’importation.

J’ai essayer de faire une recopie en valeur de mes champs dans une autre feuille, puis sauvegarder cette feuille en fichier.csv puis ouvrir avec notepad ce même fichier, puis remplacer les « deux points » par des « virgules » cela fonctionne bien, mais après consultation de ce fichier toujours avec notepad pour voir la structure du fichier sauvegardé mes données texte se trouvent bien séparées par la virgule mais mes champs textes sont

Soit sans les guillemets si mes données dans la cellule Excel sont par exemple fact 1925
Ex : champ1,fact 1925,champ2 etc … alors qu’il me faudrait "champ1","fact 1925","champ2"

Soit avec des triple guillemets si mes données dans la cellule Excel sont par exemple "fact 1925"

Ex : """champ1""","""fact 1925""","""champ2""" etc … alors qu’il me faudrait "champ1","fact 1925","champ2"

J’espère avoir été assez claire dans mes explications

je viens donc vers vous, si vous aviez une solution.

Merci d’avance
 

jeanpierre

Nous a quitté
Repose en paix
Re : Creation Fichier texte à partir de données excel ??????

Bonsoir THYS, re le forum,

Je ne sais si je pourrais t'être une quelconque utilité (même certain que non), mais sans le fichier de base, (avant export) et le fichier Xls abouti...

Sans boule de cristal... pas facile...

Jean-Pierre
 

THYS

XLDnaute Nouveau
Re : Creation Fichier texte à partir de données excel ??????

Bonsoir

Ok, j'essai de mettre une partie du fichier demain en pièce jointe.

je dis une partie car le fichier principal fait environ 55 mo et il est lié a 4 autres fichiers.

je ferai une recopie en valeur pour ne pas avoir les fichiers de liason, car j'ai beaucoup de recherchev() et de si() imbriqués
 

THYS

XLDnaute Nouveau
Re : Creation Fichier texte à partir de données excel ??????

Bonsoir,

Oui il s'agit d'une application spécifique (gestion de TVA etrangères de la communauté européenne)

de part les fichiers qui sont dans le repertoire d'installation du programme, je peux dire que ce programme fonctionne avec une structure Acces, car j'ai vu un fichier en .mdb. (mais le programme principal est un programme en .exe)

en fait je pensais même que ce que j'avais fais avec Excel marcherai très bien.

en effet, j'ai consulter la structure de la base du fichier en .mdb et donc prévu mes colonnes Excel en fonction de la structure de table de ce fichier Acces, j'ai même réussi à Exporter mes données Excel dans cette base Acces avec succès par la commande "Données externes" importation etc ...


En faisant tournée l' application spécifique, j'obtiens même des rapports de données qui sont conformes au résultats que j'attends

Mais dans cette application il y a un menu "Importation" et "Exportation", et c'est là que celà cloche, parcequ' en utilisant l'option "Exportation", le programme constitue un fichier texte, et lorsque je veux lire ce fichier et bien j'ai "Null" sur toutes les lignes que j'avais préalablement importées dans le fichier d'Acces.

donc en important les données directement par acces j'ai du uniquement contourné le problème.

il n'y aurait aucun inconvénient si ces données étaient pour ma propre utilisation, mais ces données doivent être exportées pour une consolidation et donc structurée comme je vous l'ai donné plus haut.


excusez-moi si c'est un petit long, mais ce n'est pas facile à expliquer
 

THYS

XLDnaute Nouveau
Re : Creation Fichier texte à partir de données excel ??????

Bonsoir,

pour le traitement des champs numériques je sais faire :

exemple pour ma valeur HT : du champ "Montant en €"

origne 1259,60 => formule pour préparation au format demandé

=SI(ESTERREUR(NBCAR(A2)-CHERCHE(",";A2;1))=VRAI;REPT("0";19-NBCAR(A2&".00"))&A2&".00";SI(NBCAR(A2)-CHERCHE(",";A2;1)=1;REPT("0";19-NBCAR(REMPLACER(A2;CHERCHE(",";A2;1);1;".")&"0"))&REMPLACER(A2;CHERCHE(",";A2;1);1;".")&"0";REPT("0";19-NBCAR(REMPLACER(A2;CHERCHE(",";A2;1);1;".")))&REMPLACER(A2;CHERCHE(",";A2;1);1;".")))

résultat = 0000000000001259.60
 

THYS

XLDnaute Nouveau
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
 

THYS

XLDnaute Nouveau
Re : Creation Fichier texte à partir de données excel ??????

je n'ai pas fait la prévisualisation du post à tord il faut corrigé

B1 = "*"&A1&rept(" ";12-nbcar(A1))&"*" on obtient ainsi *1259 * entre le 9 et * il y a bien 8 espaces blancs


« champ1 », « champ2 »,champ3,champ4, « champ5 » par
"champ1","champ2",champ3,champ4,"champ5"

problème d'alignement

A B C D E sont les colonnes d'excel

le 1 en dessous correspond à la ligne 1 d'excel

1 *20* *1259 * 062007 -000000000001259.30 *GB810882325 *
 

Discussions similaires

Réponses
9
Affichages
263

Statistiques des forums

Discussions
314 499
Messages
2 110 247
Membres
110 711
dernier inscrit
chmessi