XL 2019 VBA importer 1 à 1 des fichiers csv d'un repertoire pour lancer une macro

sive91

XLDnaute Junior
Bonjour,

Je dispose d'un fichier de traitement,
je cherche le moyen que pour chaque fichier csv d'un répertoire donné, il importe sont contenu dans la page commande dans les colonne A à E, afin que je puisse lancer mes macros de traitement).
 

Pièces jointes

  • Import.xlsm
    73.4 KB · Affichages: 22
Solution
Bonsoir à tous,
En reprenant le principe de @job75 , vous pouvez utiliser ce code adapté à votre demande:
VB:
Private Sub CommandButton1_Click()
Dim Fso As Object, Sourcefile As Object
Dim Rep As String, Fic As String
Dim Target As Range
Dim Tbl
    Rep = "Dossier des fichiers Csv"
    Fic = Dir(Rep)
    Set Fso = CreateObject("Scripting.FileSystemObject")
        Do While Fic <> ""
            ActiveSheet.Columns("A:E").Clear
            Set Target = ActiveSheet.[A1]
            Set Sourcefile = Fso.OpenTextFile(Rep & Fic, 1)
            Do While Not Sourcefile.AtEndOfStream
                Tbl = Split(Replace(Sourcefile.readline, """", ""), ";")
                Target.Resize(, UBound(Tbl) + 1) = Tbl
                Set Target =...

sive91

XLDnaute Junior
Bonsoir à tous,
En reprenant le principe de @job75 , vous pouvez utiliser ce code adapté à votre demande:
VB:
Private Sub CommandButton1_Click()
Dim Fso As Object, Sourcefile As Object
Dim Rep As String, Fic As String
Dim Target As Range
Dim Tbl
    Rep = "Dossier des fichiers Csv"
    Fic = Dir(Rep)
    Set Fso = CreateObject("Scripting.FileSystemObject")
        Do While Fic <> ""
            ActiveSheet.Columns("A:E").Clear
            Set Target = ActiveSheet.[A1]
            Set Sourcefile = Fso.OpenTextFile(Rep & Fic, 1)
            Do While Not Sourcefile.AtEndOfStream
                Tbl = Split(Replace(Sourcefile.readline, """", ""), ";")
                Target.Resize(, UBound(Tbl) + 1) = Tbl
                Set Target = Target.Offset(1)
            Loop
            Sourcefile.Close
            Set Sourcefile = Nothing
            ActiveSheet.Columns.AutoFit
            MsgBox Fic & vbLf & " A traiter"
                Stop ' ci_dessous tout le traitement à faire
                ......
            Fic = Dir
        Loop
    Set Fso = Nothing
End Sub
Merci, je n'avais pas vu ta réponse plutot, mais c'est parfait, je te remercie, et les autres aussi,

Petite question y a t'il un moyen qu'il n'essaie d'ouvrir que les fichier csv, car j'avais un fichier excel dans le repertoire, je te raconte pas ce qu'il m'a injecté ^^

Merci
 

sive91

XLDnaute Junior
Bonjour,

je viens de mettre le fichier sur un nouveau PC, étant à distance, mais j'ai une erreur que je ne rencontre pas sur mon PC si vous pouviez m'aider

l'erreur est Erreur d'execution 1004

VB:
                Tbl = Split(Replace(Sourcefile.readline, """", ""), ";")
                Target.Resize(, UBound(Tbl) + 1) = Tbl
                Set Target = Target.Offset(1)

L'erreur apparait sur cette ligne Target.Resize(, UBound(Tbl) + 1) = Tbl

Merci
 

fanch55

XLDnaute Barbatruc
Salut,
Il est probable que le ficher lu soit incorrect : vide ou ligne sans délimiteur = ";"
pour tester si l'attendu est correct avant de l'assigner à la ligne de la feuille :
VB:
If UBound(Tbl) > -1 Then

Exemple:
Code:
                    Do While Not Sourcefile.AtEndOfStream
                        Tbl = Split(Replace(Sourcefile.readline, """", ""), ";")
                        If UBound(Tbl) > -1 Then
                            Target.Resize(, UBound(Tbl) + 1) = Tbl
                            Set Target = Target.Offset(1)
                        Else
                            MsgBox "Importation incorrecte du fichier " & Fic, vbCritical + vbOKOnly
                            Stop
                        End If
                    Loop
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 184
dernier inscrit
Di Martino