Vous avez fait une macro qui ouvre un fichier texte (ou) et vous voudriez pouvoir laisser l'utilisateur choisir le fichier. Ou encore vous avez fait une macro qui fait une copie d'une feuille (ou qui crée un nouveau classeur) et vous voudriez que l'utilisateur choisisse le nom du fichier et son emplacement avant que la macro ne l'enregistre... Vous aurez besoin de l'objet FileDialog.
[Edit]Un oubli de ma part, et Dieu sait que le détail est important! Avant toute chose, il faut ajouter la référence Microsoft Office (version) Object Library.[/Edit]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| Sub ChargerFichier()
' Déclaration des variables
Dim fdlg As FileDialog
Dim vrtSelectedItem As Variant ' les noms de fichiers
' Initialisation de la variable de l'objet FileDialog
Set fdlg = Application.FileDialog(msoFileDialogFilePicker)
' Spécifie les valeurs pour les principales propriétés
With fd
.Title = "Ouvrir un fichier texte" ' le titre de la boîte de dialogue
.Filters.Clear ' efface tous les filtres par défaut
.Filters.Add "Fichier texte(.txt)", "*.txt" ' crée le filtre pour les fichiers texte
.InitialFileName = ActiveWorkbook.Path ' détermine le dossier par défaut
.AllowMultiSelect = True ' Autorise la sélection multiple
' L'utilisateur a cliqué sur le bouton
If .Show = -1 Then
' Parcourre les différentes sélections
For Each vrtSelectedItem In .SelectedItems
' Vous pouvez utiliser les fonction de lecture de fichier d'Excel
' ou encore lire directement le fichier par une instruction Open
' Pour cet exemple, on affiche simplement une boîte de message
MsgBox "Le chemin est : " & vrtSelectedItem
Next vrtSelectedItem
' Si l'utilisateur clique sur Annuler...
Else
' vous pouvez faire un traitement particulier (facultatif)
End If
End With
' libère la mémoire
Set fdlg = Nothing
End Sub |
Si vous désirez empêcher la sélection multiple des fichiers, vous pouvez recueillir le nom de fichier dans une variable de chaîne.
1 2 3 4 5 6 7
| Dim strItem As String ' le nom du fichier
' ...
.AllowMultiSelect = True ' Autorise la sélection multiple
' L'utilisateur a cliqué sur le bouton
If .Show = -1 Then
MsgBox "Le chemin est : " & strItem |
Vous pouvez utiliser les paramètres par défaut de la boîte de dialogue. Par exemple, la boîte Ouvrir un fichier texte que nous venons de créer aurait très bien pu avoir le titre par défaut, soit : 'Ouvrir' et elle aurait pu aussi utiliser les filtres par défaut d'Excel. Il suffit d'omettre les lignes
1 2 3
| .Title = "Ouvrir un fichier texte" ' le titre de la boîte de dialogue
.Filters.Clear ' efface tous les filtres par défaut
.Filters.Add "Fichier texte(.txt)", "*.txt" ' crée le filtre pour les fichiers texte |
Pour créer une boîte de dialogue par défaut Enregistrer sous ou Ouvrir, vous devez modifier le paramètre de la fonction FileDialog.
Pour une boîte de dialogue Ouvrir :
Set fdlg = Application.FileDialog(msoFileDialogOpen)
Voici la liste des différentes valeurs que peut prendre le paramètre msoFileDialogType :
- msoFileDialogFilePicker Permet à l'utilisateur de sélectionner un fichier.
- msoFileDialogFolderPicker Permet à l'utilisateur de sélectionner un dossier.
- msoFileDialogOpen Permet à l'utilisateur d'ouvrir un fichier.
- msoFileDialogSaveAs Permet à l'utilisateur d'enregistrer un fichier.
Note :
Si vous utilisez une autre valeur que msoFileDialogPicker, il vous sera impossible de modifier la porpirété Filters de votre boîte de dialogue.
Partager