Recupérer des données sur plusieurs fichiers txt

atoss77

XLDnaute Nouveau
Bonjour

Je voudrais savoir si c'est possible avoir une macro qui ne permets de récupérer des données de plusieurs fichiers texte sous excel.

Je peux avoir plus d'une centaine de fichiers texte

Je vous joint un exemple de fichiers texte et un modèle excel comme je donne le récupérer

Merci
 

Pièces jointes

  • Données.zip
    8.3 KB · Affichages: 30
  • Données.zip
    8.3 KB · Affichages: 26
  • Données.zip
    8.3 KB · Affichages: 25

camarchepas

XLDnaute Barbatruc
Re : Recupérer des données sur plusieurs fichiers txt

Bonjour ,

Voici le principe ,

Attention le chemin c:\temp est surement à adapter

tous les fichiers seront-ils dans le même dossier .

L'import ce fait en une fois , ou l'on recommence à plusieur reprise , tous les jours par exemple en mettant à la suite ou pas ?

Code:
Sub importe()
Dim TextLine As String
Dim Ligne As Long, Colonne As Long
Open "c:\temp\2482.txt" For Input As #1
Ligne = Ligne + 1
Colonne = 0
Do While Not EOF(1)
   
    Line Input #1, TextLine
    Range("A1").Offset(Ligne, Colonne) = Split(TextLine, "=")(1)
    Colonne = Colonne + 1
Loop
Close #1
End Sub
 

camarchepas

XLDnaute Barbatruc
Re : Recupérer des données sur plusieurs fichiers txt

Voici ,

en supposant que les fichiers sont toujours dans le même dossier
et que les fichiers traité au paravent ne soit plus présent dans ce dossier

Bonjour Pierre Jean , les chemins ce croisent

Code:
Sub importe()
 Dim TextLine As String
 Dim Ligne As Long, Colonne As Long
 Dim Fichier As String, Chemin As String
 
 Chemin = "c:\temp\"
 Fichier = Dir(Chemin & "*.txt")
 
 Do
  Open Chemin & Fichier For Input As #1
  Ligne = Range("A" & Rows.Count).End(xlUp).Row
  Colonne = 0
  
  Do While Not EOF(1)
    Line Input #1, TextLine
    Range("A1").Offset(Ligne, Colonne) = Split(TextLine, "=")(1)
    Colonne = Colonne + 1
  Loop
  Close #1
 Fichier = Dir
 Loop Until Fichier = ""
 End Sub
 

atoss77

XLDnaute Nouveau
Re : Recupérer des données sur plusieurs fichiers txt

Merci a tous les 2

Mais ja'i oublié des colonnes dans mon fichier excel

Si vous voudrais aussi contrôler si Q01 va bien dans colonne Q01, Q02 va bien dans colonne Q02 Q23 va dans colonne Q23 etc....
et si en lassant vide les Q qui ne sont pas dans le fichier texte
 

Pièces jointes

  • données.xls
    52.5 KB · Affichages: 34
  • données.xls
    52.5 KB · Affichages: 26
  • données.xls
    52.5 KB · Affichages: 23

pierrejean

XLDnaute Barbatruc
Re : Recupérer des données sur plusieurs fichiers txt

Re

Teste cette version qui devrait fonctionner même si la ligne 1 de la Feuil2 n'est complete
 

Pièces jointes

  • données.xls
    41 KB · Affichages: 46
  • données.xls
    41 KB · Affichages: 45
  • données.xls
    41 KB · Affichages: 37
Dernière édition:

atoss77

XLDnaute Nouveau
Re : Recupérer des données sur plusieurs fichiers txt

Bonsoir

Je tenais a vous remercier.

Mais ca me fonctionne pas

je vous joins un fichier excel avec la macro et des fichiers txt

merci
 

Pièces jointes

  • MERCI.zip
    17.6 KB · Affichages: 24
  • MERCI.zip
    17.6 KB · Affichages: 22
  • MERCI.zip
    17.6 KB · Affichages: 26

Staple1600

XLDnaute Barbatruc
Re : Recupérer des données sur plusieurs fichiers txt

Bonsoir à tous

EDITION: Bonsoir camarchepas
Tu as mis le Ligne=Ligne+1 au même endroit que moi ?
Pas le temps de télécharger ta PJ ce soir, je suis déjà en pyjama et j'ai presqu'un pied sous la couette ;)

Mes nocturnes salutations à l'ami pierrejean également ;)


Cela semble fonctionner avec ces modifs, non ?
Code:
Sub donneesBIS()
Dim Chemin$, Ligne&, f As Workbook, c As Range, tablo, x, n As Byte
Application.ScreenUpdating = False
Chemin = ThisWorkbook.Path & "\"
Set fic_donnees = ThisWorkbook
'fic_donnees.Sheets(2).Rows("2:" & Rows.Count).ClearContents
Ligne = 2
Fichier = Dir(Chemin & "*.txt")
While Fichier <> ""
    Workbooks.Open (Chemin & Fichier)
    Set f = ActiveWorkbook
    tablo = f.ActiveSheet.Range("A1:A" & f.ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row)
        For n = LBound(tablo, 1) To UBound(tablo, 1)
        x = Split(tablo(n, 1), "=")
        Set c = fic_donnees.Sheets("Feuil2").Rows(1).Find(CStr(x(0)), LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
        fic_donnees.Sheets("Feuil2").Cells(Ligne, c.Column) = x(1)
        End If
        Next
    f.Close
    Ligne = Ligne + 1
    Fichier = Dir
Wend
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : Recupérer des données sur plusieurs fichiers txt

Voici,
@ Merci PierreJean, : Toujours intéressant de trouver les erreurs éducatives du maitre .
@ Oups : Bonsoir Staple : je vois que tu as également résolu cette mystérieuse egnigme ...

Donc testé avec tes fichiers ,
ca fonctionne bien maintenant , reste à expertiser les données .
Bon comme analyse sétait pas top " ca fonctionne pas " .

en fait en regardant le message d'erreur , l'on comprenais que le programme ne trouvait pas le fichier et oui le nom ok , mais pas le chemin .
Voilà , aprés cette première egnigme ,
un autre défi apparait , et oui .......

Pour 3 fichier , une seule ligne ....
Bon coup de fil à un ami : Merlin l'enchanteur . et hop ,
la variable ligne n'évolue pas , peut être du à la gréve d'Air France , Que nehni .
lil faut trouver la ligne servant à incrementer la ligne ???

Mais la , chou blanc , pas d'incrémentation ,
donc 1+ ligne donnant la ligne suivant ,
Mais bon sang , mais c'est bien sûr ........

il suffisait de l'incorporer au bon endroit dans la boucle ....

Et magie de la pensée Esteinnienne, l'oeuvre De PierreJean ainsi restaurée joue à nouveau sa douce mélopé ...

Et voilà , que d'heures de travail ainsi économisées ......

A bientot pour de nouvelles enquêtes .......
 

Pièces jointes

  • données_Synth.xls
    53 KB · Affichages: 56

Discussions similaires