Option Explicit
'----------------------
'Saisie d'un répertoire
'----------------------
Sub SaisieRépertoire()
Dim Répertoire As String
Dim Réponse As Variant
'_______________________
'A partir de "Office XP"
If Val(Application.Version) >= 10 Then
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then
Répertoire = .SelectedItems(1)
Else
Répertoire = ""
End If
End With
'_________________
'Avant "Office XP"
Else
Réponse = Application.InputBox("Répertoire ?", Default:=ActiveWorkbook.Path & "\", Type:=2)
If VarType(Réponse) = vbBoolean Then Exit Sub
Répertoire = Réponse
End If
'Répertoire incorrect
If Len(Répertoire) = 0 Or Len(Dir(Répertoire, vbDirectory)) = 0 Then Exit Sub
Call ParcoursRépertoire(Répertoire)
End Sub
'------------------------
'Parcours d'un répertoire
'------------------------
Sub ParcoursRépertoire(Répertoire As String)
Dim oFSO As Object
Dim oDir As Object
'File System Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oDir = oFSO.getfolder(Répertoire)
Call ParcoursFichiersEtSousRépertoires(oDir)
End Sub
'-----------------------------------------
'Parcours des fichiers et sous-répertoires
'-----------------------------------------
Sub ParcoursFichiersEtSousRépertoires(oDir As Object)
Dim oSubDir As Object
Dim oFile As Object
'MsgBox oDir.Path
'Parcours des fichiers du [sous-]répertoire
For Each oFile In oDir.Files
Call TraiteFichier(oFile.Path)
Next oFile
'Parcours des sous-répertoires du [sous-]répertoire
For Each oSubDir In oDir.SubFolders
Call ParcoursSousRépertoires(oSubDir)
Next oSubDir
End Sub
'-----------------------
'Traitement d'un fichier
'-----------------------
Sub TraiteFichier(Fichier As String)
MsgBox "Traitement <" & Fichier & ">"
End Sub