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 objetFileDialog
qui permet de sélectionner un dossier. La constantemsoFileDialogFolderPicker
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éthodeShow
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 collectionSelectedItems
contient les éléments sélectionnés, et1
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 duTextBox
(ou duLabel
) 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’objetFileDialog
.
É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 utiliserMe.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.