Importation de fichiers .txt

Imer2007

XLDnaute Occasionnel
Bonjour à tous,

On m'a récemment donné une mission à effectuer et je sens que je vais avoir besoin de vos lumières car je ne sais pas comment procéder.

J'ai plusieurs fichiers texte (.txt) que je dois importer dans un fichier Excel.
Les fichiers sont de la forme suivante:
cmr23-fmess-nok(date AAMMJJ).txt
fano-ddif(date AAMMJJ).txt (exemple fano-ddif080923.txt)
fdece(date AAMMJJ).txt
fdiff(date AAMMJJ).txt
finco(date AAMMJJ).txt
fliste(date AAMMJJ).txt
fratt(date AAMMJJ).txt
frejet(date AAMMJJ).txt
fs58rsi(date AAMMJJ).txt
spoc90(date AAMMJJ).txt

Ces fichiers arrivent quotidiennement dans un dossier de notre serveur, et contiennent chacun plusieurs lignes de données, chaque donnée étant séparée par des points virgules.

Le principe est que je souhaite importer via macro les données de ces fichiers
dans un fichier excel et qu'une fois le traitement effectué ces fichiers texte se déplacent dans un dossier (genre "tâches effectuées").

Pourriez-vous m'aiguiller ?

Merci d'avance !:)
 

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Je suis en train de réflechir pour les différentes étapes et je voulais savoir si c'était possible de le faire.

1- Extraction de la date du nom de fichier (exemple cmr23-fmess-nok010108.txt nous donne "010108"
2- On compare cette donnée à la colonne "date" de la feuille correspondante "cmr23-fmess-nok".
3- Si la date est vide, on éxecute la macro sinon on sort...

A priori, ca m'a l'air simple...
 

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Un exemple étant surement beaucoup plus parlant, merci à ceux qui voudront bien se pencher sur mon cas, parce que là je suis dépassé...
 

Pièces jointes

  • XL.zip
    16.2 KB · Affichages: 33
  • XL.zip
    16.2 KB · Affichages: 35
  • XL.zip
    16.2 KB · Affichages: 33

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Bonjour,

Je renvoie les 2 fichiers alors (le fichier excel et le fichier txt zippé). Merci encore pour ton aide.
 

Pièces jointes

  • extraction.xls
    48.5 KB · Affichages: 75
  • extraction.xls
    48.5 KB · Affichages: 76
  • extraction.xls
    48.5 KB · Affichages: 85
  • extraction.zip
    428 bytes · Affichages: 38
  • extraction.zip
    428 bytes · Affichages: 32
  • extraction.zip
    428 bytes · Affichages: 32

tototiti2008

XLDnaute Barbatruc
Re : Importation de fichiers .txt

Voilà une proposition :


Code:
Sub fdece()
    Dim SourceWkb As Workbook, NbLignes As Long, NbColonnes As Long, FS As FileSearch, DerColonne As Long
    DerColonne = ThisWorkbook.Worksheets("fdece").Range("IV1").End(xlToLeft).Column
    Set FS = Application.FileSearch
    With FS
        .LookIn = "C:\Documents and Settings\Desktop\XL\XL"
        .Filename = "fdece*.txt"
    End With
    If FS.Execute(msoSortByLastModified, msoSortOrderAscending) > 0 Then
        For i = 1 To FS.FoundFiles.Count
            If Application.WorksheetFunction.CountIf(ThisWorkbook.Worksheets("fdece").Range(ThisWorkbook.Worksheets("fdece").Cells(1, DerColonne), ThisWorkbook.Worksheets("fdece").Cells(65536, DerColonne)), CLng(Mid(FS.FoundFiles(i), Len(FS.FoundFiles(i)) - 9, 6))) = 0 Then
                Workbooks.OpenText Filename:=FS.FoundFiles(i), Origin:= _
                    xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
                    , ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, Comma:= _
                    False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1) _
                    , Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
                    Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15, 1), Array( _
                    16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1)), _
                    TrailingMinusNumbers:=True
                Set SourceWkb = ActiveWorkbook
                NbColonnes = SourceWkb.ActiveSheet.Range("IV1").End(xlToLeft).Column
                NbLignes = SourceWkb.ActiveSheet.Range("A65536").End(xlUp).Row
                With SourceWkb.ActiveSheet
                    .Range(.Cells(1, NbColonnes + 1), .Cells(NbLignes, NbColonnes + 1)).Value = Mid(FS.FoundFiles(i), Len(FS.FoundFiles(i)) - 9, 6)
                    .Range(.Cells(1, 1), .Cells(NbLignes, NbColonnes + 1)).Copy Destination:=ThisWorkbook.Worksheets("fdece").Range("A65536").End(xlUp).Offset(1, 0)
                End With
                SourceWkb.Close False
            End If
        Next i
    End If
End Sub

après on pourra envisager de boucler sur les différents noms de fichiers et feuilles du classeur
 
Dernière édition:

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Alors, j'ai fait le test et... ca marche !:) Sauf que...
Si je reclique sur mon bouton, ca me recopie les mêmes données à la suite.
En gros, je clique, ca me fait A, B, C (avec les dates correspondantes).
Mais si je reclique, ca me recopie A, B, C après... du coup je me retrouve avec A,B,C,A,B,C.
 

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Oh, ca ca pourrait m'etre utile alors !

Bon alors pour résumer, voilà les types de fichiers txt que j'ai:

La date est au format "AAMMJJ".
Chaque fichier texte va dans la feuille correspondante (exemple fcdece(date).txt vers la feuille "fdece").

- cmr23-fmess-nok(date).txt
- fano-ddif(date).txt
- fdece(date).txt
- fdiff(date).txt
- finco(date).txt
- fratt(date).txt
- frejet(date).txt
- fs58rsi(date).txt
- spoc90(date).txt

On peut boucler tout ca sur une macro ?
 

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Si j'importe d'un coup je me dis que ca va mettre la nuit des temps parce que j'ai 1285 fichiers txt en tout et certains comportent enormément de lignes.
Alors je me dis que la meilleure solution serait d'importer type par type (mais dans ce cas c'est une macro par type ?)
 

Statistiques des forums

Discussions
312 160
Messages
2 085 837
Membres
102 998
dernier inscrit
billABDELL