Boîte de dialogue choix d'un dossier

Comment faire pour ouvrir une boite de dialogue permettant à l'utilisateur de choisir un répertoire ? Et comment ensuite récupérer le chemin de celui ci ?

Place ceci dans un module de ton classeur (pas dans un module de feuille, c'est une fonction...)

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
 Dim Dossier as string
 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

Tu peux utiliser cette fonction en l'appellant depuis une autre macro. Tu récupères le chemin du dossier sélectionné dans la variable "Dossier" Tu peux en voir un exemple d'utilisation dans le classeur exemple.
Astuce illustrée par ce classeur
fc-sauvegardeauto

Auteur :

Mots clefs associés à cette page : , , , , , ,