Recherche fichiers depuis un chemin (récurssif ???)

gnosis35 Messages postés 57 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 5 avril 2010 - 21 sept. 2004 à 22:27
gnosis35 Messages postés 57 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 5 avril 2010 - 3 nov. 2004 à 15:40
bonjour

j'aimerai faire une recherche depuis un chemin précis de disque afin de rechercher tous les fichier d'un type donné mé..... voilà le pb :

c pour ce qui est de la recherche dans l'arborescence.

Il faudrait que je fasse une recherche recurssive mais voilà je n'y arrive pas.

Disons que j'ai réfléchis un peu et il faudrait que pour chaque répertoire je recherche dedans jusqu'à ce que le repertoire ne contienne plus de repertoire...

hum je c pas si c bien clair...

en fait de façon petre plus simplifié j'aimerai scanner tous les fichiers depuis un chemin donné à la recherche d'un type de fichier précis et qu'il recherche de ce fait dans tous les répertoires et sous répertoire :(

je vous remercie vraiment

3 réponses

pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
21 sept. 2004 à 22:45
Utilise cette fonction de recherche de fichier (recursive)

Sub FilesSearch(DrivePath As String, Ext As String)

       Dim XDir() As String
       Dim TmpDir As String
       Dim FFound As String
       Dim DirCount As Integer
       Dim X As Integer
       '     'Initialises Variables
       DirCount = 0
       ReDim XDir(0) As String
       XDir(DirCount) = ""

              If Right(DrivePath, 1) <> "" Then
                     DrivePath = DrivePath & ""
              End If

       '     'Enter here the code for showing the path being
       '     'search. Example: Form1.label2 = DrivePath
       '     'Search for all directories and store in the
       '     'XDir() variable

              DoEvents
                     TmpDir = Dir(DrivePath, vbDirectory)

                            Do While TmpDir <> ""

                                          If TmpDir <> "." And TmpDir <> ".." Then

                                                        If (GetAttr(DrivePath & TmpDir) And vbDirectory) = vbDirectory Then
                                                               XDir(DirCount) = DrivePath & TmpDir & ""
                                                               DirCount = DirCount + 1
                                                               ReDim Preserve XDir(DirCount) As String
                                                        End If

                                          End If

                                   TmpDir = Dir
                            Loop

                     '     'Searches for the files given by extension Ext
                     FFound = Dir(DrivePath & Ext)

                            
                            Do Until FFound = ""
                                   
                                  
                                   
                                   
                                   '     'Code in here for the actions of the files found.
                                   '     'Files found stored in the variable FFound.
                                   '     'Example: Form1.list1.AddItem DrivePath & FFound
                                   FFound = Dir
                            Loop
                            
                
                     'Recursive searches through all sub directories

                            For X = 0 To (UBound(XDir) - 1)
                                   FilesSearch XDir(X), Ext
                            Next X

If X = (UBound(XDir)) Then

End If


Voila ++
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
21 sept. 2004 à 23:38
Bonsoir
Une autre solution :

Projet => Références => Microsoft Scripting Runtime

Sur la feuille,
- une textbox "Chem" pour écrire le chemin de départ
- une textbox "Extension" pour choisir le type de fichier
- une listbox "Liste" pour les résultats
- un bouton de commande "Cherche" pour lancer la recherche

Le code :
Option Explicit
Dim FSO As New FileSystemObject
------------------------------
Private Sub Cherche_Click()
    Liste.Clear
    TrouverFichiers Chem.Text
End Sub
-------------------------------
Private Sub TrouverFichiers(Chemin As String)
Dim Dossier As Folder
Dim Fichier As File
Set Dossier = FSO.GetFolder(Chemin)
For Each Fichier In Dossier.Files
    If UCase$(Right$(Fichier, 3)) = UCase$(Extension.Text) Then Liste.AddItem Fichier
Next Fichier
For Each Dossier In FSO.GetFolder(Chemin).SubFolders
TrouverFichiers Dossier.Path
Next Dossier
End Sub


On met dans Chem : C:\Program Files\Microsoft Visual Studio
dans Extension : txt
et on lance.
0
gnosis35 Messages postés 57 Date d'inscription samedi 27 mars 2004 Statut Membre Dernière intervention 5 avril 2010 1
3 nov. 2004 à 15:40
merci bcp à vous deux

je répond bien tard car oqp a autre choz mais là je reprend ce programme de recherche de fichier suivant l'extension...

sinon oui la solution numero deux c exactement ce que je compte faire :
un chemin de depart dans un txtbox
l'extension dans une autre txtbox
et une liste qui m'affiche le chemin du fichier dont l'extension est celle dont je recherche

manque plus qu'a faire que qd l'extension du fichier parcouru correspond qu'il me le coupe dans un repertoire precis genre je veux les fichiers .doc, qu'il me crée a la racine du lecteur un repertoire nommé "DOC" ou il me mettra tout ça dedans :)

merci encore a vous deux
a+
0
Rejoignez-nous