Rechercher un fichier en connaissant son nom et son extension

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

richert90

XLDnaute Occasionnel
Bonjour à tous
Voila ma question:

Comment je peux faire pour qu'à partir du nom d'un fichier et son extension (exemple "test.xlsm") le rechercher sur l'ordinateur (dans tous les répertoires) pour pouvoir récupérer à la fin son chemin complet ? (ex je récupère dans une variable le chemin du répertoire où se situe le fichier cherché: "C:\Mes doc\moi\test.xlsm")

Merci d'avance
 
Re : Rechercher un fichier en connaissant son nom et son extension

Salut

J'avais fait /adapté une macro pour cela: regarde le code ci dessous, si ca peut t'aider

Code:
Attribute VB_Name = "mChercheFichier"
Sub Recherche(RepertoireCible)
    
    With Application.FileSearch
    
'd'abord rÚinitialiser les critÞres (Attention : Le LookIn ne se rÚinitialise pas comme þa)
    .NewSearch

'Pour mettre Ó jour la liste des dossiers, au cas ou on viendrait de crÚer un nouveau dossier par VBA :
    .RefreshScopes

' Dossier(s) de recherche :
    .LookIn = RepertoireCible
    
' Fichiers Ó rechercher
    .Filename = "userContent.css"

'Le type de fichiers qu'on recherche. Ici, tous, et de toute faþon, on a dÚjÓ filtrÚ avec .FileName.
'Mais on peut par exemple indiquer msoFileTypeExcelWorkbooks qui va extraire tous les fichiers Excel
'(XLA, XLT, XLS, XLW)
    .FileType = msoFileTypeAllFiles

' On va rechercher dans les sous dossiers de RepertoireCible :
    .SearchSubFolders = True
    
' c'est parti :
    .Execute

' Une boucle traditionnelle pour parcourir les fichiers trouvÚs.
' FoundFiles(Ctr) n'a pas de propriÚtÚs.
' Par exemple, pas question d'avoir le nom du fichier sans le dossier, ou mÛme sa date de crÚation
' (en tout cas par la mÚthode FoundFiles)
If (.FoundFiles.Count <> 0) Then
    For Ctr = 1 To .FoundFiles.Count
      Cells(Ctr, 1) = .FoundFiles(Ctr)
    Next
Else: Cells(1, 1) = ""
End If

  
    End With
End Sub
 
Re : Rechercher un fichier en connaissant son nom et son extension

Bonjour,

Merci de votre réponse.
J'ai adapté ce code et je l'ai tester sauf que j'ai une erreur d'exécution '445' pour la ligne:
Code:
  With Application.FileSearch
'Cet objet ne gère pas cette action.
Comment résoudre ce problème?

Merci d'avance pour vos réponses.
 
Re : Rechercher un fichier en connaissant son nom et son extension

Ah ouai ça m'arrange pas tout ça
Surtout que je dois donner le fichier à quelqu'un et donc ca sera à lui de faire tout ce chemin pour activer les FileSearch... ça craint du boudin

Il y aurait pas d'autres moyen pour parcourir les répertoires du coup? 😛
 
Re : Rechercher un fichier en connaissant son nom et son extension

Cela peut etre ????? 😎




Public ListeDoss() As String

Sub ChercheDoss(Chemin1 As String)
Dim Ligne As Long, Nom As String
Ligne = Range("A65536").End(xlUp).Row + 1
On Error GoTo Err1
Nom = Dir(Chemin1 & "\*" & Range("Texte").Value & "*" & Range("Ext").Value)
If Nom <> "" Then
Cells(Ligne, 1).Value = Nom
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(Ligne, 2), Address:=Chemin1 & "\" & Nom, TextToDisplay:=Nom
Do
Ligne = Range("A65536").End(xlUp).Row + 1
Nom = Dir
If Nom <> "" Then
Cells(Ligne, 1).Value = Nom
ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(Ligne, 2), Address:=Chemin1 & "\" & Nom, TextToDisplay:=Nom
End If
Loop Until Nom = ""
End If
Err1:

End Sub

Sub ChercheTout()
Dim Chemin As String, i As Long
Range("A7:C65536").Clear
Chemin = Range("Doss").Value
LanceListe Chemin
For i = 1 To UBound(ListeDoss)
ChercheDoss ListeDoss(i)
Next i
End Sub

Sub ListeArborescence(Dossier As String)
Dim fs, sousdoss
Set fs = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
For Each sousdoss In fs.getfolder(Dossier).subfolders
ReDim Preserve ListeDoss(1 To UBound(ListeDoss) + 1)
ListeDoss(UBound(ListeDoss)) = sousdoss.Path
ListeArborescence sousdoss.Path
Next sousdoss
On Error GoTo 0
Set fs = Nothing
End Sub

Sub LanceListe(Dossier As String)
ReDim ListeDoss(1 To 1)
ListeDoss(1) = Dossier
ListeArborescence Dossier
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour