voilà ce source est une réponse à un message posté sur le forum.....il est vrai que cela peut etre utile d'une façon ou d'un à beaucoup d'entre nous donc voilà le principe en utilisant la réccurcivité.....je me doute que ce type de source existe déjà mais bon...si quelqu'un ne l'a pas trouvé, pourquoi ne pas le reposter....et puis plus on a d'exemples plus on a de choix LOL
Source / Exemple :
'utilisation des API FindFirstFile , FindNextFile etc........en récurcif.....
'--------------------------------------------------------
'---La fonction Rechercher : ---
'--- Cette fonction recherche tous les fichiers dans ---
'--- le répertoire spécifié et ses sous-repertoires ---
'--- Elle retourne le nombre d'occurences trouvées ---
'--------------------------------------------------------
Public Function Rechercher(Chemin As String, FichierR As String, ResultatRecherche As ListeFichier) As Long
'---Déclaration des variables---
Dim lpFindFileData As WIN32_FIND_DATA
Dim hFindFile As Long
Dim lgRep As Long
Dim CheminRep As String
'---Recherche tous les fichiers demandés dans le répertoire Chemin---
lpFindFileData.dwFileAttributes = &H10
Dim FicTmp As String
'---récupération du premier fichier du répertoire
hFindFile = FindFirstFile(Chemin & FichierR, lpFindFileData)
If hFindFile <> INVALID_HANDLE_VALUE Then
Do
'---on récupère le nom du fichier
FicTmp = Mid$(lpFindFileData.cFileName, 1, InStr(lpFindFileData.cFileName, Chr$(0)) - 1)
If FicTmp <> ".." And FicTmp <> "." And (lpFindFileData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = 0 Then
'---si on tombe sur un fichier , on mémorise le nom du du fichier dans un tableau
'---ainsi que le répertoire ou il se situe
ResultatRecherche.Nombre = ResultatRecherche.Nombre + 1 '---un fichier ajouté
ReDim Preserve ResultatRecherche.Chemin(1 To ResultatRecherche.Nombre)
ReDim Preserve ResultatRecherche.Fichiers(1 To ResultatRecherche.Nombre)
ResultatRecherche.Chemin(ResultatRecherche.Nombre) = Chemin '---chemin du fichier
ResultatRecherche.Fichiers(ResultatRecherche.Nombre) = lpFindFileData '---nom du fichier
' Initialise lpFindFileData (Variable texte uniquement)
lpFindFileData.cAlternate = String$(14, 0) '---on remet à blanc
lpFindFileData.cFileName = String$(MAX_PATH, 0) '---on remet à blanc
End If
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0 'on récupère le prochain fichier
End If
'---on arrète de scrutter le répertoire en court
FindClose hFindFile
'---Recherche dans les sous-répertoires---
hFindFile = FindFirstFile(Chemin & "*.*", lpFindFileData)
If (hFindFile <> INVALID_HANDLE_VALUE) Then
Do
'---on cherche un sous-répertoire
If (lpFindFileData.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then
'---un sous-répertoire a été trouvé
'---on récupère le nom du sous répertoire
CheminRep = Mid$(lpFindFileData.cFileName, 1, InStr(1, lpFindFileData.cFileName, Chr$(0)) - 1)
'---attention il ne faut pas prendre en compte les valeurs "." et ".."
'---considérées comme des répertoires mais qui ne nous intéressent pas
If (CheminRep <> ".") And (CheminRep <> "..") Then
CheminRep = Chemin & CheminRep & "\"
'---on relance la fonction Rechercher pour récupérer les fichiers du sous répertoire
'---voici la récurcivité!!!!
'---on va alors récupérer tous les fichiers du sous répertoire mais on va alors rechercher
'---si dans ce sous répertoire il y a d'autres sous répertoires etc...
Rechercher = Rechercher(CheminRep, FichierR, ResultatRecherche)
'on récupère la main après avoir vérifier le contenu du sous répertoire
End If
End If
'---et on continue pour tester un éventuel autre sous-répertoire
Loop Until FindNextFile(hFindFile, lpFindFileData) = 0
End If
'---voilà on a vérifier tous les sous-répertoires
FindClose hFindFile
'---on retourne le nombre de fichiers trouvées
Rechercher = ResultatRecherche.Nombre
End Function
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.