Rechercher un répertoire

Rechercher un répertoire et obtenir son chemin d'accès

Placez la fonction suivante dans un module général, onglet Module et que vous nommerez "mod_RechercheRepertoire" par exemple.

Remarque :

Le chemin retourné, est celui qui mène au premier répertoire trouvé.

Si donc vous cherchez le répertoire "Test" dont il existe deux exemplaires, vous obtiendrez par exemple "C:\Niveau1\Test" et jamais "C:\Niveau1\Niveau2\Test".

Function fnSearchFolder(StartPath As String, FolderName As String)
    '//
    '//     Syntaxe :
    '//     Chemin = fnSearchFolder("C:\","MonRepertoire")
    '//     Chemin = fnSearchFolder("D:\Images","MonRepertoire")
    '//
    On Error GoTo Err_SearchFolder
    Dim boFound As Boolean
    Dim i As Integer, j As Integer, MaxRep As Integer
    Dim Path2Folder() As String
    Dim sFind As String
    Const vbDir As Integer = vbDirectory

    If Right(StartPath, 1) <> "/" Then StartPath = StartPath & "/"
    FolderName = Replace(FolderName, "/", "")
    i = 1: j = 0: MaxRep = 0: boFound = False
    ReDim Path2Folder(100)
    Path2Folder(0) = StartPath
    sFind = Dir(StartPath, vbDir)
    Do While (Path2Folder(j) <> "") And (boFound = False)
        Do While (sFind <> "") And (boFound = False)
            If sFind <> "." And sFind <> ".." Then
                If (GetAttr(Path2Folder(j) & sFind) And vbDir) = vbDir Then
                    If i > (MaxRep - 5) Then
                        MaxRep = i + 100
                        ReDim Preserve Path2Folder(MaxRep)
                    End If
                    Path2Folder(i) = Path2Folder(j) & sFind & "/"
                    If Right(Path2Folder(i), Len(FolderName) + 2) = _
                       ("/" & FolderName & "/") Then
                        fnSearchFolder = Path2Folder(i)
                        boFound = True
                    End If
                    i = i + 1
                End If
            End If
            sFind = Dir
        Loop
        j = j + 1
        sFind = Dir(Path2Folder(j), vbDir)
    Loop

Exit_SearchFolder:
    Exit Function
Err_SearchFolder:
    If Err.Number <> 52 Then
        MsgBox Err.Number & " " & Err.Description
    End If
    Resume Exit_SearchFolder
End Function


Dernière modification : 19/02/2010 19:21
Catégorie : Les mémos - Fichiers
Page lue 7037 fois