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 !:)
 

tototiti2008

XLDnaute Barbatruc
Re : Importation de fichiers .txt

Bonjour Imer2007,

le mieux est sans doute de commencer par enregistrer une macro, d'ouvrir un fichier texte dans Excel et de voir comment il l'écrit dans la macro (OpenText).
Après, on pourra adapter le code résultant en fonction de tes besoins.
 

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Bonjour Tototiti2008,

J'ai suivi tes conseils et ouvert un fichier en créant la macro pour un des fichiers texte.

Voilà ce que j'obtiens :

Code:
Sub texte()
    Workbooks.OpenText Filename:="[COLOR="Red"]Z:\cmr23-fmess-nok061110.txt[/COLOR]", 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
End Sub

Le truc, c'est qu'il prend le nom complet du fichier (cmr23-fmess-nok061110.txt), or dans mon dossier j'ai plusieurs de ces fichiers (exemple : cmr23-fmess-nok061116.txt, cmr23-fmess-nok070506.txt, etc.)

Je pense qu'il faudrait créer plusieurs boucles, une sur l'année, puis sur le mois, puis sur le jour, mais là je sèche...
 

tototiti2008

XLDnaute Barbatruc
Re : Importation de fichiers .txt

Bon, on pourra s'en sortir avec un FileSearch (recherche de fichiers) mais je crois que le plus urgent est d'abord de savoir ce que tu veux faire avec ce fichier une fois qu'il est ouvert. Je suppose que tu ne veux pas seulement l'ouvrir ?
donc on fait le code pour 1 fichier, puis on l'adapte pour tous les fichiers du même type de nom du dossier.
 

Imer2007

XLDnaute Occasionnel
Re : Importation de fichiers .txt

Mon but, c'est uniquement d'importer les données de ces fichiers texte.
Une fois les données traitées (ce n'est pas de mon ressort), le fichier txt correspondant est déplacé (ou copié si c'est plus simple dans un dossier différent.
 

tototiti2008

XLDnaute Barbatruc
Re : Importation de fichiers .txt

à tester dans le classeur qui contiendra toutes les données :

dis-moi si ça plante et où

je suis parti du principe que tes fichiers textes contiennent une ligne de titre avec les noms de champs.

Code:
Sub texte()
    Dim SourceWkb As Workbook, NbLignes As Long, NbColonnes As Long
    Set SourceWkb = Workbooks.OpenText(Filename:="Z:\cmr23-fmess-nok061110.txt", 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)
    NbColonnes = SourceWkb.ActiveSheet.Range("IV1").End(xlToLeft).Column
    NbLignes = SourceWkb.ActiveSheet.Range("A65536").End(xlUp).Row
    With SourceWkb.ActiveSheet
        .Range(.Cells(2, 1), .Cells(NbLignes, NbColonnes)).Copy Destination:=ThisWorkbook.Worksheets("cmr23-fmess-nok").Range("A65536").End(xlUp).[COLOR=red]offset(1, 0)[/COLOR]
    End With
    SourceWkb.Close False
End Sub

Edit : j'avais fait une faute de frappe (en rouge)
 
Dernière édition:

Statistiques des forums

Discussions
312 169
Messages
2 085 911
Membres
103 033
dernier inscrit
thazet