Recherche de fichiers

Il peut être fort pratique d'utiliser la méthode FileSearch pour trouver tel ou tel fichier, ou qu'il soit sur votre ordinateur. Comme par exemple trouver tous les fichiers qui contiennent le mot Budget dans leur nom, et qui se trouvent un peu partout sur votre PC.

Tout se passe dans Application.FileSearch.

Exemple :

Sub Recherche()
  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 = "D:\atelier;C:\Toto"
Fichiers à rechercher (J'ai essayé plusieurs formes "a*.php;C*.*" mais ça ne marche pas: 
.FileName = "*.*" recherche tous les fichiers
.FileName = "C.php" recherche tous les fichiers qui contiennent c ou C quelque par dans leur nom, et qui se terminent par .php ou .PHP
    .Filename = "a*.php;C*.*"
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
Tous les fichiers créés ou modifiés cette semaine :
    .LastModified = msoLastModifiedThisWeek
On va rechercher dans les sous dossiers d'atelier et Toto :
    .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)
    For Ctr = 1 To .FoundFiles.Count
      Cells(Ctr, 1) = .FoundFiles(Ctr)
    Next
  End With
End Sub

---