Concatener des fichiers .txt dans un fichier Excel

dolc

XLDnaute Nouveau
Bonjour à tous,

J'ai plusieurs fichier .txt (environ 200), tous nommés de la façon suivante : fiche-annuaire-"N° au hasard".txt

je souhaiterais concaténer tous sous fichiers sous un seul onglet Excel. Je n'ai pas de connaissance en VBA et les réponse que j'ai pu trouvé sur différent forum reste assez flou à mes yeux.

Vous trouverez en pj un exemple de fichier .txt et du type de fichier Excel que je souhaite avoir.

En vous remerciant d'avance
 

Pièces jointes

  • fiche-annuaire-82.txt
    773 bytes · Affichages: 80
  • fiche-annuaire-86.txt
    406 bytes · Affichages: 78
  • Bio.xls
    30 KB · Affichages: 81

Herdet

Nous a quitté
Repose en paix
Re : Concatener des fichiers .txt dans un fichier Excel

Bonjour,
Une solution simple et rapide avec QueryTables
Cordialement
Robert

--------- Procédure à copier dans un MODULE pas dans un code de feuille ------------------
Sub Recup_txt()
Dim Chemin, Fichier As String
ThisWorkbook.Activate
'chemin à adapter

Chemin = "C:\Users\J49272\Desktop\Bio"
Application.ScreenUpdating = False
' ATTENTION : copie dans feuille ACTIVE sinon Sheets("...").Range(...
Range("A:A").ClearContents

'Boucle sur les fichiers
Fichier = Dir(Chemin & "\*.txt")
j = 0
Do While Fichier <> ""
i = Cells(65536, 1).End(xlUp).Row
If i > 1 Then i = i + 1
'crée une requête sur le fichier texte et insère les champs
'dans la feuille "Feuil1" en partant de "A1"
ActiveSheet.QueryTables.Add("TEXT;" & Fichier, Cells(i, 1)).Refresh
Fichier = Dir
Loop
Application.ScreenUpdating = True
MsgBox "terminé"
End Sub
 

dolc

XLDnaute Nouveau
Re : Concatener des fichiers .txt dans un fichier Excel

Une autre petit question pensé vous qu'il serait possible de faire en sorte que les champs se placent sur une colonne différente à chaque fois (au lieux d'aller à la ligne) et que chaque feuilles txt soit représenté sur une seul ligne.

Voir Exemple

Merci encore
 

Pièces jointes

  • Bio-1.xls
    29.5 KB · Affichages: 75

Efgé

XLDnaute Barbatruc
Re : Concatener des fichiers .txt dans un fichier Excel

