Créer un sélecteur de dossier dans un UserForm, Excel VBA

Créer un sélecteur de dossier dans un UserForm, Excel VBA

Voici un code détaillé en VBA pour créer un sélecteur de dossier dans un UserForm avec des explications détaillées en français.
Étape 1 : Créer le UserForm
1. Ouvrez l’éditeur VBA en appuyant sur Alt + F11.
2. Dans l’éditeur VBA, allez dans Insertion > UserForm pour créer un nouveau UserForm.
3. Ajoutez un CommandButton à votre UserForm. Vous pouvez le nommer cmdSelectFolder.
4. Ajoutez également un TextBox ou un Label pour afficher le chemin du dossier sélectionné. Vous pouvez les nommer respectivement txtFolderPath ou lblFolderPath.
Étape 2 : Le Code VBA pour ouvrir le sélecteur de dossier
Voici le code VBA qui ouvre la boîte de dialogue de sélection de dossier lorsque l’utilisateur clique sur le bouton.
1. Double-cliquez sur le CommandButton (cmdSelectFolder) dans le UserForm pour ouvrir l’événement Click.
2. Ajoutez le code suivant dans l’événement Click du CommandButton.
Exemple complet de code :

Private Sub cmdSelectFolder_Click()
    Dim folderPath As String
    Dim dialog As FileDialog
    ' Crée un objet FileDialog pour sélectionner un dossier
    Set dialog = Application.FileDialog(msoFileDialogFolderPicker)
    ' Définit le titre de la boîte de dialogue (optionnel)
    dialog.Title = "Sélectionner un dossier"
    ' Affiche la boîte de dialogue
    If dialog.Show = -1 Then
        ' Si l'utilisateur sélectionne un dossier (clic sur OK), récupère le chemin du dossier
        folderPath = dialog.SelectedItems(1)
        ' Affiche le chemin du dossier sélectionné dans le TextBox (ou Label)
        Me.txtFolderPath.Value = folderPath
    Else
        ' Si l'utilisateur annule la sélection, affiche un message (optionnel)
        MsgBox "Aucun dossier sélectionné", vbInformation, "Sélection annulée"
    End If
    ' Libère l'objet dialog
    Set dialog = Nothing
End Sub

Explication du code :
1. Création de l’objet FileDialog :

  • Set dialog = Application.FileDialog(msoFileDialogFolderPicker): Cette ligne crée un objet FileDialog qui permet de sélectionner un dossier. La constante msoFileDialogFolderPicker est utilisée spécifiquement pour la sélection d’un dossier.

2. Titre de la boîte de dialogue :

  • dialog.Title = "Sélectionner un dossier" : Cette ligne définit le titre de la boîte de dialogue qui s’affichera à l’utilisateur, ici « Sélectionner un dossier ».

3. Affichage de la boîte de dialogue :

  • If dialog.Show = -1 Then: Cette ligne affiche la boîte de dialogue. Si l’utilisateur sélectionne un dossier et clique sur « OK », la méthode Show retourne -1, ce qui signifie qu’un dossier a été sélectionné.

4. Récupérer le chemin du dossier :

  • folderPath = dialog.SelectedItems(1): Cette ligne récupère le chemin du dossier sélectionné. La collection SelectedItems contient les éléments sélectionnés, et 1 permet de récupérer le premier (et seul) élément.

5. Afficher le chemin dans un TextBox ou Label :

  • Me.txtFolderPath.Value = folderPath: Cette ligne met à jour la valeur du TextBox (ou du Label) pour afficher le chemin du dossier sélectionné.

6. Gestion de l’annulation :

  • Si l’utilisateur annule la sélection (par exemple, en cliquant sur « Annuler »), un message est affiché avec MsgBox "Aucun dossier sélectionné".

7. Libération de l’objet FileDialog :

  • Set dialog = Nothing: Cette ligne permet de libérer la mémoire en réinitialisant l’objet FileDialog.

Étape 3 : Afficher le UserForm
Pour afficher le UserForm, vous pouvez l’appeler depuis un module ou un bouton sur une feuille de calcul. Voici comment le faire via un bouton dans une feuille de calcul :
1. Allez sur une feuille de calcul et ajoutez un bouton (depuis l’onglet Développeur > Insertion > Bouton).
2. Associez une macro à ce bouton.
3. Dans la macro associée, ajoutez le code suivant pour afficher le UserForm :

Sub ShowFolderPickerForm()
    UserForm1.Show
End Sub

Lorsque vous cliquez sur le bouton, le UserForm avec le sélecteur de dossier apparaîtra.
Notes supplémentaires :

  • L’objet FileDialog est très puissant et peut être utilisé pour la sélection de fichiers aussi, mais pour la sélection de dossier, il faut utiliser la constante msoFileDialogFolderPicker.
  • Le TextBox ou Label (txtFolderPath) affichera le chemin du dossier sélectionné. Si vous utilisez un Label, vous devrez utiliser Me.lblFolderPath.Caption = folderPath à la place.

Résumé :
Ce code crée un sélecteur de dossier simple et fonctionnel dans un UserForm Excel. Il utilise l’objet FileDialog pour ouvrir une boîte de dialogue permettant à l’utilisateur de sélectionner un dossier, puis affiche le chemin du dossier sélectionné dans un TextBox ou un Label pour un traitement ultérieur.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x