Chemin d'un dossier

Pour faciliter la saisie de données dans un classeur, je voudrais que les utilisateurs puissent choisir à la souris un dossier. Quel code utiliser ?

Ce code est à placer dans un module du classeur (pas dans le code de la feuille).
Dans une macro du classeur si tu tapes

sub essai()  
....  
GetDirectory  
...    

tu récupères dans la variable Dossier le chemin que l'utilisateur aura sélectionné

  Public Dossier    
Public Type BROWSEINFO  
hOwner As Long  
pidlRoot As Long 
 pszDisplayName As String 
 lpszTitle As String  
ulFlags As Long 
 lpfn As Long 
 lParam As Long 
 iImage As Long  
End Type  '32-bit API declarations 

 Declare Function SHGetPathFromIDList Lib "shell32.dll" _  
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long  
Declare Function SHBrowseForFolder Lib "shell32.dll" _  
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long   

Function GetDirectory(Optional Msg) As String
 Dim bInfo As BROWSEINFO
 Dim path As String
 Dim r As Long, x As Long, pos As Integer
 bInfo.pidlRoot = 0&
 If IsMissing(Msg) Then
 bInfo.lpszTitle = "Choisissez un dossier de destination pour les sauvegardes."
 Else
 bInfo.lpszTitle = Msg
 End If
 bInfo.ulFlags = &H1
 x = SHBrowseForFolder(bInfo)
 path = Space$(512)
 r = SHGetPathFromIDList(ByVal x, ByVal path)
 If r Then
 pos = InStr(path, Chr$(0))
 GetDirectory = Left(path, pos - 1)
 Dossier = GetDirectory & ""
 Else
 GetDirectory = ""
 End If
 End Function

Astuce illustrée par ces classeurs
fc-sauvegardeauto
skfc-zipdossier

Auteur :

Mots clefs associés à cette page : , ,