Choisir un chemin via l'explorateur

Résolu
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 11 févr. 2007 à 23:46
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 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.

Merci d'avance !

Olivier

7 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 févr. 2007 à 06:32
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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....

MPi
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
12 févr. 2007 à 00:15
Fais une recherche sur l'API   SHBrowseForFolder
Tu devrais y trouver ton compte

MPi
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
12 févr. 2007 à 22:58
Sous quelle version travailles-tu?

Sinon, tu trouveras là (dans le code) comment extraire ce hwnd
http://support.microsoft.com/kb/465631/fr
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
12 févr. 2007 à 23:26
Je travaille avec office 2003.
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 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.
0
Rejoignez-nous