| auteur :Christophe Warin |
Pour afficher plusieurs extensions de fichier dans un filtre,
il faut séparer les différentes extensions par des points-virgules.
Private Sub cmdAjouter_Click()
Dim strchemin As String
Dim oFD As Object
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
With .Filters
.Clear
.Add "Images", "*.bmp;*.jpg;*.png", 1
.Add "Tous", "*.*", 2
End With
.InitialFileName = ""
.AllowMultiSelect = False
If .show Then
MsgBox .SelectedItems(1)
End If
End With
End Sub |
|
| auteur :Christophe Warin |
Cet exemple montre comment afficher une boite de dialogue Ouvrir à l'aide de l'objet FileDialog.
Private Sub cmdAjouter_Click()
Dim strchemin As String
Dim oFD As Object
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
With .Filters
.Clear
.Add "Fichiers Textes", "*.txt", 1
.Add "Tous", "*.*", 2
End With
.InitialFileName = ""
.AllowMultiSelect = False
If .show Then
MsgBox .SelectedItems(1)
End If
End With
End Sub |
|
| auteur :Christophe Warin |
Pour autoriser les multi-sélections de fichiers ou de répertoires dans une boite de dialogue, il faut attribuer la
valeur True à la propriété AllowMultiSelect de l'objet FileDialog.
Les éléments sélectionnés seront ensuite récupérés en parcourant la collection SelectedItems.
Dim strchemin As String
Dim oFD As FileDialog
Dim strNomFichier As Variant
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
.InitialFileName = "c:\"
.AllowMultiSelect = True
If .show Then
For Each strNomFichier In .SelectedItems
MsgBox strNomFichier
Next
End If
End With |
|
| auteur :Christophe Warin |
La propriété InitialFileName correspond au nom du fichier affiché dans la zone correspondante à l'ouverture de la boite.
Vous pouvez le modifier avant l'appel de la méthode Show. Il s'agit d'une chaine de caractères.
Dim oFD As Object
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
.InitialFileName = "FAQAccess.zip"
If .show Then
MsgBox .SelectedItems(1)
End If
End With |
|
| auteur :Christophe Warin |
Qu'il s'agisse d'une fenêtre de sélection de fichier ou de répertoire, la méthode est la même :
passer le nom du répertoire dans la propriété InitialFileName de l'objet FileDialog.
Comment combiner alors le répertoire à visiter et le nom du fichier recherché par défaut pour une boite Ouvrir ?
Réponse : en concaténant les deux.
.InitialFileName = "c:\faqaccess.zip" |
|
| auteur :Christophe Warin |
La propriété ButtonName permet de modifier le texte écrit dans le bouton servant à la validation du choix de l'utilisateur.
Le bouton Annuler quant à lui est figé.
Exemple :
Dim oFD As FileDialog
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
.ButtonName = "Sélectionner"
If .show Then
End If
End With |
|
| auteur :Christophe Warin |
La propriété Title de l'objet FileDialog permet de modifier le titre de la fenêtre.
Exemple :
Dim oFD As FileDialog
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
.Title = "Sélectionnez un fichier"
If .show Then
End If
End With |
|
| auteur :Christophe Warin |
La collection Filters stocke les filtres à prendre en compte.
La méthode Filedialog.Filters.Add description, extension, position permet d'en ajouter.
- Description : Libellé du filtre (exemple : Archive)
- Extension : Extension des fichiers (exemple : *.zip)
- Position : Ordre d'affichage (commence à 1)
With .Filters
.Add "Archive", "*.zip", 1
.Add "Tous", "*.*", 2
End With |
|
| auteur :Christophe Warin |
Les développeurs VB6 s'attendent à retrouver la propriété FileName des CommonDialog.
Malheureusement cette propriété n'existe pas et il faut traiter le choix d'un seul fichier comme une sélection multiple :
Dim oFD As Object
Set oFD = Application.FileDialog(msoFileDialogOpen)
With oFD
If .show Then
MsgBox .SelectedItems(1)
End If
End With |
Attention, la collection SelectedItems commence à 1.
|
| auteur :Christophe Warin |
Lorsque l'utilisateur clique sur le bouton Annuler d'une boite de dialogue,
la fonction Show qui l'a appelée retourne False.
Dim oFD As FileDialog
Set oFD = Application.FileDialog(msoFileDialogOpen)
If oFD.show Then
MsgBox "Vous n'avez pas annulé"
Else
MsgBox "Vous avez annulé"
end if |
|
| auteur :Christophe Warin |
Les constantes nécessaires à la création d'une boite de dialogue sont disponible dans la référence
Microsoft Office 12 Object Library.
Si ce code échoue :
Set oFD = Application.FileDialog(msoFileDialogOpen)
cela signifie que la référence n'a pas été ajoutée au projet. Deux solutions :
1. Ajouter la référence (Menu Outils)
2. Remplacer les constantes par leur valeur :
- msoFileDialogFilePicker : 3
- msoFileDialogFolderPicker : 4
- msoFileDialogOpen: 1
- msoFileDialogSaveAs : 2
Exemple :
Dim oFD As Object
Set oFD = Application.FileDialog(1) |
|
| auteur :Christophe Warin |
Lorsque vous appelez une boite de dialogue c'est un composant Windows qui réagit. Or, celui-ci est rappelé dans le dernier état où vous l'avez laissé.
Les conséquences sont telles que par exemple, le nom du fichier par défaut est conservé, et les filtres que vous créez viennent s'ajouter aux précédents.
Prenez donc bien garde de réinitialiser les éléments que vous manipulez. N'oubliez pas, par exemple, de vider la collection Filters avant utilisation sans quoi les filtres s'accumulent.
With .Filters
.Clear
.Add "Images", "*.bmp;*.jpg;*.png", 1
.Add "Tous", "*.*", 2
End With |
Ou bien encore vider le fichier par défaut si vous ne vous en servez pas.
|
Consultez les autres F.A.Q's
|
|