Recopier en boucle les infos dans *.txt sur excel
fred8080
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
fred8080 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
fred8080 Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je suis débutant en macro sur excel, pourriez-vous m'aider à compléter ceci svp:
J'ai besoin de récupérer des informations qui sont sur plusieurs fichiers *.txt
Ces fichiers *.txt sont tous dans un même répertoire (des centaines...)
et sont tous de formes identiques (les positions des données à extraire sont identiques)
J'aimerais récupérer 9 informations dans chacun de ces fichiers *.txt (non pas l'intégralité du fichier)
Les différentes étapes que je fais pour l'instant "à la main":
Depuis le fichier excel "exemple.xls" dont je veux recopier les infos:
1- Ouvrir un fichier *.txt, avec les options de préformatage (dont le séparateur = espace)
2- Recopier les infos de chacune des 9 cellules (A-B-C-D-E-F-G-H-I) du fichier "monfichier.txt"
dans mon fichier excel "exemple.xls" sur une même ligne (voir image)"
3- Fermer le fichier *.txt une fois la copie terminée puis ouvrir le suivant
Chaque fichier *.txt est recopié sur une seule ligne, le fichier *.txt suivant sur la ligne n+1
et ainsi de suite jusqu'au dernier fichier du répertoire.
Merci beaucoup à tous.

Je suis débutant en macro sur excel, pourriez-vous m'aider à compléter ceci svp:
J'ai besoin de récupérer des informations qui sont sur plusieurs fichiers *.txt
Ces fichiers *.txt sont tous dans un même répertoire (des centaines...)
et sont tous de formes identiques (les positions des données à extraire sont identiques)
J'aimerais récupérer 9 informations dans chacun de ces fichiers *.txt (non pas l'intégralité du fichier)
Les différentes étapes que je fais pour l'instant "à la main":
Depuis le fichier excel "exemple.xls" dont je veux recopier les infos:
1- Ouvrir un fichier *.txt, avec les options de préformatage (dont le séparateur = espace)
2- Recopier les infos de chacune des 9 cellules (A-B-C-D-E-F-G-H-I) du fichier "monfichier.txt"
dans mon fichier excel "exemple.xls" sur une même ligne (voir image)"
3- Fermer le fichier *.txt une fois la copie terminée puis ouvrir le suivant
Chaque fichier *.txt est recopié sur une seule ligne, le fichier *.txt suivant sur la ligne n+1
et ainsi de suite jusqu'au dernier fichier du répertoire.
Merci beaucoup à tous.

