Lister les fichiers d'un répertoire et de ses sous-répertoires dans un listbox

Soyez le premier à donner votre avis sur cette source.

Vue 9 009 fois - Téléchargée 1 443 fois


Description

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

Codes Sources

A voir également

Ajouter un commentaire Commentaires
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
7 mars 2004 à 00:47
nickel j'allais justement avoir besoin d'un equivalent du FindFirst en C !!

merci a toi ;-)
cbao06 Messages postés 1 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 30 avril 2004
30 avril 2004 à 08:50
HALTE AU PLAGIAT! LA SOURCE N'EST PAS DE TOI!
C'est bien de faire connaitre les fonctions API par des exemples de code, mais c'est encore mieu de donner l'origine de cette source. Tu as vu juste en te doutant qu'elle existait déjà vu que c'est mot pour mot la source contenue dans le fichier APIDOCVB.CHM qui regroupe plus d'un centaine de fonctions API avec des exemples pour chacune et que l'on peut télécharger gratuitement sur l'URL suivante : http://docvb.free.fr/api.php.
yomm Messages postés 515 Date d'inscription dimanche 17 février 2002 Statut Membre Dernière intervention 10 mars 2008 3
30 avril 2004 à 12:36
désolé mister mais je ne connais pas ta source , jamais entendu parlé de ce site...par contre je te confirme que ce source provient bien d'un autre code...trouvé sur vbfrance mais je ne me souvients plus lequel....et si tu regardes bien, ce code a été mis en REPONSE a une question posée sur le forum...donc je n'ai fais là que rendre service à quelqu'un qui n'avait pas trouvé ce qu'il cherchait...
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
11 juin 2004 à 15:40
franchement pas terrible !!!

Pas de déclaration d'api
pas de déclaration de constante
on sait pas à quoi correspondent les variables
c'est quoi INVALID_HANDLE_VALUE ?????
et ListeFichier, ya pas de déclaration de type ???
les commentaires sont vraiment succints.

En plus je crois avoir déjà vu ce post mais franchement plus clair, avec toutes les déclaration.
déjà ça, ça m'aurrait aidé!!

Là j'avance pas d'un pouce.
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
11 juin 2004 à 16:01
comme je fais pas les choses à moitié, j'ai retrouver le post dont je parlais :

http://www.vbfrance.com/forum.v2.aspx?ID=235428

qui lui m'a aidé.

+++

ps:Je ne critique pas l'intension qui est tout à fait louable :)))

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.