je voudrais depuis une macro Excel, afficher une boite de dialogue, une
userForm dans laquelle un utilisateur puisse sélectionner
un répertoire windows.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <christian.delaunay@fnac.net> a écrit dans le message de
news: bf6mfi$423$1@apollon.grec.isp.9tel.net...
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.
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
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 :
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
A première vue impressionant,
merci du tuyau
Et buen sûr merci à Frédéric pour son site
Christian
"Robert Dezan" <rdezan@noos.fr> a écrit dans le message de news:
#IsFTnJTDHA.1588@TK2MSFTNGP11.phx.gbl...
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 :
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" <christian.delaunay@fnac.net> a écrit dans le message
de
news: bf6mfi$423$1@apollon.grec.isp.9tel.net...
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.
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.