A voir également:
- Recopier en boucle les infos dans *.txt sur excel
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Comment trier par ordre alphabétique sur excel - Guide
- Comment calculer la moyenne sur excel - Guide
11 réponses
Bonjour,
et si ça convient merci de le signaler sur les autres forums.
En général poster sur plusieurs forum sans attendre 24-48h sans réponse est mal vu...
Ca ne fait pas plaisir quand on passe 1/2h sur un fichier et qu'on s'aperçoit que c'est pour rien car déjà résolu ailleurs.
eric
et si ça convient merci de le signaler sur les autres forums.
En général poster sur plusieurs forum sans attendre 24-48h sans réponse est mal vu...
Ca ne fait pas plaisir quand on passe 1/2h sur un fichier et qu'on s'aperçoit que c'est pour rien car déjà résolu ailleurs.
eric
Bonsoir
Après réflexion, voici une autre version plus pratique que la précédente (dans la première version, il fallait remplir manuellement la liste des fichiers à traiter dans la colonne C de la feuille "Liste") Inconvénient, si la liste est très longue, ce sera vite fastidieux, dans cette nouvelle version, le programme va chercher directement tous les fichiers du répertoire sélectionné (colonne B de la feuille "Liste"). Avantage, plus simple d'utilisation, à condition toutefois que dans le répertoire en question, il n'y ait que les fichiers à traiter et rien d'autre, sinon utilisez la première version.
https://www.cjoint.com/c/EGzvasRcXxw
Cdlt
Après réflexion, voici une autre version plus pratique que la précédente (dans la première version, il fallait remplir manuellement la liste des fichiers à traiter dans la colonne C de la feuille "Liste") Inconvénient, si la liste est très longue, ce sera vite fastidieux, dans cette nouvelle version, le programme va chercher directement tous les fichiers du répertoire sélectionné (colonne B de la feuille "Liste"). Avantage, plus simple d'utilisation, à condition toutefois que dans le répertoire en question, il n'y ait que les fichiers à traiter et rien d'autre, sinon utilisez la première version.
https://www.cjoint.com/c/EGzvasRcXxw
Cdlt
Bonjour,
merci beaucoup de vos réponses,
mais je n'arrive pas à ouvrir les fichier .xlsm
cordialement,
merci beaucoup de vos réponses,
mais je n'arrive pas à ouvrir les fichier .xlsm
cordialement,
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Boujour
deja voila une macro pour lister les fichiers Txt
A+
Maurice
deja voila une macro pour lister les fichiers Txt
Sub ChoixDossierS() With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = ActiveWorkbook.Path & "\" .Show If .SelectedItems.Count > 0 Then ChoixDossier = .SelectedItems(1) BoucleFichiers ChoixDossier & "\" Else ChoixDossier = "" End If End With End Sub Sub BoucleFichiers(Chemin) Range("A2:A" & Rows.Count).ClearContents 'Boucle sur tous les fichiers txt du répertoire. Fichier = Dir(Chemin & "*.txt") L = 2 Do While Len(Fichier) > 0 Range("A" & L).Value = Chemin & Fichier L = L + 1 Fichier = Dir() Loop End Sub
A+
Maurice
Bonjour à tous,
Voici un code proposé par ""gmb"" que je le remercie grandement.
Ce code répond bien à ma demande.
Je vous le partage ici pour avoir vos avis.
"Option Explicit
Dim chemin, nomFichier, f, classeur, i, lgn, adrOr, flag
Sub Importer()
Application.ScreenUpdating = False
If flag = 1 Then
Range(""A1"").CurrentRegion.Offset(1, 0).ClearContents
End If
chemin = ThisWorkbook.Path & ""\""
nomFichier = Dir(chemin & ""*.*"")
Do While nomFichier <> """"
Set f = ActiveSheet
lgn = f.Range(""A1"").CurrentRegion.Rows.Count + 1
If nomFichier <> ThisWorkbook.Name Then
Set classeur = Workbooks.Open(chemin & nomFichier)
For i = 1 To 9
adrOr = Choose(i, ""$B$1"", ""$C$1"", ""$B$5"", ""$E$5"", ""$B$9"", ""$E$9"", ""$C$13"", ""$D$13"", ""$E$13"")
f.Cells(lgn, i).Value = Range(adrOr)
Next i
classeur.Close False
End If
nomFichier = Dir
Loop
ActiveSheet.Range(""$A$1"").CurrentRegion.RemoveDuplicates Columns:=Array(2, 3), Header:=xlYes
End Sub"
___________________
mes données sur txt:
"112322 A B blabla bla
blabla bla
blabla bla
FRA C ey 1234 D
blabla blablabla blablabla blablabla blablabla bla
12 E 22 33 F
blabla bla
020 12345678 G H I
blabla bla
blabla blablabla bla
"
Voici un code proposé par ""gmb"" que je le remercie grandement.
Ce code répond bien à ma demande.
Je vous le partage ici pour avoir vos avis.
"Option Explicit
Dim chemin, nomFichier, f, classeur, i, lgn, adrOr, flag
Sub Importer()
Application.ScreenUpdating = False
If flag = 1 Then
Range(""A1"").CurrentRegion.Offset(1, 0).ClearContents
End If
chemin = ThisWorkbook.Path & ""\""
nomFichier = Dir(chemin & ""*.*"")
Do While nomFichier <> """"
Set f = ActiveSheet
lgn = f.Range(""A1"").CurrentRegion.Rows.Count + 1
If nomFichier <> ThisWorkbook.Name Then
Set classeur = Workbooks.Open(chemin & nomFichier)
For i = 1 To 9
adrOr = Choose(i, ""$B$1"", ""$C$1"", ""$B$5"", ""$E$5"", ""$B$9"", ""$E$9"", ""$C$13"", ""$D$13"", ""$E$13"")
f.Cells(lgn, i).Value = Range(adrOr)
Next i
classeur.Close False
End If
nomFichier = Dir
Loop
ActiveSheet.Range(""$A$1"").CurrentRegion.RemoveDuplicates Columns:=Array(2, 3), Header:=xlYes
End Sub"
___________________
mes données sur txt:
"112322 A B blabla bla
blabla bla
blabla bla
FRA C ey 1234 D
blabla blablabla blablabla blablabla blablabla bla
12 E 22 33 F
blabla bla
020 12345678 G H I
blabla bla
blabla blablabla bla
"
Bonjour
Pourquoi demander notre avis puisque ça vous convient?
Juste une petite remarque, dans la proposition que j'avais faite(post 3), je prenais les fichiers texte à l'état brut et faisait la mise en forme dans la foulée avant traitement. Dans la réponse de gmb, le prélèvement des données se fait directement dans des fichiers déjà convertis,
Question: A quel moment et par QUI les fichiers texte sont convertis au format Excel?.
Dans la proposition de gmb, le fichier de récupération des données et les fichiers texte se trouvent dans le même répertoire, alors que dans ma proposition, le fichier de récupération des données pouvait être dans un répertoire différent de celui des fichiers texte, il suffisait de mettre le chemin des fichiers texte dans la feuille "Liste" en B2 et le programme allait chercher les fichiers et les traitait un à un (il ajoutait le noms des fichiers texte en colonne C de la "Liste").
Relisez le Post 2 d'Eriic avant de mettre en RESOLU
Bonne journée
Cdlt
Pourquoi demander notre avis puisque ça vous convient?
Juste une petite remarque, dans la proposition que j'avais faite(post 3), je prenais les fichiers texte à l'état brut et faisait la mise en forme dans la foulée avant traitement. Dans la réponse de gmb, le prélèvement des données se fait directement dans des fichiers déjà convertis,
Question: A quel moment et par QUI les fichiers texte sont convertis au format Excel?.
Dans la proposition de gmb, le fichier de récupération des données et les fichiers texte se trouvent dans le même répertoire, alors que dans ma proposition, le fichier de récupération des données pouvait être dans un répertoire différent de celui des fichiers texte, il suffisait de mettre le chemin des fichiers texte dans la feuille "Liste" en B2 et le programme allait chercher les fichiers et les traitait un à un (il ajoutait le noms des fichiers texte en colonne C de la "Liste").
Relisez le Post 2 d'Eriic avant de mettre en RESOLU
Bonne journée
Cdlt
Bonjour,
Je disais que ce code me convenais pour l'exemple de txt ci dessus.
Je suis encore en cours de test pour l'appliquer en
situation réelle.
Pour répondre à vos questions:
1- Le fichier source est un pdf (c'est un programme interne de l'entreprise qui extrait ce fichier: composé d'image et de text, son formatage est toujours identique)
2- Je l'enregistre sous forme .txt pour ne travailler que sur du text (y- a t'il un batch qui peut faire automatiquement cela sur tout un répertoire ?)
=> ou tout simplement peut-on travailler directement
sur le pdf ??
Pour ce qui est la technique de traitement de l'info,
je n'y connais pas grand chose.
Les fichiers sont dans un même répertoire, donc le code statique de GMB convient.
Pour info: je n'ai pas encore testé vos 2 tests car je suis sous excel 2002 qui ne prend pas en charge .xlsm
Je vais installer une nouvelle version d'excel pour tester vos codes.
Cependant en changeant le contenu du text, il ne se passe rien (aucun chiffre n'est copié):
"1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
31 32 33 34 35 36 37 38 39
41 42 43 44 45 46 47 48 49
51 52 53 54 55 56 57 58 59
61 62 63 64 65 66 67 68 69
71 72 73 74 75 76 77 78 79
81 82 83 84 85 86 87 88 89
91 92 93 94 95 96 97 98 99
1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
31 32 33 34 35 36 37 38 39
41 42 43 44 45 46 47 48 49
51 52 53 54 55 56 57 58 59
61 62 63 64 65 66 67 68 69
71 72 73 74 75 76 77 78 79
81 82 83 84 85 86 87 88 89
91 92 93 94 95 96 97 98 99"
Faut-il changer certains paramètres ?
Merci à tous.
Cordialement
Je disais que ce code me convenais pour l'exemple de txt ci dessus.
Je suis encore en cours de test pour l'appliquer en
situation réelle.
Pour répondre à vos questions:
1- Le fichier source est un pdf (c'est un programme interne de l'entreprise qui extrait ce fichier: composé d'image et de text, son formatage est toujours identique)
2- Je l'enregistre sous forme .txt pour ne travailler que sur du text (y- a t'il un batch qui peut faire automatiquement cela sur tout un répertoire ?)
=> ou tout simplement peut-on travailler directement
sur le pdf ??
Pour ce qui est la technique de traitement de l'info,
je n'y connais pas grand chose.
Les fichiers sont dans un même répertoire, donc le code statique de GMB convient.
Pour info: je n'ai pas encore testé vos 2 tests car je suis sous excel 2002 qui ne prend pas en charge .xlsm
Je vais installer une nouvelle version d'excel pour tester vos codes.
Cependant en changeant le contenu du text, il ne se passe rien (aucun chiffre n'est copié):
"1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
31 32 33 34 35 36 37 38 39
41 42 43 44 45 46 47 48 49
51 52 53 54 55 56 57 58 59
61 62 63 64 65 66 67 68 69
71 72 73 74 75 76 77 78 79
81 82 83 84 85 86 87 88 89
91 92 93 94 95 96 97 98 99
1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
31 32 33 34 35 36 37 38 39
41 42 43 44 45 46 47 48 49
51 52 53 54 55 56 57 58 59
61 62 63 64 65 66 67 68 69
71 72 73 74 75 76 77 78 79
81 82 83 84 85 86 87 88 89
91 92 93 94 95 96 97 98 99"
Faut-il changer certains paramètres ?
Merci à tous.
Cordialement
Bonjour
je n'ai pas encore testé vos 2 tests car je suis sous excel 2002 il fallait le dire, je vous l'aurai envoyé au bon format, Revoici le fichier enregistré en .xls
https://www.cjoint.com/c/EGCc23dxyw1
Je vais installer une nouvelle version d'excel pour tester vos codes. .Sur les 2 fichiers envoyés précédemment, ne prenez que le dernier (vous n'avez qu'à mettre dans la feuille "Liste" le chemin ou se trouve les fichiers.txt , le nom du lecteur en cellule A2 et le nom du répertoire dans la cellule B2 , le programme ira chercher chaque fichier.txt, même fonctionnement que gmb), ei il remplira la colonne C avec tous les noms des fichiers qu'il aura traité.
Cependant en changeant le contenu du text, il ne se passe rien (aucun chiffre n'est copié) ,Comment avez-vous fait puisque vous n'aviez pas la bonne version d'excel?
Pour ma part, j'ai refait les essais avec votre tableau , et ça fonctionne parfaitement. Avez-vous mis le chemin complet dans la feuille "Liste"?
l'avez-vous bien enregistrer au format.txt.
Je vous repose la question: Dans la réponse de gmb, le prélèvement des données se fait directement dans des fichiers déjà convertis,
Question: A quel moment et par QUI les fichiers texte sont convertis au format Excel?.
Les fichiers sont dans un même répertoire et Pour ce qui est la technique de traitement de l'info,
je n'y connais pas grand chose.
Si j'ai pris soin de mettre le fichier programme dans un répertoire autre que que celui des fichiers à traiter, c'est que, comme on dit "on mélange pas les torchons et les serviettes", le répertoire contenant les fichiers.txt à traiter, ne doit contenir que ça et rien d'autre. Quand vous recevez vos nouveaux fichiers, n'effacez-vous pas tous les anciens? si le programme est dans le même répertoire, il y a de fortes chances qu'il passe à la trappe lui aussi (Ce sont des situations que j'ai vu maintes fois). Ce n'est qu'une question de logique et d'organisation. Maintenant, libre à vous de suivre mes conseils, ils sont gratuits mais non dénués de bon sens.
Je vous souhaite une bonne journée.
Cdlt
je n'ai pas encore testé vos 2 tests car je suis sous excel 2002 il fallait le dire, je vous l'aurai envoyé au bon format, Revoici le fichier enregistré en .xls
https://www.cjoint.com/c/EGCc23dxyw1
Je vais installer une nouvelle version d'excel pour tester vos codes. .Sur les 2 fichiers envoyés précédemment, ne prenez que le dernier (vous n'avez qu'à mettre dans la feuille "Liste" le chemin ou se trouve les fichiers.txt , le nom du lecteur en cellule A2 et le nom du répertoire dans la cellule B2 , le programme ira chercher chaque fichier.txt, même fonctionnement que gmb), ei il remplira la colonne C avec tous les noms des fichiers qu'il aura traité.
Cependant en changeant le contenu du text, il ne se passe rien (aucun chiffre n'est copié) ,Comment avez-vous fait puisque vous n'aviez pas la bonne version d'excel?
Pour ma part, j'ai refait les essais avec votre tableau , et ça fonctionne parfaitement. Avez-vous mis le chemin complet dans la feuille "Liste"?
l'avez-vous bien enregistrer au format.txt.
Je vous repose la question: Dans la réponse de gmb, le prélèvement des données se fait directement dans des fichiers déjà convertis,
Question: A quel moment et par QUI les fichiers texte sont convertis au format Excel?.
Les fichiers sont dans un même répertoire et Pour ce qui est la technique de traitement de l'info,
je n'y connais pas grand chose.
Si j'ai pris soin de mettre le fichier programme dans un répertoire autre que que celui des fichiers à traiter, c'est que, comme on dit "on mélange pas les torchons et les serviettes", le répertoire contenant les fichiers.txt à traiter, ne doit contenir que ça et rien d'autre. Quand vous recevez vos nouveaux fichiers, n'effacez-vous pas tous les anciens? si le programme est dans le même répertoire, il y a de fortes chances qu'il passe à la trappe lui aussi (Ce sont des situations que j'ai vu maintes fois). Ce n'est qu'une question de logique et d'organisation. Maintenant, libre à vous de suivre mes conseils, ils sont gratuits mais non dénués de bon sens.
Je vous souhaite une bonne journée.
Cdlt
Bonjour à tous
Votre code fonctionne à merveille !
Merci beaucoup Frenchie83
Les tests ci-dessus me permettent de comprendre un peu mieux comment fonctionnent les macros.
Maintenant, je vais passer aux données réelles.
J'ai ajouté une 3ème feuille dans votre fichier excel
où je détail toute ma réflexion.
https://www.cjoint.com/c/EGDqnJQDwD4
Bonne journée à tous.
Cordialement
Votre code fonctionne à merveille !
Merci beaucoup Frenchie83
Les tests ci-dessus me permettent de comprendre un peu mieux comment fonctionnent les macros.
Maintenant, je vais passer aux données réelles.
J'ai ajouté une 3ème feuille dans votre fichier excel
où je détail toute ma réflexion.
https://www.cjoint.com/c/EGDqnJQDwD4
Bonne journée à tous.
Cordialement
Bonjour à tous,
J'ai ajouté le fichier source dans le 4ème onglet du fichier de Frenchie83, si vous voulez faire des vrais tests.
En ouvrant le fichier source qui est au format pdf,
je sélectionne tout et je copie tout sur une feuille excel.
(je fais toutes ces opérations "à la main")
Les positionnements des données sont identiques sur tous les fichiers testés.
Maintenant, je n'utilise plus les fichiers en txt car le copier coller depuis un pdf n'est pas identique.
https://www.cjoint.com/c/EGEo1UmzBx4
Je vous remercie beaucoup
Et bonne journée.
J'ai ajouté le fichier source dans le 4ème onglet du fichier de Frenchie83, si vous voulez faire des vrais tests.
En ouvrant le fichier source qui est au format pdf,
je sélectionne tout et je copie tout sur une feuille excel.
(je fais toutes ces opérations "à la main")
Les positionnements des données sont identiques sur tous les fichiers testés.
Maintenant, je n'utilise plus les fichiers en txt car le copier coller depuis un pdf n'est pas identique.
https://www.cjoint.com/c/EGEo1UmzBx4
Je vous remercie beaucoup
Et bonne journée.