L'informatique à votre portée
L'informatique prêt-à-porter

Faites appel à moi pour vos formations
sur les dpts 81, 31, 82, 11 et 67 (Strasbourg)
Confiez moi vos développements Office

FacebookTwitterGoogle BookmarksLinkedin

Selectionner un dossier ou un fichier

Imprimer E-mail
5 mars 2014

Le code source suivant vous permet d'afficher une boîte de dialogue comme celle-ci :

 

La fenêtre peut s'afficher avec uniquement les dossiers ou les dossiers et les fichiers. L'utilisateur recherche dans l'arborescence son fichier et son dossier. S'il clique sur annuler vous récupérer un chemin vide, s'il a effectué une sélection et cliqué sur Ok, la fonction renvoie le chemin du dossier ou du fichier.

Pour utiliser la fonction qui suit vous devez l'appeler ainsi :

ValeurString = ChoixDossierFichier(choix)

ValeurString contiendra le chemin de la sélection et choix prendra la valeur 0 pour rechercher uniquement les dossiers et n'importe quel autre valeur (de 1 à 255) pour rechercher un dossier ou un fichier.

Function ChoixDossierFichier(SelType As Byte) As String
     Dim objShell As Object, objFolder As Object
     Dim Chemin As String, Msg As String
     Dim FlagChoix As Long, NbPoint As Integer

     If SelType = 0 Then
          FlagChoix = &H1
          Msg = "Sélectionner un dossier :"
     Else
          FlagChoix = &H4000
          Msg = "Sélectionner un fichier :"
     End If

     Set objShell = CreateObject("Shell.Application")
     ' &h1
' 1er paramètre toujours 0 (zéro). Il représente le handle de la fenêtre parent
     ' &h1
' 2ème paramètre Titre de la boite, en dessous de la barre de titre
     ' &h1
' 3ème paramètre options de BrowseForFolder
     ' &h1
' 4ème paramètre Facultatif. Répertoire de début d'exploration
     On Error Resume Next
     Set objFolder = objShell.BrowseForFolder(&H0&, Msg, FlagChoix)
     ' &h1
'Si l 'objet retourné est valide, on teste son contenu (item.title)
     'Si on a sélectionné la racine d'une partition, il se compose du nom de la partition,
     ' suivi de sa lettre et ":" entre parenthèses
     NbPoint = InStr(objFolder.Title, ":")
     If NbPoint = 0 Then
          ' &h1
'Sinon, il se compose du nom du dossier uniquement, sans le chemin précédent
          'On récupère ce chemin à l'aide des propriété et méthode ParentFolder.ParseName
          Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).path & ""
     Else
          ' &h1
' si racine on récupère la lettre du lecteur et les 2 points
          Chemin = Mid(objFolder.Title, NbPoint - 1, 2)
     End If
     ChoixDossierFichier = Chemin
End Function

Constantes permettant de personnaliser le fonctionnement de BrowseForFolder
&H1 : uniquement les dossiers
&H10 : Affiche une zone d'édition
&H20 : Vérifie la saisie dans la zone d'édition
&H2000 : Autorise le parcours uniquement dans les dossiers "Mes documents" et "Bureau"
&H4000 : les dossiers et les fichiers