Bonjour dolc, Herdet,
Comme je m'attendais à ce genre de modification, j'ai préparé quelque chose qui passe déja à l'étape suivante:
Récupération des champs dans un tableau ordonné ,Nom de colonnes et une ligne par fichier.
Attention, les fichiers textes sont très diparates (nombre de champs différents, et types de lignes plus ou moins aléatoires....
Pour faire le test, entregistrer le classeur dans le dossier qui contient les fichiers textes.
Ensuite, on verra.....
Cordialement
EDIT je mets le fichier avec le résultat sur mes tests (plusieurs fois le même texte)
 

Pièces jointes

  • Bio(3).xls
    60.5 KB · Affichages: 95
Dernière édition:

dolc

XLDnaute Nouveau
Re : Concatener des fichiers .txt dans un fichier Excel

Bonjour Efgé,

Dsl pour ma réponse tardive, j'ai bien ouvert ton fichier, problème il me met une erreur d’exécution 9 qui provient de la ligne D(T(0)) = D(T(0)) & T(1) & ";" (voir ci dessous)

Si jamais je supprime celle ci cela a fonctionne à merveille sur les 15 premiers dossiers .txt ensuite seul la colonne commentaire est renseignée.



Option Explicit
Dim D As Object
Private Sub CommandButton1_Click()
Dim dossier As Object, Fichier As Object
Dim i&, J&, k&, L&, FileNumber&
Dim Texte$
Dim T, T2, Coupe_Texte, C

Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(ThisWorkbook.Path)
Set D = CreateObject("Scripting.Dictionary")
FileNumber = FreeFile

For Each Fichier In dossier.Files
If Fichier.Name Like "fiche-annuaire-*.txt" Then
i = i + 1
Open Fichier For Input As #FileNumber
Do Until EOF(FileNumber)
Line Input #FileNumber, Texte
If InStr(Texte, ";") > 0 And InStr(Texte, Chr(10)) > 0 Then
Coupe_Texte = Split(Texte, Chr(10))
For J = LBound(Coupe_Texte) To UBound(Coupe_Texte)
If Trim(Coupe_Texte(J)) <> "" Then
If Left(Coupe_Texte(J), 1) = ";" Then Coupe_Texte(J) = Right(Coupe_Texte(J), Len(Coupe_Texte(J)) - 1)
If Right(Coupe_Texte(J), 1) = ";" Then Coupe_Texte(J) = Left(Coupe_Texte(J), Len(Coupe_Texte(J)) - 1)
T = Split(Coupe_Texte(J), ";")
MiseàJour T(0), i
D(T(0)) = D(T(0)) & T(1) & ";"
End If
Next J
Else
MiseàJour "Commentaires", i
D("Commentaires") = D("Commentaires") & Texte & IIf(Right(Texte, 1) = Chr(10), "", Chr(10))
End If
Loop
For Each C In D.Keys
T2 = Split(D(C), ";")
If UBound(T2) < i Then D(C) = D(C) & ";"
Next C
End If
Close #FileNumber
Next Fichier
k = 0
Application.ScreenUpdating = False
ActiveSheet.UsedRange.ClearContents
Cells(1, 1).Resize(, D.Count) = D.Keys
For Each C In D.Keys
k = k + 1
T2 = Split(D(C), ";")
If C = "Commentaires" Then
For L = LBound(T2) To UBound(T2)
If T2(L) <> "" Then T2(L) = Left(T2(L), Len(T2(L)) - 1)
Next L
End If
Cells(2, k).Resize(UBound(T2), 1) = Application.Transpose(T2)
Next C
End Sub
Function MiseàJour(ByVal Var As String, ByVal Num As Long)
Dim k&
If Not D.exists(Var) Then
For k = 1 To Num - 1
D(Var) = D(Var) & ";"
Next k
End If
End Function
 

Efgé

XLDnaute Barbatruc
Re : Concatener des fichiers .txt dans un fichier Excel

Bonjour dolc
Tes fichiers textes ont des structures très différentes les unes des autres.
Je pense que ton 16em fichier possède une nouvelle mouture non présente dans les 15 premiers.
Peut tu joindre ce fameux 16em fichier?
Cordialement
 

dolc

XLDnaute Nouveau
Re : Concatener des fichiers .txt dans un fichier Excel

Voila le fichier qui fait apparemment sauté le code.

C'est vrai que tout les fichiers on des moutures différentes, sinon ne t’embête j'ai commencé à retravailler le fichier grâce au 1er code fourni par Herdet, en ne conservant que les champs désirés je devrait réussir à obtenir un truc sympa.

Merci encore
 

Pièces jointes

  • fiche-annuaire-21.txt
    790 bytes · Affichages: 54

Efgé

XLDnaute Barbatruc
Re : Concatener des fichiers .txt dans un fichier Excel

Bonjour dolc, le fil, le forum
Comme je suis tétu, un nouvel essai.
Lance le fichier joint après l'avoir copié dans le classeur des fichiers texte.
Il n'y aura pas de plantage, mais tu retrouvera la liste des fichier en erreur sur la feuille "Erreurs".
Copies ces fichiers dans un nouveau classeur, zip le (clic droit sur le classeur / envoyer vers / dossier compressé) et dépose le sur le forum.
Je voudrais savoir si il y a vraiment autant de format de données que de fichiers texte.
Je pense ne pas être loin du but....
A te relire.
Cordialement
 

Pièces jointes

  • Bio(4).xls
    64.5 KB · Affichages: 69

dolc

XLDnaute Nouveau
Re : Concatener des fichiers .txt dans un fichier Excel

Bonjour Efgé,

Encore une fois désolé de répondre si tardivement, mais j'étais en formation toute la semaine dernière.
J'ai essayé ton nouveau fichier et figure toi que celui ci fonctionne à merveille, en effet tous les fichiers .txt sont mis les un à la suite des autres sur la première feuille. Et aucun d'entre eux n'apparait dans la feuille erreur.

Tu avais donc raison tu n'étais pas loin du tout, tu était même en plein dedans ;)

Merci en tout cas
 

Discussions similaires

Réponses
11
Affichages
678

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i