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.Showaffiche 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 = Nothingpermet de libérer l’objetFileDialogaprè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 = Trueavant 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
msoFileDialogSaveAsau lieu demsoFileDialogFilePicker.
Cette approche permet de créer un sélecteur de fichiers efficace et interactif dans votre formulaire utilisateur Excel VBA.