Sub Explorer(p_strFichier As String, p_strCheminDepart As String, Optional p_oFld As Scripting.Folder)
'Déclaration de la procédure
'p_strFichier : nom du fichier à rechercher
'p_strCheminDepart : chemin de départ de la recherche
'p_oFld : répertoire dans lequel la recherche est effectuée, optionnel
On Error GoTo err
'Gestion des erreurs avec une étiquette err
Dim oFSO As Scripting.FileSystemObject
Dim oFld As Scripting.Folder
Dim oFl As File
'Déclaration de variables pour le système de fichiers (FSO), le dossier et le fichier
If p_oFld Is Nothing Then
'Si p_oFld n'est pas spécifié, instanciation du FSO
Set oFSO = New Scripting.FileSystemObject
'Accède au répertoire de départ de la recherche
Set p_oFld = oFSO.GetFolder(p_strCheminDepart)
End If
'Recherche du fichier "CRT 2022 V2.xlsm" dans le répertoire p_oFld
Set oFl = p_oFld.Files("CRT 2022 V2.xlsm")
'Affiche le chemin du fichier dans une boîte de message
MsgBox oFl.Path
SubDir:
'Explore les sous-dossiers
For Each oFld In p_oFld.SubFolders
'Pour chaque sous-dossier, lance la procédure Explorer
Explorer p_strFichier, p_strCheminDepart, oFld
'Permet de mettre à jour les événements
DoEvents
Next oFld
fin:
'Sortie de la procédure
Exit Sub
err:
'Traitement des erreurs
Select Case err.Number
Case 53: 'Erreur 53 : fichier non trouvé
Resume SubDir
Case Else:
'Erreur inconnue
MsgBox "Erreur inconnue"
Resume fin
End Select
End Sub