olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008
-
11 févr. 2007 à 23:46
olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008
-
13 févr. 2007 à 11:46
Bonjour,
Est t'il possible via une boite de dialogue type application.getopenfillename d'ouvrir l'explorateur pour permettre à l'utilisateur de choisir un chemin.
Je souhaite juste permettre à l'utilisateur de choisir un chemin et nom un fichier comme avec application.getopenfillename.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 13 févr. 2007 à 02:34
J'aurais pu te dire encore de chercher pour SHBrowseForFolder, mais je viens de faire la recherche moi-même sur ce que j'ai écris il n'y a pas bien longtemps et je ne retrouve que des forums de 2001 et 2002...
Bon, cette fois-ci je vais sauvegarder ce projet VBA pour le retrouver plus facilement... Je spécifie VBA parce que ce n'est pas toujours aussi simple que sous VB...
Dans un module, tu mets ceci
Option Explicit
Public 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
Public Const BIF_RETURNONLYFSDIRS As Long = 1
Public Const BIF_DONTGOBELOWDOMAIN As Long = 2
Public Const BIF_STATUSTEXT As Long = 4
Public Const BIF_RETURNFSANCESTORS As Long = 8
Public Const BIF_BROWSEFORCOMPUTER As Long = &H1000 ' 0x1000
Public Const BIF_BROWSEFORPRINTER As Long = &H2000 ' 0x2000
Public Const BIF_BROWSEINCLUDEFILES As Long = &H4000 ' 0x4000
Public Const MAX_PATH As Long = 260
'Déclaration api pour rechercher le répertoire racine
Public Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Public Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
ByVal lpBuffer As String) As Long
Public Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
ByVal lpString2 As String) As Long
Public Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal hMem As Long)
Public Function GetFolder(Optional Title As String = "") As String
Dim iNull As Integer
Dim lpIDList As Long
Dim lResult As Long
Dim sPath As String
Dim udtBI As BrowseInfo
GetFolder = ""
With udtBI
.lpszTitle = lstrcat(Title, "")
.ulFlags = BIF_RETURNONLYFSDIRS
End With
lpIDList = SHBrowseForFolder(udtBI)
If lpIDList > 0 Then
sPath = String$(MAX_PATH, 0)
SHGetPathFromIDList lpIDList, sPath
CoTaskMemFree lpIDList
iNull = InStr(sPath, vbNullChar)
If iNull Then
sPath = Left$(sPath, iNull - 1)
End If
GetFolder = sPath
End If
End Function
***********************************************************************
Et dans le code de ta feuille, tu mets cela
Private Sub OuvrirRépertoire()
Dim FolderName As String
FolderName = GetFolder("Veuillez sélectionner le dossier source" & vbCrLf & _
"contenant les fichiers souhaités")
If FolderName = "" Then
MsgBox "L'usager a choisi d'annuler"
Else
'Whatever
End If
End Sub
***********************************************************************
En principe, ça devrait fonctionner au poil....
olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008 12 févr. 2007 à 22:34
Merci apparement le code proposer à ce lien correspond exactement à ce que je veus.
Cependant, comme je l'ai également demander sur la page de cette source, je n'arrive pas à le faire fonctionner.
Ca plantesur le hWnd, j'ai une erreur de compilation : variable non définie.
Une idée du pourquoi du comment ? Je ne comprend ce qui ne vas pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
olivier857
Messages postés188Date d'inscriptionmardi 21 décembre 2004StatutMembreDernière intervention10 avril 2008 13 févr. 2007 à 11:46
Merci ce second code marche très bien sur ma machine, j'accepte la réponse et la première également car même si elle ne marche pas sur ma version apparement ce code correspond également à ma demande.