Recherche dossier sur tout les disque dur

mxcz Messages postés 8 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 20 septembre 2004 - 4 juil. 2004 à 18:11
Ke0z Messages postés 2 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 27 février 2007 - 1 janv. 2005 à 19:31
Bonjour,

Pouvez vous m'aider, je cherche le code afin de pouvoir
faire une recherche d'un dossier XXXX sur tout les disque d'ur puis afficher la liste des fichier de ce dossier dans un listbox.

Merci Beaucoup..

4 réponses

cs_NoMitsu Messages postés 122 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 15 février 2011
4 juil. 2004 à 23:59
alors dans un module tu met sa :

Option Explicit
'---- Declaration des API ----------------------------------
    Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
    Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
    Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
    Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
'-----------------------------------------------------------

'---- Declaration des Constantes ---------------------------
    Private Const MAX_PATH = 260
    Private Const INVALID_HANDLE_VALUE = -1
    Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
'-----------------------------------------------------------

'---- Declaration des Types --------------------------------
    Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
    End Type
    
    Private Type WIN32_FIND_DATA
        dwFileAttributes As Long
        ftCreationTime As FILETIME
        ftLastAccessTime As FILETIME
        ftLastWriteTime As FILETIME
        nFileSizeHigh As Long
        nFileSizeLow As Long
        dwReserved0 As Long
        dwReserved1 As Long
        cFileName As String * MAX_PATH
        cAlternate As String * 14
    End Type
'-----------------------------------------------------------

Public Function Find_Dossier(ByVal vPath As String, ByVal vRecherche As String) As String
 Dim vDir           As String   'Nom du dossier en cour
 Dim TabFolder()    As String   'Tableau contenant les sous dossier
 
 Dim NbrD           As Integer  'Nbr de dossier dans le dossier
 Dim i              As Long
 
 Dim hSearch        As Long     'Handle pour la recherche
 Dim WFD            As WIN32_FIND_DATA
 
    
    If Right(vPath, 1) <> "" Then vPath = vPath & ""
        
    hSearch = FindFirstFile(vPath & "*", WFD)
    If hSearch = INVALID_HANDLE_VALUE Then Exit Function
    
    Do
        vDir = Left(WFD.cFileName, InStr(WFD.cFileName, Chr(0)) - 1)
            
        If vDir <> "." And vDir <> ".." Then
            If GetFileAttributes(vPath & vDir) And FILE_ATTRIBUTE_DIRECTORY Then
                ReDim Preserve TabFolder(NbrD)
                TabFolder(NbrD) = vDir
                    
                NbrD = NbrD + 1                If vDir vRecherche Then Find_Dossier Find_Dossier & vPath & vDir & "|"
            End If
        End If
    Loop While FindNextFile(hSearch, WFD)
        
    Call FindClose(hSearch)
    
    For i = 0 To NbrD - 1
        Find_Dossier = Find_Dossier + Find_Dossier(vPath & TabFolder(i) & "", vRecherche)
    Next i
End Function

Public Function Enum_Fichier(ByVal vPath As String) As String
 Dim vFichier As String
    
    If Right(vPath, 1) <> "" Then vPath = vPath & ""
    
    vFichier = Dir(vPath, vbHidden + vbArchive)
    
    Do While vFichier <> ""
        Enum_Fichier = Enum_Fichier & vFichier & "|"
        vFichier = Dir
    Loop
End Function


et puis dans une form avec une list tu rajoute sa

Option Explicit

Private Sub Form_Load()
 Dim Dossier() As String
 Dim Fichier() As String
 
 Dim i As Long, j As Long
 
    Dossier() = Split(Find_Dossier("C:", "WINDOWS"), "|")
    
    For i = 0 To UBound(Dossier) - 1
        Fichier() = Split(Enum_Fichier(Dossier(i)), "|")
        Debug.Print Dossier(i)
        
        For j = 0 To UBound(Fichier) - 1
            List1.AddItem Dossier(i) & "" & Fichier(j)
        Next j
    Next i
End Sub


voila j'espere que c se que tu voulais ++
0
mxcz Messages postés 8 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 20 septembre 2004
7 juil. 2004 à 09:08
Bonjour NoMitsu

Je te remercie beaucoup pour le code , je suis actuellement en deplacement, des mon retour je teste ton code...

Je te tien informer Merci A bientôt.
0
mxcz Messages postés 8 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 20 septembre 2004
7 juil. 2004 à 09:08
Bonjour NoMitsu

Je te remercie beaucoup pour le code , je suis actuellement en deplacement, des mon retour je teste ton code...

Je te tien informer Merci A bientôt.
0
Ke0z Messages postés 2 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 27 février 2007
1 janv. 2005 à 19:31
Bonjour, moi je voudrai savoir comment rechercher un type de fichier précis ? Je vus remerci d'avance, bye ^^ ;)
0
Rejoignez-nous