Selection de dossier avec bouton "nouveau dossier"

Soyez le premier à donner votre avis sur cette source.

Vue 14 974 fois - Téléchargée 798 fois

Description

Suite a une demande sur le forum (et oui, encore !!) , j'ai fais ce module.

Ca permet d'afficher l'assistant de selection de dossier (avec un bouton "Nouveau Dossier" )

Source / Exemple :


Private Sub Form_Load()
    MsgBox BrowseAndCreate("Veuillez selectionner votre Dossier.")
End Sub

Public Function BrowseAndCreate(Title As String) As String
    Dim Shell As Variant, Folder As Variant
    Set Shell = CreateObject("Shell.Application")
    Set Folder = Shell.BrowseForFolder(hWnd, Title, 0, "")
    BrowseAndCreate = Folder.items.Item.Path
End Function

'----------------------------------------------------------
OU
'----------------------------------------------------------

Public Function BrowseForFolder(Optional ByRef Title As String = "Please, select a directory", Optional ByRef InitialDirectory As String) As String
Dim iNull As Integer
Dim lpIDList As Long
Dim sPath As String
Dim BI As BROWSEINFO

    mBrowseFolder = InitialDirectory

    With BI
        .hwndOwner = 0
        .lpszTitle = lstrcat(Title, vbNullChar)
        .ulFlags = BIF_RETURNONLYFSDIRS Or BIF_NEWDIALOGSTYLE
        If LenB(InitialDirectory) > 0 Then
            .lpfn = ProcAddress(AddressOf BrowseCallbackProc)
        End If
    End With

    lpIDList = SHBrowseForFolder(BI)
    If lpIDList 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
    End If
    BrowseForFolder = sPath
End Function

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
351
Date d'inscription
samedi 7 février 2004
Statut
Membre
Dernière intervention
6 octobre 2010

Merci, Merci , merci, et merci...

Je pense ne rien avoir oublié...

@+ Sator
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Ouppsss... c'est pas ASSKICK mais facknrask sur la source : http://www.vbfrance.com/codes/COMMONDIALOG-POUR-SELECTIONNER-REPERTOIRE-OCX_35482.aspx

Us.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
Bonsoir,

La fonction "BrowseAndCreate" est élégeante, mais il est dommage qu'on ne puisse pas l'utiliser aussi pour la sélection d'un fichier... La solution proposée par ASSKICK étant fausse pour les fichiers...

Je n'arrive pas à faire marcher la version alternative (?) "BrowseForFolder", bien sur, cela bloque sur Dim BI As ... puisqu'on a rien qui défini tout cela...

J'ai tenté d'étudier cette fonction (BrowseAndCreate), et je vois quelques améliorations possibles.

Déjà, il faut mettre un ON ERROR RESUME NEXT, dans le code en cas d'action sur le bouton Annuler, pour un renvoi vide... au lieu d'un bug ! c'est mieux... Ensuite, en jouant sur les paramètres, la boite de sélection peut prendre plusieurs formes. Par exemple, avec une TextBox pour la sélection courante, ou même le titre peut changer... Sans avoir vraiment compris quelles sont les valeurs précises (plusieurs sont possibles), je propose une version complèté :

=

Public Enum vbConfigBrowse
DirButtonCreateOKCancel = 0
DirButtonCreateOKCancelTextBox = 16
DirButtonCreateOKCancelInfo = 2500
DirButtonOkCancelTextbox = 560
DirButtonOkCancel = 550
PrtButtonOkCancelTextbox = -1
End Enum

=

Public Function BrowseAndCreate(Title As String, Optional Config As vbConfigBrowse = 0) As String
Dim Shell As Variant, Folder As Variant
Set Shell = CreateObject("Shell.Application")
On Error Resume Next
Set Folder = Shell.BrowseForFolder(Hwnd, Title, Config, "")
BrowseAndCreate = Folder.items.Item.Path
End Function

=

Sub essai()

MsgBox BrowseAndCreate("Veuillez selectionner votre Dossier.", DirButtonCreateOKCancelTextBox)

End Sub

=

Maintenant, j'aimerais bien comprendre à fond cette fonction (ses paramètres), et j'aimerais savoir si on peut vraiment pas faire en sorte de choisir un fichier, ou est-ce irrémédiablement impossible ? Bizarrement, on peut choisir un fichier PDF, avec l'option -1 (printer)... peut-être parce j'ai une imprimante virtuelle pour la création des PDF ?...

J'ai vu que BruNews avait fait une DLL pour faire quel que chose de similaire, mais hélas, on ne peut pas (aussi) sélectionner un fichier, et globalement sa solution n'a pas encore l'élégeance de cette fonction, qui permet un menu contextuel, un bouton "Créer un dossier", etc.

Amicalement,
Us.
Messages postés
188
Date d'inscription
mardi 21 décembre 2004
Statut
Membre
Dernière intervention
10 avril 2008

Bonjour et merci apparement ton code doit correspondre exactement à ce que je veus.

Cependant je n'arrive pas à le faire fonctionner.
Ca gueule sur le hWnd, j'ai une erreur de compilation : variable non définie.

une idée du pourquoi du comment ?
Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1
oh pinaise ! c pile poil ce ke je cherchais ! merci
Afficher les 18 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.