Bonjour à tous
Contexte:
J'aimerais sur Excel concaténer plusieurs fichiers: c'est à dire avoir chaque fichier à la suite sur Excel.
Ces fichiers sont dans un répertoire et sont de type: JDB.000, JDB.001, JDB.002 etc...
Souhait:
Je voudrais donc en VBA avoir une boucle qui me permette de boucler les fichiers du répertoire (en se basant je pense sur l'incrémentation de l'extension 001,002,etc.. ): A chaque boucle dès qu'il y a un fichier, je l'importe sur Excel (c'est comme si c'est un fichier .csv en terme de manière d'import)
Travail réalisé auparavant:
J'ai un code qui marche mais qui est n'est pas assez automatisé. Il permet à l'utilisateur de choisir un fichier dans ce répertoire puis j'importe ce fichier, ensuite on pose la question à l'utilisateur pour savoir s'il veut en importer un autre etc...jusqu'a ce que l'utilisateur ne veut plus importer de fichier.... Le problème c'est que ça peut vite devenir long surtout si il faut importer 30 fichiers.. Voici le code malgré tout:
Voila donc le mode d'import est le même mais il me faut juste une technique me permettant de boucler tous les fichiers dans le répertoire et pour chaque fichier je le met sur Excel (à la suite des précédents importés)
Voila merci d'avance de m'aider pour réaliser cette tâche 😛
Contexte:
J'aimerais sur Excel concaténer plusieurs fichiers: c'est à dire avoir chaque fichier à la suite sur Excel.
Ces fichiers sont dans un répertoire et sont de type: JDB.000, JDB.001, JDB.002 etc...
Souhait:
Je voudrais donc en VBA avoir une boucle qui me permette de boucler les fichiers du répertoire (en se basant je pense sur l'incrémentation de l'extension 001,002,etc.. ): A chaque boucle dès qu'il y a un fichier, je l'importe sur Excel (c'est comme si c'est un fichier .csv en terme de manière d'import)
Travail réalisé auparavant:
J'ai un code qui marche mais qui est n'est pas assez automatisé. Il permet à l'utilisateur de choisir un fichier dans ce répertoire puis j'importe ce fichier, ensuite on pose la question à l'utilisateur pour savoir s'il veut en importer un autre etc...jusqu'a ce que l'utilisateur ne veut plus importer de fichier.... Le problème c'est que ça peut vite devenir long surtout si il faut importer 30 fichiers.. Voici le code malgré tout:
Code:
Sub import()
Dim nom_fichier As String
Dim compteur As Integer
compteur = 0
Do
'On regarde d'abord où se situe la limite dans la première feuille pour importer les données a la suite
Sheets(1).Select
Do
compteur = compteur + 1
Loop Until Cells(compteur, 1) = ""
ChDrive dir_csv: ChDir dir_csv 'dir_csv est la variable globale qui contient le chemin du répertoire où on se place à l'ouverture
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$" & compteur))
.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 'Tabulation
.TextFileSemicolonDelimiter = True 'Point virgule
.TextFileCommaDelimiter = False 'Virgule
.TextFileSpaceDelimiter = False 'espace
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End If
reponse = MsgBox("Do you want to concatenate another file with the same format ?", vbYesNo)
Loop Until reponse = vbNo
Voila donc le mode d'import est le même mais il me faut juste une technique me permettant de boucler tous les fichiers dans le répertoire et pour chaque fichier je le met sur Excel (à la suite des précédents importés)
Voila merci d'avance de m'aider pour réaliser cette tâche 😛