OVH Cloud OVH Cloud

Sélectionner un répertoire

4 réponses
Avatar
Aski
Bonjour,

On utilise 'ShowOpen' pour sélectionner un fichier.
Je n'ai pas trouvé de méthode pour sélectionner un dossier avec le même
contrôle.
La seule possibilité que je connaisse est l'utilisation combinée de
'DriveListBox' et 'DirListBox'.
Savez-vous s'il existe des moyens plus élégants en dehors de TreeView qui
n'est pas simple à gérer ?

Merci

Aski

4 réponses

Avatar
Pascal B.
Salut,

Je n'ai pas le code sous la main, mais tu auras vite une solution en faisant une recherche sur la fonction API:
"SHBrowseForFolder" qui affiche une boite de dialogue permettant à l'utilisateur de selectionner un répertoire (dossier).
(En pricipe cette fonction est acompagnée de "SHGetPathFromIDList")

Cordialement,
Pascal B.

Regarde du côté de la fonction
"Aski" wrote in message news:%23%
| Bonjour,
|
| On utilise 'ShowOpen' pour sélectionner un fichier.
| Je n'ai pas trouvé de méthode pour sélectionner un dossier avec le même
| contrôle.
| La seule possibilité que je connaisse est l'utilisation combinée de
| 'DriveListBox' et 'DirListBox'.
| Savez-vous s'il existe des moyens plus élégants en dehors de TreeView qui
| n'est pas simple à gérer ?
|
| Merci
|
| Aski
|
|
Avatar
Aski
Bonjour Pascal,

Merci beaucoup pour ta réponse à la Lucky Luke. lol
Bien que connaissant l'existence de "SHBrowseForFolder", je n'ai pas pensé à
l'utiliser dans ce but.

Cordialement

Aski (ex Averell)

Pascal B. wrote:
|| Salut,
||
|| Je n'ai pas le code sous la main, mais tu auras vite une solution en
|| faisant une recherche sur la fonction API: "SHBrowseForFolder" qui
|| affiche une boite de dialogue permettant à l'utilisateur de
|| selectionner un répertoire (dossier). (En pricipe cette fonction est
|| acompagnée de "SHGetPathFromIDList")
||
|| Cordialement,
|| Pascal B.
||
|| Regarde du côté de la fonction
|| "Aski" wrote in message
|| news:%23%
||| Bonjour,
|||
||| On utilise 'ShowOpen' pour sélectionner un fichier.
||| Je n'ai pas trouvé de méthode pour sélectionner un dossier avec le
||| même contrôle.
||| La seule possibilité que je connaisse est l'utilisation combinée de
||| 'DriveListBox' et 'DirListBox'.
||| Savez-vous s'il existe des moyens plus élégants en dehors de
||| TreeView qui n'est pas simple à gérer ?
|||
||| Merci
|||
||| Aski
Avatar
Aski
Bonsoir à Pascal ou au génie qui voudra bien répondre,

J'ai suivi les excellents conseils qui m'ont été donnés et j'en arrive à un
code qui me permet de sélectionner un dossier sans problème.
Le seul inconvénient est que je n'ai pas réussi à trouver l'astuce pour
avoir un dossier donné sélectionné par défaut.
C'est qui qui sait ? ;-)

Aski

/////////////////////////////////////////////////////////////////////

Const BIF_RETURNONLYFSDIRS = 1
Const MAX_PATH = 260

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 Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal
lpString1 As String, ByVal lpString2 As String) As Long
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

Public Sub Test()
'KPD-Team 1998
'URL: http://www.allapi.net/
'
Dim iNull As Integer, lpIDList As Long, lResult As Long
Dim sPath As String, udtBI As BrowseInfo

With udtBI
'Set the owner window
.hWndOwner = Forms(0).hWnd
'lstrcat appends the two strings and returns the memory address
.lpszTitle = lstrcat("Cliquer sur le répertoire cible" & vbCr, "e:")
'Return only if the user selected a directory
.ulFlags = BIF_RETURNONLYFSDIRS
End With

'Show the 'Browse for folder' dialog
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList Then
sPath = String$(MAX_PATH, 0)
'Get the path from the IDList
SHGetPathFromIDList lpIDList, sPath
'free the block of memory
CoTaskMemFree lpIDList
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
End If

MsgBox sPath
End Sub

////////////////////////////////////////////

Aski wrote:
|| Bonjour Pascal,
||
|| Merci beaucoup pour ta réponse à la Lucky Luke. lol
|| Bien que connaissant l'existence de "SHBrowseForFolder", je n'ai pas
|| pensé à l'utiliser dans ce but.
||
|| Cordialement
||
|| Aski (ex Averell)
||
|| Pascal B. wrote:
|||| Salut,
||||
|||| Je n'ai pas le code sous la main, mais tu auras vite une solution
|||| en faisant une recherche sur la fonction API: "SHBrowseForFolder"
|||| qui affiche une boite de dialogue permettant à l'utilisateur de
|||| selectionner un répertoire (dossier). (En pricipe cette fonction
|||| est acompagnée de "SHGetPathFromIDList")
||||
|||| Cordialement,
|||| Pascal B.
||||
|||| Regarde du côté de la fonction
|||| "Aski" wrote in message
|||| news:%23%
||||| Bonjour,
|||||
||||| On utilise 'ShowOpen' pour sélectionner un fichier.
||||| Je n'ai pas trouvé de méthode pour sélectionner un dossier avec le
||||| même contrôle.
||||| La seule possibilité que je connaisse est l'utilisation combinée
||||| de 'DriveListBox' et 'DirListBox'.
||||| Savez-vous s'il existe des moyens plus élégants en dehors de
||||| TreeView qui n'est pas simple à gérer ?
|||||
||||| Merci
|||||
||||| Aski
Avatar
Aski
Bonsoir,

Je viens de trouver la réponse à ma question après des heures de recherche.
Elle existe à cette adresse.

http://www.c2i.fr/code.asp?IDCode83

Aski

Aski wrote:
|| Bonsoir à Pascal ou au génie qui voudra bien répondre,
||
|| J'ai suivi les excellents conseils qui m'ont été donnés et j'en
|| arrive à un code qui me permet de sélectionner un dossier sans
|| problème.
|| Le seul inconvénient est que je n'ai pas réussi à trouver l'astuce
|| pour avoir un dossier donné sélectionné par défaut.
|| C'est qui qui sait ? ;-)
||
|| Aski
||||
|||| Pascal B. wrote:
|||||| Salut,
||||||
|||||| Je n'ai pas le code sous la main, mais tu auras vite une solution
|||||| en faisant une recherche sur la fonction API: "SHBrowseForFolder"
|||||| qui affiche une boite de dialogue permettant à l'utilisateur de
|||||| selectionner un répertoire (dossier). (En pricipe cette fonction
|||||| est acompagnée de "SHGetPathFromIDList")
||||||
|||||| Cordialement,
|||||| Pascal B.
||||||
|||||| Regarde du côté de la fonction
|||||| "Aski" wrote in message
|||||| news:%23%
||||||| Bonjour,
|||||||
||||||| On utilise 'ShowOpen' pour sélectionner un fichier.
||||||| Je n'ai pas trouvé de méthode pour sélectionner un dossier avec
||||||| le même contrôle.
||||||| La seule possibilité que je connaisse est l'utilisation combinée
||||||| de 'DriveListBox' et 'DirListBox'.
||||||| Savez-vous s'il existe des moyens plus élégants en dehors de
||||||| TreeView qui n'est pas simple à gérer ?
|||||||
||||||| Merci
|||||||
||||||| Aski