Bonjour !

Dans une macro excel, je cherche à selectionner un dossier, puis enregistrer le chemin de ce dossier dans une variable pour l'utiliser plus tard dans une autre macro.

Je sais ouvrir le browser de dossier et selectionner le dossier mais assez stupidement je n'arrive pas à récuperer l'adresse pour la mettre dans une variable.

Ci-joint le code utilisé pour chercher le dossier.

En vous remerciant pour votre aide.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
 
Const MAX_PATH = 4096
 
Private Type BrowseInfo
      hWndOwner As Long
      pIDLRoot As Long
      pszDisplayName As Long
      lpszTitle As Long
      ulFlags As Long
      lpfnCallback As Long
      lParam As Long
      iImage As Long
End Type
 
Private Sub CommandButton1_Click()
 
ChoosePath (title)
 
'MsgBox ChoosePath
 
End Sub
  Public Function ChoosePath(title As String) As String
 
  Dim lpIDList As Long
  Dim sBuffer As String
  Dim szTitle As String
  Dim tBrowseInfo As BrowseInfo
 
 
      szTitle = title
 
      With tBrowseInfo
          '.hWndOwner = handle
          .lpszTitle = lstrcat(szTitle, "")
          .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
      End With
 
      lpIDList = SHBrowseForFolder(tBrowseInfo)
 
 
      ChoosePath = ""
      If (lpIDList) Then
          sBuffer = Space(MAX_PATH)
          SHGetPathFromIDList lpIDList, sBuffer
          sBuffer = Left(sBuffer, InStr(1, sBuffer, vbNullChar) - 1)
          ChoosePath = sBuffer
      End If
 
  End Function