VBA Ouvrir dossier dans ordre alphabétique
S
Bonjour à tous,
je fais face à un souci que je ne parviens pas à résoudre dans un code VBA bien que ce ne soit à mon avis, pas très compliqué. Mon code me permet d'ouvrir des fichiers dans un répertoire, et j'aimerais qu'il ouvre ses fichiers dans l'ordre alphabétique. J'ai le code suivant qui fonctionne mais qui n'ouvre pas les dossiers dans l'ordre alphabétique:
Dim i As Long
Sub Consolider_Simu3()
Dim S_Commande As Worksheet
Dim Chemin As String
Dim Extension As String
Set S_Commande = ThisWorkbook.Sheets("Commande")
Chemin = S_Commande.Cells(3, 2).Value
Extension = S_Commande.Cells(4, 2).Value
i = 6
Nb = BoucleFichiers(Chemin, Extension)
End Sub
Function BoucleFichiers(Chemin As String, Extension As String) As Integer
Dim Fso As Object
Dim Dossier As Object
Dim Fichier As Object
Dim WB_TargetFichier As Workbook
Dim TargetSheet As Worksheet
Dim MainSheet As Worksheet
Set Fso = CreateObject("Scripting.FileSystemObject")
Set MainSheet = ThisWorkbook.Sheets("Simulations")
BoucleFichiers = 0
For Each Dossier In Fso.GetFolder(Chemin).SubFolders
For Each Fichier In Dossier.Files
If Left(Fichier.Name, 11) = "SIMULATION_" Then
Set WB_TargetFichier = Workbooks.Open(Dossier & "\" & Fichier.Name)
Set TargetSheet = WB_TargetFichier.Sheets("SIMULATION")
TargetSheet.Range("F6:G13").Select
Selection.Copy
MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteValues
MainSheet.Range("D" & i).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
i = i + 22
BoucleFichiers = BoucleFichiers + 1
WB_TargetFichier.Close savechanges:=False
End If
Next Fichier
Next Dossier
End FunctionJ'ai essayé d'utiliser un début de solution que SabV (membre du forum) m'a proposé mais je ne suis pas parvenu à inclure sa solution dans mon code.. La solution qu'il m'a proposé est la suivante:
Dim AL1 As Object
Set AL1 = CreateObject("System.Collections.ArrayList")
'................
For Each Fichier In Dossier.files
AL1.Add Range(Fichier)
Next
AL1.Sort 'tri par ordre alpha
r = AL1.Toarray()
For i = LBound(r) To UBound(r)
If Left(Fichier.Name, 11) = "SIMULATION_" Then
'................Quelqu'un pourrait-il m'aider ? Merci d'avance !
SkillzZ