Rassembler plusieur fichier txt en un seul.

julbute

XLDnaute Junior
Bonjour, je vais avoir besoin de votre aide.(Une fois de plus)
J'ai plusieurs fichiers dans le même répertoire au format texte, le nom du fichier correspond à la date.ils sont en fichier joint.
Voici ma problèmatique:
Ils ont tous le même format, mais il n'ont pas tous le même nombre de ligne.
L'entete est toujours la même.Il faudrait pouvoir ouvrir tout les fichiers, les importer sur une feuille excel en utilisant les séparateurs ",".La première ligne ne me sert à rien,elle doit etre eliminé.J'ai besoin de récupere sur chaque ligne le nom du fichier(qui correspond à la date) plus toutes les données de chaque ligne.J'ai besoin de traiter ces informations dans un tableau croisés dynamique.(cela je sais faire...) Ce qui fait que toutes les infos doivent etre sur la même feuille.

Voici mon idée.
- Créer un fichier "Total.xls" avec une feuille nomée "Récap".
- lancer une macro
- Compter le monbre de fichier dans le répertoire.
- créer une boucle avec le nombre de fichier
- ouvrir le premier fichier
- créer une feuille avec le nom du fichier comme nom de feuille.
- importer les données vers ce fichier.
- effacer la première ligne, je n'en a pas besoin.
- compter le nombre de ligne
- copier sur la feuille récap, dans la première colonne le nom de la feuille ( donc la date) et dans les cellules de la ligne le reste des données et ainsi de suite.
- effacer la feuille lorsque toutes les données ont été transféré.
- recommencer jusqu'au dernier fichier.

c'est trés certainement perfectible comme procedure...
J'ai environ 800 fichiers à traiter, ce qui explique mon envie d'automatiser cela...

Merci
Roger
 

Pièces jointes

  • fichier.ZIP.zip
    375 bytes · Affichages: 160

julbute

XLDnaute Junior
Re : Rassembler plusieur fichier txt en un seul.

Bonsoir,
un petit problème avec la macro.Elle fonctionne sur la version d'excel 2003.Mais elle génére une erreur sur la version 2007!
Ce n'est pas la première fois d'ailleurs que j'ai des problèmes avec 2007 à ce sujet sans savoir vraiment pourquoi.Se serait cette ligne là qui pose problème :
With Application.FileSearch


J'ai d'ailleurs parfois des soucis sur des versions d'excel 2007.Cela fonctionne sur un poste et pas sur l'autre...

Roger
 

julbute

XLDnaute Junior
Re : Rassembler plusieur fichier txt en un seul.

Bonjour,
c'est pas trés pratique cela, surtout pour ce qui ne sont pas tres pro dans le vba. Car je ne sais pas adapter le code...!!!
J'suis plutôt nul...
J'ai essayer de changer quelques ligne mais je séche une fois de plus...
Merci
Roger
 

Staple1600

XLDnaute Barbatruc
Re : Rassembler plusieur fichier txt en un seul.

Bonjour à tous


Cela devrait être compatible avec Excel 2007


Code:
Sub import_pro3()
Dim i As Long, a As Workbook, donnees As Range
Dim Dossier, oFSO, oFl
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dossier = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
If oFSO.FolderExists(Dossier) Then
For Each oFl In oFSO.GetFolder(Dossier).Files
If Split(oFl.Name, ".")(UBound(Split(oFl.Name, "."))) = "pro" Then
        Workbooks.OpenText Dossier & oFl.Name, _
        Origin:=xlWindows, StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False
        Set a = ActiveWorkbook
        Set donnees = a.Sheets(1).UsedRange
        With ThisWorkbook.Sheets("IMPORTATION")
            .[A65536].End(xlUp)(2) = oFl.Name
            donnees.Copy .[B65536].End(xlUp)(2)
        End With
        a.Close False
        Set a = Nothing
        Set donnees = Nothing
        Application.CutCopyMode = False
        End If
    Next oFl
End If
With ThisWorkbook.Worksheets("IMPORTATION")
    .Range([A1], [A65536].End(xlUp)).TextToColumns Range("A1"), xlDelimited, xlDoubleQuote, , , , , , True, ".", FieldInfo:=Array(Array(1, 5), Array(2, 9))
    .Rows(1).Delete
End With
Application.ScreenUpdating = True
End Sub
 

Discussions similaires