Bonjour,
Appeler la procédure : recherche_nom_fichier.
Attention, la recherche peut être longue selon le dossier de départ choisi. Ci-dessous code :
Option Explicit
Sub recherche_nom_fichier()
Dim nom_fichier As String, nom_fichier_complet As String, répertoire As String
Dim Fso As Object, dossier_départ As Object
'// création objet FilesSystem
Set Fso = CreateObject("Scripting.FilesystemObject")
'// Choix du nom_fichier
nom_fichier = InputBox("Choisir le nom du fichier", "Recherche Fichier")
If nom_fichier = Empty Then MsgBox "nom fichier non choisi": Exit Sub
'// Choix du répertoire de départ
répertoire = Empty
choix_répertoire répertoire
If répertoire = Empty Then Exit Sub
'// recherche des fichiers
Set dossier_départ = Fso.GetFolder(répertoire)
nom_fichier_complet = Empty
rech_fichier Fso, dossier_départ, nom_fichier, nom_fichier_complet
If nom_fichier_complet = Empty Then MsgBox "fichier non trouvé" _
Else MsgBox nom_fichier_complet
'// libération objet FilesSystem
Set Fso = Nothing
End Sub
Sub choix_répertoire(répertoire As String)
Dim dossier As Object, item As Object
Set dossier = CreateObject("shell.application").BrowseForFolder(0, "Choisir votre répertoire de départ", 0, "Bureau")
If dossier Is Nothing Then MsgBox "aucun répertoire choisi": Exit Sub
For Each item In dossier.ParentFolder.items
If item.Name = dossier.Title Then répertoire = item.Path & "\": Exit For
Next item
End Sub
Sub rech_fichier(Fso As Object, dossier As Object, nom1 As String, nom2 As String)
Dim sous_dossier As Object, fichier As Object
Dim nom As String, extension_fichier As String
'// recherche fichiers
For Each fichier In dossier.Files
extension_fichier = Fso.GetExtensionName(fichier.Path)
If nom1 = fichier.Name Then nom2 = fichier.Path: Exit For
nom = Replace(fichier.Name, "." & extension_fichier, "") 'supprime l'extension du nom
If nom = nom1 Then
If MsgBox("Retenez-vous ce nom de fichier avec son extension ? " & fichier.Name, vbYesNo, "Question") = vbYes Then nom2 = fichier.Path: Exit For
End If
Next fichier
'// recherche sous-dossier
For Each sous_dossier In dossier.SubFolders
If nom2 <> Empty Then Exit For
If sous_dossier.Attributes <> vbDirectory + vbSystem + vbHidden Then rech_fichier Fso, sous_dossier, nom1, nom2
Next
End Sub