Créer un sélecteur de fichiers (File Picker) dans un formulaire utilisateur (UserForm), Excel VBA
Voici un guide détaillé en français pour créer un sélecteur de fichiers (File Picker) dans un formulaire utilisateur (UserForm) avec VBA dans Excel.
Étapes :
1. Créer un formulaire utilisateur : Tout d’abord, vous devez créer un formulaire utilisateur avec un bouton qui déclenche l’ouverture du sélecteur de fichiers.
2. Utiliser FileDialog
: Utilisez l’objet Application.FileDialog
pour ouvrir la boîte de dialogue de sélection de fichiers.
3. Afficher le fichier sélectionné : Après que l’utilisateur ait sélectionné un fichier, vous pouvez afficher le chemin du fichier dans une zone de texte ou traiter le fichier selon vos besoins.
Code VBA détaillé
Étape 1 : Créer le formulaire utilisateur
1. Dans l’éditeur VBA, allez dans Insertion > UserForm
.
2. Ajoutez un CommandButton
(pour ouvrir le sélecteur de fichiers) et un TextBox
(pour afficher le chemin du fichier sélectionné).
3. Renommez le CommandButton
en btnOpenFilePicker
et le TextBox
en txtFilePath
pour plus de clarté.
Étape 2 : Ajouter le code
Voici le code complet pour le formulaire utilisateur :
Private Sub btnOpenFilePicker_Click() Dim FileDialog As FileDialog Dim SelectedFile As String ' Créer l'objet FileDialog Set FileDialog = Application.FileDialog(msoFileDialogFilePicker) ' Paramètres du FileDialog (optionnel) FileDialog.Title = "Sélectionnez un fichier" ' Titre de la boîte de dialogue FileDialog.Filters.Clear ' Effacer tous les filtres par défaut FileDialog.Filters.Add "Tous les fichiers", "*.*" ' Permet tous les types de fichiers (vous pouvez changer cela pour des types spécifiques comme *.txt, *.xlsx, etc.) ' Afficher la boîte de dialogue de sélection de fichiers If FileDialog.Show = -1 Then ' Si un fichier est sélectionné SelectedFile = FileDialog.SelectedItems(1) ' Récupérer le chemin du premier fichier sélectionné txtFilePath.Value = SelectedFile ' Afficher le chemin du fichier dans la TextBox Else MsgBox "Aucun fichier sélectionné.", vbExclamation, "Attention" ' Si l'utilisateur annule la boîte de dialogue End If ' Libérer l'objet FileDialog Set FileDialog = Nothing End Sub
Explication du code :
1. Objet FileDialog : L’objet FileDialog
est créé avec Application.FileDialog(msoFileDialogFilePicker)
. L’option msoFileDialogFilePicker
indique à Excel d’afficher une boîte de dialogue permettant de sélectionner un fichier.
2. Propriétés de la boîte de dialogue :
FileDialog.Title = "Sélectionnez un fichier"
: Définit le titre de la boîte de dialogue.FileDialog.Filters.Clear
: Efface tous les filtres par défaut qui peuvent être appliqués (par exemple, pour les fichiers Excel ou texte).FileDialog.Filters.Add "Tous les fichiers", "*.*"
: Ajoute un filtre pour tous les types de fichiers. Vous pouvez ajuster ce filtre pour ne permettre que certains types de fichiers, comme*.txt
,*.xlsx
, etc.
3. Affichage du fichier sélectionné :
If FileDialog.Show = -1 Then
: La méthode.Show
affiche la boîte de dialogue. Si un fichier est sélectionné, elle renvoie-1
.SelectedFile = FileDialog.SelectedItems(1)
: Récupère le chemin du premier fichier sélectionné.txtFilePath.Value = SelectedFile
: Affiche le chemin du fichier sélectionné dans laTextBox
.
4. Gestion des erreurs :
- Si l’utilisateur annule la boîte de dialogue (c’est-à-dire s’il ne sélectionne pas de fichier), une boîte de message s’affiche avec le texte
"Aucun fichier sélectionné."
pour avertir l’utilisateur.
5. Libération des objets :
- La commande
Set FileDialog = Nothing
permet de libérer l’objetFileDialog
après son utilisation pour éviter des fuites de mémoire.
Étape 3 : Tester le formulaire utilisateur
1. Appuyez sur F5
pour exécuter le formulaire utilisateur.
2. Cliquez sur le bouton pour ouvrir la boîte de dialogue de sélection de fichiers.
3. Après avoir sélectionné un fichier, le chemin du fichier sélectionné doit apparaître dans la TextBox
.
Améliorations optionnelles :
-
- Sélection multiple de fichiers : Si vous souhaitez permettre à l’utilisateur de sélectionner plusieurs fichiers, vous pouvez définir
FileDialog.AllowMultiSelect = True
avant d’afficher la boîte de dialogue.
- Sélection multiple de fichiers : Si vous souhaitez permettre à l’utilisateur de sélectionner plusieurs fichiers, vous pouvez définir
FileDialog.AllowMultiSelect = True If FileDialog.Show = -1 Then Dim i As Integer For i = 1 To FileDialog.SelectedItems.Count Debug.Print FileDialog.SelectedItems(i) ' Traitez chaque fichier sélectionné Next i End If
- Boîte de dialogue de sauvegarde : Si vous souhaitez que l’utilisateur choisisse un emplacement et un nom de fichier pour enregistrer un fichier, vous pouvez utiliser
msoFileDialogSaveAs
au lieu demsoFileDialogFilePicker
.
Cette approche permet de créer un sélecteur de fichiers efficace et interactif dans votre formulaire utilisateur Excel VBA.