[Résolu]Export de données à partir d'un fichier txt

Birone

XLDnaute Nouveau
Bonjour Forum
Je voulais d’abord dire que je ne recherche pas une solution toute prête (sauf si vous l’avez !  ) mais plutôt des pistes de réflexions.
Contexte : J’ai une application dans lequel je gère des templates. Je suis capable d’extraire de cette application un fichier *.txt afin de faire d’une part des back-up, et d’autres part ré-injecter ce fichier lorsque je dois changer la version de l’application.
Dans le cadre de changement organisationnel, certains usagers qui utilisaient cette application et donc ces templates n’y auront plus accès. On m’a demandé de développer un petit outil « on the side » pour que les gens remplissent leur formulaire comme avant, avec une gestion de template comme avant.
J’ai donc sans trop de problème créer un programme (Formulaires VB excel + BD Access).
Tout va super bien.

Le problème est que l’ancienne application comportait près de 2000 templates et que je n’arrive pas à exploiter le fichier *.txt pour extraire les données dans une BD access afin de plus tard l’importer dans ma nouvelle BD….

J’ai mis en pièce jointe un extrait du fichier txt.
L’extrait comporte 2 templates et voici la structure :
Nom_de_champ,y,data où y représente le nombre de caractère du data.
Exemple :
mesg_s_umid,16,7C3EA36CFFFFFF24

Il s'agit de convertir le fichier source, où chaque enregistrement (chaque enregistrement correspond à un "template") en un fichier de type "tab-delimited" où chaque enregistrement est sur une seule ligne et où chacun de ses champs est séparé par un TAB. Ce fichier cible sera importé dans ACCESS….

Mon explication est longue mais bon….

Merci d’avance pour vos idées et excellente fin de semaine
 

Pièces jointes

  • test.txt
    2.4 KB · Affichages: 150
  • test.txt
    2.4 KB · Affichages: 171
  • test.txt
    2.4 KB · Affichages: 181
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Export de données à partir d'un fichier txt

Bonjour Birone,

je ne recherche pas une solution toute prête
... ça tombe bien! ;)

Juste l'une ou l'autre précision, si tu veux bien:
- si tu disposes d'un fichier .txt avec des virgules comme séparateur, on pourrait (me semble-t-il) l'ouvrir aisément avec Excel ... les différents champs pour chaque ligne se répartissant automatiquement en 3 colonnes différentes. On peut ensuite enregistrer le fichier comme fichier txt, avec la tabulation comme séparateur ou comme fichier Excel normal. Dans les deux cas, une macro peut se charger du "nettoyage" ou de la "mise en forme".
- comment pouvons-nous (nous qui ne connaissons pas ton contexte de travail, ni ton fichier) reconnaître les 2 templates qui seraient présents dans ton fichier? :confused: S'agit-il de la première ligne de chaque série dont les premiers caractères sont identiques? Les lignes dont le premier champ finirait par "umid"? Celles dont le premier champ contient le mot template? Ou alors est-ce l'ensemble des lignes dont les premiers caractères sont identiques? Etc.

... Le mieux serait peut-être de créer "à la main" un exemple de ce que devrait être le résultat attendu?
 

Birone

XLDnaute Nouveau
Re : Export de données à partir d'un fichier txt

Bonjour Modeste et merci de ta réponse,

En fait je viens de m'apercevoir que j'ai attaché le mauvais fichier texte. Car celui-ci ne représente qu'un seul template....
Un Template est composé d'une multitude de champs dont le premier est mesg_s_umid, le 2ième mesg_validation_requested etc...jusqu'au dernier champ qui est text_swift_prompted.
Dans mon fichier txt original, après ce dernier champ, on retrouve à nouveau le 1er champ etc......

