Concaténation de plusieurs fichiers txt
q
Bonjour,
je souhaiterais créer un code VBA afin de concaténer 3 fichiers *.txt dans un fichier final "résultats.txt",
l'ordre de concaténation est indiqué dans une colonne excel à part (suite_conca.xlsx => A1:A10)
Je n'arrive pas à trouver une syntaxe qui marche ! j'ai tenté ci-dessous sans sucées
Sub conca_fichier_txt()
Dim Chemin As String
Dim DerniereLigne As Long 'Index de la dernière ligne
Dim Ligne As Long
Chemin = "C:\fichiers\"
DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row
'lire l'ordre de concaténation des fichiers
For suite = 1 To 10
id_fichier = 'identifier le fichier choisi
Next suite
'Ecrit dans le fichier txt
For i = 1 To 3
Ligne = 1
Do While Ligne <= DerniereLigne
Open Chemin & "Résultat.txt" For Append As #Ligne
Print #Ligne, Tableau(Ligne) & vbCrLf
Close
Ligne = Ligne + 1
Loop
Next i
MsgBox ("concaténation terminée")
End Sub
merci d'avance pour votre aide
T
Bonjour,
Voici une piste. Attention, les cellules de la plage doivent contenir le nom des différents fichiers texte si ce n'est pas le cas, donne des précisions où trouver ces noms de fichiers :
Sub conca_fichier_txt()
Dim Plage As Range
Dim Cel As Range
Dim CheminSource As String
Dim CheminDest As String
Dim Chaine As String
Dim FichierResultat As String
'ici, le dossier est le même mais il suffit d'adapter
'si on veut enregistrer le fichier "Résultat.trxt" dans un autre dossier
CheminSource = "C:\fichiers\"
CheminDest = "C:\fichiers\"
'nom du fichier
FichierResultat = "Résultat.txt"
'défini la plage en colonne A sur la feuille "Feuil1" à partir de A1 (adapter...)
With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
'ouvre le fichier texte qui va recevoir les valeurs (si il n'existe pas, il sera créé !)
Open CheminDest & FichierResultat For Append As #1
'parcour la plage (attention, les cellules de la plage contiennent le nom des différents fichiersà récupérer)...
For Each Cel In Plage
'ouvre les fichiers les uns après les autres et récupère leur contenu en une seule fois...
Open CheminSource & Cel.Value For Binary As #2
Chaine = Space(LOF(2))
Get #2, , Chaine
'puis les inscrit dans le fichier de destination
Print #1, Chaine
Close #2
Next Cel
Close #1
MsgBox "concaténation terminée !"
End Sub
q