Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boite de dialogue et dossier window

2 réponses
Avatar
Christian Delaunay
Bonjour,

je voudrais depuis une macro Excel, afficher une boite de dialogue, une
userForm dans laquelle un utilisateur puisse sélectionner
un répertoire windows.

Comment faire ?

merci par avance
Christian

2 réponses

Avatar
Robert Dezan
Bonsoir Christian,
Tu trouvera une solution sur le site de compilation de macros VBA de Frédéric
Sigonneau :
http://perso.wanadoo.fr/frederic.sigonneau/ à la rubrique"VBA Excel" puis
"Fichiers et dossiers"
Macro : BrowseForFolderOrFile.bas
ou bien plus directement :
http://perso.wanadoo.fr/frederic.sigonneau/code/Fichiers/BrowseForFolderOrFile.t
xt
Si tu as un peu de temps, je ne saurais trop te conseiller de parcourir tout le
sommaire des macros de Frédéric.
Ce la t'évitera peut être de recréer ce qui existe déjà.
Cordialement
Robert Dezan
-------------------------------------------------------------
Option Explicit
'J. Walkenbach
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

Sub test()
' ----------- Appel de la fonction de sélection
MsgBox GetDirectory
End Sub

Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer

'Définit le Bureau comme dossier racine
bInfo.pidlRoot = 0&

'Invite de la boite de dialogue
If IsMissing(Msg) Then
bInfo.lpszTitle = "Selectionnez un dossier."
Else
bInfo.lpszTitle = Msg
End If

'Type de renvoi : dossier
' bInfo.ulFlags = &H1
'Type de renvoi : fichier
bInfo.ulFlags = &H4000


'Affiche la boite de dialogue
x = SHBrowseForFolder(bInfo)

'Traite le résultat
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function
-------------------------------------------------------------------
"Christian Delaunay" a écrit dans le message de
news: bf6mfi$423$
Bonjour,

je voudrais depuis une macro Excel, afficher une boite de dialogue, une
userForm dans laquelle un utilisateur puisse sélectionner
un répertoire windows.

Comment faire ?

merci par avance
Christian




Avatar
Christian Delaunay
A première vue impressionant,

merci du tuyau
Et buen sûr merci à Frédéric pour son site

Christian

"Robert Dezan" a écrit dans le message de news:
#
Bonsoir Christian,
Tu trouvera une solution sur le site de compilation de macros VBA de
Frédéric

Sigonneau :
http://perso.wanadoo.fr/frederic.sigonneau/ à la rubrique"VBA Excel"
puis

"Fichiers et dossiers"
Macro : BrowseForFolderOrFile.bas
ou bien plus directement :

http://perso.wanadoo.fr/frederic.sigonneau/code/Fichiers/BrowseForFolderOrFi

le.t
xt
Si tu as un peu de temps, je ne saurais trop te conseiller de parcourir
tout le

sommaire des macros de Frédéric.
Ce la t'évitera peut être de recréer ce qui existe déjà.
Cordialement
Robert Dezan
-------------------------------------------------------------
Option Explicit
'J. Walkenbach
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

Sub test()
' ----------- Appel de la fonction de sélection
MsgBox GetDirectory
End Sub

Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim path As String
Dim r As Long, x As Long, pos As Integer

'Définit le Bureau comme dossier racine
bInfo.pidlRoot = 0&

'Invite de la boite de dialogue
If IsMissing(Msg) Then
bInfo.lpszTitle = "Selectionnez un dossier."
Else
bInfo.lpszTitle = Msg
End If

'Type de renvoi : dossier
' bInfo.ulFlags = &H1
'Type de renvoi : fichier
bInfo.ulFlags = &H4000


'Affiche la boite de dialogue
x = SHBrowseForFolder(bInfo)

'Traite le résultat
path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal path)
If r Then
pos = InStr(path, Chr$(0))
GetDirectory = Left(path, pos - 1)
Else
GetDirectory = ""
End If
End Function
-------------------------------------------------------------------
"Christian Delaunay" a écrit dans le message
de

news: bf6mfi$423$
Bonjour,

je voudrais depuis une macro Excel, afficher une boite de dialogue, une
userForm dans laquelle un utilisateur puisse sélectionner
un répertoire windows.

Comment faire ?

merci par avance
Christian