Importer plusieurs fichiers à la suite sur Excel

richert90

XLDnaute Occasionnel
Bonjour à tous,

Contexte:

J'ai dans un répertoire des fichiers que je dois importer sur Excel. J'arrive à en importer un (avec VBA) en utilisant ce code (code issu de la macro pour importer des bases de type .csv, etc...):

Code:
Dim nom_fichier As String
    Dim nom_articles As String

    filetoopen = Application.GetOpenFilename("(*.*), *.*")  'FileToOpen contiendra le chemin du fichier qu'a choisi d'importer l'utilisateur
    'Filetoopen contient le chemin du fichier qu'on importe + son nom + son extension
    If filetoopen = False Then
        MsgBox ("You have not selected file") 'Dans le cas où il n'y a pas de fichier choisi.
        Exit Sub
    End If
        
    fichier_jdbprod = filetoopen 'chemin + nom + extension
    nom_fichier = Split(Mid$(filetoopen, InStrRev(filetoopen, "\") + 1), ".")(0)  'Nom du fichier sans son extension
        
    If filetoopen <> False Then
        With ActiveSheet.QueryTables.Add(Connection:= _
                "TEXT;" & filetoopen _
                , Destination:=Range("$A$1"))
                .FieldNames = True
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = True
                .RefreshOnFileOpen = False
                .RefreshStyle = xlInsertDeleteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 0
                .TextFilePromptOnRefresh = False
                .TextFilePlatform = 932
                .TextFileStartRow = 1
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileConsecutiveDelimiter = False
                .TextFileTabDelimiter = False
                .TextFileSemicolonDelimiter = True
                .TextFileCommaDelimiter = False
                .TextFileSpaceDelimiter = False
                .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
                .TextFileTrailingMinusNumbers = True
                .Refresh BackgroundQuery:=False
        End With
    End If
end sub

Problématique:

J'aimerais pouvoir concaténer plusieurs de ces fichiers sur Excel, c'est à dire, s'il dans mon repertoire j'ai 5 fichiers .csv alors mon code VBA va importer le premier fichier sur la feuille correspondante d'excel, puis A LA SUITE on ajoute les données du 2ieme fichier JDBPROD etc... jusqu'à ce qu'on ai importé tous les fichiers .csv sur Excel l'un en dessous de l'autre pour ne former qu'un seul tableau sur Excel en fait..

Voila, est-ce que quelqu'un sait comment je peux faire cela???

Merci d'avance
 

titiborregan5

XLDnaute Accro
Re : Importer plusieurs fichiers à la suite sur Excel

Bonjour Richert, le forum,

pas sûr d'avoir bien saisi mais ce que tu peux faire si tu n'arrives pas à les mettre directement à la suite, c'est de copier chaque fichier sur un onglet différent dans ton fichier de réception. A partir de là tu les copies tous à la suite sur un autre onglet que tu nommes récap et que tu mets en 1ère position.
Le code serait:
Code:
for i = 2 to sheets.count
sheets(i).range("a1").currentregion.copy sheets("récap").range("a1")
next

tu adaptes ton currentregion si tu ne veux pas des en-têtes...

Bon courage
 

richert90

XLDnaute Occasionnel
Re : Importer plusieurs fichiers à la suite sur Excel

Bonjour titiborregan5 et merci de ta réponse.

En fait je ne dois pas utiliser d'autres onglets car ils sont déjà utilisés pour d'autres traitements . L’idéal serait donc pour moi d'avoir les fichiers directement à la suite (d'un seul coup donc).
Avec le code que j'ai mis
Code:
filetoopen = Application.GetOpenFilename("(*.*), *.*")  'FileToOpen contiendra le chemin du fichier qu'a choisi d'importer l'utilisateur
    'Filetoopen contient le chemin du fichier qu'on importe + son nom + son extension
    If filetoopen = False Then
        MsgBox ("You have not selected file") 'Dans le cas où il n'y a pas de fichier choisi.
        Exit Sub
...... etc
    End If
Je peux choisir un fichier dans le répertoire puis quand il est choisi, la boîte de dialogue se ferme et l'import se fait normalement. Ce qu'il faudrait donc dans un premier temps c'est d'avoir une fonction VBA un peu comme
Code:
GetOpenFileName
mais qui me permette de choisir un nombre (que je veux) de fichiers à importer. Est-ce que ça existe un fonction telle quelle ?

Merci d'avance
 

titiborregan5

XLDnaute Accro
Re : Importer plusieurs fichiers à la suite sur Excel

Euh, tu lui fais ouvrir une boite de dialogue (inputbox) et tu tapes le résultat voulu...
Ce résultat tu le mets dans une boucle??

Code:
x=inputbox("combien de fichier")
for i= 1 to x
...
next

Pas sûr que ça marche mais bon...
 

richert90

XLDnaute Occasionnel
Re : Importer plusieurs fichiers à la suite sur Excel

Je vais essayer comme ça, je vais voir ce que ça donne.Merci

Du coup après si ça marche, chaque fichier sera importé mais à chaque fois il y aura l’étiquette de ligne (la 1ere) alors que je ne la voudrais que pour le premier import. Je peux à la fin de tous les imports, faire une boucle et voir si il y a cette ligne et la supprimer?
 

Discussions similaires

Statistiques des forums

Discussions
312 323
Messages
2 087 299
Membres
103 512
dernier inscrit
sisi235