concatener fichier txt et afficher nom de fichier avec excel

taybell22

XLDnaute Nouveau
Bonjour,

Un problème pour lequel je n'ai pas de solution. Après plusieurs recherche, je suis bloqué.

J'ai un dossier avec 1900 fichiers txt chacun renfermant des informations propres à un produit.
Le numéro de ce dernier ne se trouve que dans le nom du fichier.
Ce que je cherche à obtenir, c'est concaténer les contenus de tous les fichiers txt dans excel (2003 de préférence sinon 2007), en affichant dans une première colonne le nom du fichier approprié (avec ou sans extension)


EX :

Fichier nommé PDT1.txt
Contenu :

d1 M2 M2,5 M3
e 5 6,3 7
s 4 5 5,5
m 1,2 1,6 1,8


et fichier PDT2.txt

d1 M2 M2,5 M3 M4
e 8 6 4 7
s 4 5 5,5 9
m 1,2 1,6 1,8 12


résultat :

PDT1.txt d1 M2 M2,5 M3
PDT1.txt e 5 6,3 7
PDT1.txt s 4 5 5,5
PDT1.txt m 1,2 1,6 1,8

PDT2.txt d1 M2 M2,5 M3 M4
PDT2.txt e 8 6 4 7
PDT2.txt s 4 5 5,5 9
PDT2.txt m 1,2 1,6 1,8 12


Précision :
les informations dans les fichiers txt sont séparées par des tabulations.

Merci beaucoup pour votre aide
 

JNP

XLDnaute Barbatruc
Re : concatener fichier txt et afficher nom de fichier avec excel

Bonsoir T'es Belle 22 :),
Code:
Sub Test()
Dim fd As FileDialog, Feuille As Worksheet, Chemin As String, Tablo
Dim Dossier As Object, Fichier As Object, InputData, I As Double
Dim vrtSelectedItem As Variant
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
    If .Show = -1 Then
        Chemin = .SelectedItems(1)
    Else
        Exit Sub
    End If
End With
Set fd = Nothing
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
I = 1
Application.ScreenUpdating = False
For Each Fichier In Dossier.Files
    Open Fichier.Path For Input As #1
    Do While Not EOF(1)
        Line Input #1, InputData
        Range("A" & I) = Fichier.Name
        Range("B" & I & ":" & Chr(UBound(Split(InputData, Chr(9))) + 66) & I).Value = Split(InputData, Chr(9))
        I = I + 1
    Loop
    Close #1
Next Fichier
Application.ScreenUpdating = True
End Sub
Testé sous 2007, pas sous 2003, mais ça devrait aussi le faire :rolleyes:...
Bises et bonne soirée :cool:
 
Dernière édition:

taybell22

XLDnaute Nouveau
Re : concatener fichier txt et afficher nom de fichier avec excel

Bonsoir et merci pour ta réponse JNP.

Je teste avec Excel 2007, je bloque au niveau de la première 1ère boîte de dialogue qui n'affiche pas les fichiers txt à sélectionner et qui n'offre pas la possibilité de choisir le format recherché.

Merci

Pour info, le pseudo est un hasard, ça serait pas très modeste de ma part :)
 

JNP

XLDnaute Barbatruc
Re : concatener fichier txt et afficher nom de fichier avec excel

Re :),
Je teste avec Excel 2007, je bloque au niveau de la première 1ère boîte de dialogue qui n'affiche pas les fichiers txt à sélectionner et qui n'offre pas la possibilité de choisir le format recherché.

J'ai un dossier avec 1900 fichiers txt chacun renfermant des informations propres à un produit.
La macro fait exactement ce qui est demandé, tu choisi le dossier dans la boite de dialogue le dossier à traiter et elle traite tous les fichiers contenus dans ce dossier :rolleyes:...
Sélectionner à la main 1900 fichier, ça parait complètement abérant :eek: !
De plus, je ne suis pas sûr que la boite de dialogue fichier supportera une sélection aussi importante :eek:...
Pour moi, le plus simple est de regrouper les fichiers qui t'intéressent dans un dossier, et rien d'autre dedans et de lancer la macro :p...
En ce qui concerne choisir le fichier, tu peux mettre un test pour vérifier si c'est du TXT :
Code:
For Each Fichier In Dossier.Files
    If Fichier.Name Like "*.txt" Then
        Open Fichier.Path For Input As #1
        Do While Not EOF(1)
            Line Input #1, InputData
            Range("A" & I) = Fichier.Name
            Range("B" & I & ":" & Chr(UBound(Split(InputData, Chr(9))) + 66) & I).Value = Split(InputData, Chr(9))
            I = I + 1
        Loop
    End If
    Close #1
Next Fichier
En ce qui concerne choisir autre chose, en dehors du CSV, tu auras beaucoup de surprises, vu qu'il y aura des signatures du type de fichier :(...
Si tu veux vraiment sélectionner des fichiers, regarde dans l'aide à msoFileDialogFilePicker, il suffira de décrire ta sélection au lieu de parcourir tous les fichiers d'un dossier, mais personnellement, j'éviterais sur une aussi grande quantité de fichiers :rolleyes:...
Bises et bon courage :cool:
 

taybell22

XLDnaute Nouveau
Re : concatener fichier txt et afficher nom de fichier avec excel

Bonjour JNP et merci !

Désolée de ne pas avoir répondu plus tôt, quelques impondérables.
Pour la première remarque dans mon dernier mail, c'est ok, il suffit juste que je retape le nom du dossier souhaité dans la zone
"nom de fichier" pour qu'il lance la macro, qui s'arrête car pour certains fichiers ça bloque et ça affiche le message d'erreur suivant :

Erreur d'exécution '1004':
Erreur définie par l'application ou par l'objet

La raison ? je ne vois pas, en tous cas pas dans le contenu des fichiers. L'encodage (txt, utf8) ? ça marche quand même pour certains ? Je bloque.
 

JNP

XLDnaute Barbatruc
Re : concatener fichier txt et afficher nom de fichier avec excel

Re :),
Désolé pour ma réponse tardive, mais j'ai explosé ma carte mère, donc je suis en train de réinstaller ma nouvelle unité :eek:...
De base, il faudrait voir quelle est la ligne qui bloque en débogage, mais il y a de fortes chances que ce soit sur des fichiers qui ne sont pas construits comme prévu... :p
Difficile d'aller plus loin sans fichiers tests :rolleyes:...
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 231
Membres
103 497
dernier inscrit
JP9231