Bonjour à tous,
Contexte du problème:
J'ai un code VBA qui me permet d'importer des fichiers d'un répertoire sur Excel sous une certaine condition (par exemple dans mon cas, les noms de fichiers commencent par "JDBPRO". Le répertoire est composé de fichiers comme cela:
La structure est donc "JDBPRO" + numéro (01,02,..., 14)+ ".CSV". J'ai 14 fichiers ici mais je peux en avoir + ou -;
Problème:
Lors de l'import de ces fichiers sur Excel (à la suite), j’aimerais qu'ils soient importés dans l'ordre. D'habitude ça le fait correctement mais j'ai voulu importer des fichiers tout à l'heure et ça a commencé par importer JDBPRO11 puis JDBPRO05 et je ne sais pas pourquoi...
Voici le code utilisé pour importer les fichiers sur Excel:
Merci d'avance de votre aide,
Contexte du problème:
J'ai un code VBA qui me permet d'importer des fichiers d'un répertoire sur Excel sous une certaine condition (par exemple dans mon cas, les noms de fichiers commencent par "JDBPRO". Le répertoire est composé de fichiers comme cela:
HTML:
JDPRO01.CSV
JDBPRO02.CSV
JDBPO03.CSV
|
|
|
JDDPRO14.CSV
Problème:
Lors de l'import de ces fichiers sur Excel (à la suite), j’aimerais qu'ils soient importés dans l'ordre. D'habitude ça le fait correctement mais j'ai voulu importer des fichiers tout à l'heure et ça a commencé par importer JDBPRO11 puis JDBPRO05 et je ne sais pas pourquoi...
Voici le code utilisé pour importer les fichiers sur Excel:
Code:
Sub import()
Dim nom_fichier As String
Dim nom_articles As String
Dim compteur As Integer
Dim nb1 As Integer
Dim nb_donnees_importe As Integer
Dim nom_bpu As String
Dim nb_fichier As Integer
Dim parcours_groupe As Integer
Dim a As Integer
'Initialisation de certaines valeurs
nb_fichier = 0
compteur = 0
'On importe tous les fichiers du repertoire qui commencent par JDBPRO:
filetoopen = Dir(dir_csv & "\JDBPRO*.*") dir_csv contient le chemin du répertoire (variable globale déclarée dans un autre module)
Do While filetoopen <> "" 'Boucle sur les fichiers du repertoire
nb_fichier = nb_fichier + 1 'On incrémente la boucle du nb de fichiers importés.
'On regarde d'abord où se situe la limite dans la premiere feuille pour importer les données a la suite
Sheets(1).Select
Do
compteur = compteur + 1
Loop Until Cells(compteur, 3) = ""
fichier_jdbprod = filetoopen 'chemin + nom + extension
nom_fichier = Split(Mid$(filetoopen, InStrRev(filetoopen, "\") + 1), ".")(0) 'Nom du fichier sans son extension
filetoopen = dir_csv & "\" & filetoopen 'Ici on a le chemin fichier + nom + extension
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & filetoopen _
, Destination:=Range("$C$" & compteur)) 'On importe les données en colonne 3 et à la ligne '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)
.TextFileDecimalSeparator = "."
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
nb_donnees_importe = 0 'réinitialisation du compteur.
'On va compter le nombres de lignes déjà occupées:
Do
nb_donnees_importe = nb_donnees_importe + 1
Loop Until Cells(nb_donnees_importe, 3).Value = "" 'ici nb_donnees_importe donne le nb de donnees + 1 (derniere ligne vide)
nom_bpu = Right$(Split(fichier_jdbprod, ".")(0), 2) 'On ne garde que le numero (2 derniers numeros avant le point et l'extension)
For a = compteur To nb_donnees_importe - 1 'Pour toutes les nouvelles données qui viennent d'être importées:
Cells(a, 1).Value = nom_bpu 'On renseigne le nom de la BPU
Next a
'On passe au fichier suivant:
filetoopen = Dir
Loop 'Boucle les fichiers
End Sub
Merci d'avance de votre aide,