Dans le fond, ce que j'ai pensé, c'est que dans 1 fichier excel, je fasse un tableau avec x colonnes représentant les champs. Puis à l'aide d'un code, je "balaye" le fichier texte pour qu'il m'extrait le contenu de chaque champ, sachant:
- le nombre de caractères à extraire est indiqué après la virgule du champ
- Quand l'extraction du champ text_swift_prompted est faite, il repart sur une nouvelle ligne pour recommencer.


Le problème des virgules, c'est que j'en retrouve également dans certains contenus de champ, donc quand je le colle dans un excel puis que je le sépare à l'aide des virgules, ça me foire tout...


Je mettrai un exemple d'un fichier excel tout à l'heure, quand j'aurai terminé de donner le biberon matinal de ma princesse :)

Merci encore Modeste !

Edit:
Re-bonjour * bonsoir
Voilà un exemple de fichier texte + l'excel auquel j'aimerai aboutir. Comme je le disais, je ne peux pas juste me servir des "," car il y en a dans certains contenus de champs.

Des idées ?
 

Pièces jointes

  • test1.xls
    23.5 KB · Affichages: 102
  • test.txt
    357 bytes · Affichages: 154
  • test1.xls
    23.5 KB · Affichages: 98
  • test.txt
    357 bytes · Affichages: 153
  • test1.xls
    23.5 KB · Affichages: 98
  • test.txt
    357 bytes · Affichages: 134
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Export de données à partir d'un fichier txt

Bonsoir (ici),

quand j'aurai terminé de donner le biberon matinal de ma princesse
... Ben mon vieux, de hier, 12:59 à aujourd'hui, 00:59 ... ce n'est plus un biberon :eek: c'est le camion citerne en entier qui y est passé! ;)

Plus sérieusement, le dernier fichier .txt que tu as transmis ne correspond pas vraiment aux spécifications que tu donnais hier:
Un Template est composé d'une multitude de champs dont le premier est mesg_s_umid, le 2ième mesg_validation_requested etc...jusqu'au dernier champ qui est text_swift_prompted
ça ne rend pas les choses faciles :rolleyes:
D'autre part, dans ce même dernier fichier, le nombre de caractères du data ne correspond pas à ce qui est affiché entre les 2 premières virgules:
- pour les "champ_1", 4 caractères sont annoncés ... mais "test1", "test2" et "test3" font chacun 5 caractères
- à l'inverse, "F E E" pour le "champ_4" ne compte que 5 caractères ... alors que 6 sont prévus!?

Peux-tu faire un premier test, en sélectionnant le contenu de ton fichier txt et en le collant en A1 de la Feuil1 du fichier joint. La macro s'exécute ensuite via le raccourci Ctrl+Shift+j

... Tu verras déjà si la répartition en colonnes correspond à ce que tu souhaites. Tu verras aussi l'illustration de ce que j'évoque ci-dessus, au sujet du nombre de caractères.

Tu reviendras ensuite nous dire ce qu'il en est :)
 

Pièces jointes

  • test 2013 11 10.xlsm
    15.4 KB · Affichages: 108

Birone

XLDnaute Nouveau
Re : Export de données à partir d'un fichier txt

Merci encore Modeste

Tu as raison, un biberon entraine un autre puis un bain puis un jeu...puis.....anyway.... :)

Merci pour ton aide.

Effectivement, mon fichier test n'était pas correct au niveau des caractères, j'ai fait ça trop vite....

Ta macro fonctionne correctement, j'ai juste un souci avec le fichier test original et plus précisément avec le champ text_data_block (qui est le champ le plus important).

Même si je ramène le contenu du champ sur une ligne, ça me fait l'erreur.

J'essaye de trouver pourquoi.

++
 

Birone

XLDnaute Nouveau
Re : Export de données à partir d'un fichier txt

Re-bonjour
En fait je me rends compte que cette solution ne pourra pas m'aider....
Je vais me résigner à faire ça à la main étant donné le temps très serré qu'il me reste pour rendre mon livrable.

Merci Modeste pour ton aide.

Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 244
Messages
2 086 558
Membres
103 247
dernier inscrit
bottxok