FAQ MS-Access
FAQ MS-AccessConsultez toutes les FAQ
Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021
- [Access 2007] Comment ajouter plusieurs extensions sur un même filtre dans un FileDialog ?
- [Access 2007] Comment afficher une boite de dialogue Ouvrir ?
- [Access 2007] Comment manipuler les sélections multiples dans une boite de dialogue ?
- [Access 2007] Comment modifier le nom de fichier par défaut à l'ouverture d'une boite de dialogue ?
- [Access 2007] Comment modifier le répertoire par défaut d'une boite de dialogue ?
- [Access 2007] Comment modifier le texte des boutons d'une boite de dialogue ?
- [Access 2007] Comment modifier le titre d'une boite de dialogue ?
- [Access 2007] Comment modifier les filtres d'une boite de dialogue ?
- [Access 2007] Comment récupérer le nom du fichier sélectionné dans un FileDialog ?
- [Access 2007] Comment savoir si l'utilisateur clique sur le bouton Annuler dans un FileDialog ?
- [Access 2007] Pourquoi la méthode FileDialog échoue-t-elle ?
- [Access 2007] Pourquoi mes anciens paramètres sont-ils conservés dans mes boites de dialogue ?
Pour afficher plusieurs extensions de fichiers 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
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
' Ajoute les filtres pour fichiers textes et tous
With
.Filters
.Clear
.Add
"Images"
, "*.bmp;*.jpg;*.png"
, 1
.Add
"Tous"
, "*.*"
, 2
End
With
.InitialFileName
=
""
' Interdit la multisélection
.AllowMultiSelect
=
False
' Affiche la fenêtre et vérifie qu'un fichier a bien été choisi
If
.show
Then
MsgBox
.SelectedItems
(
1
)
End
If
End
With
End
Sub
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
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
' Ajoute les filtres pour fichiers textes et tous
With
.Filters
.Clear
.Add
"Fichiers Textes"
, "*.txt"
, 1
.Add
"Tous"
, "*.*"
, 2
End
With
' Aucun nom de fichier par défaut
.InitialFileName
=
""
' Interdit la multisélection
.AllowMultiSelect
=
False
' Affiche la fenêtre et vérifie qu'un fichier a bien été choisi
If
.show
Then
MsgBox
.SelectedItems
(
1
)
End
If
End
With
End
Sub
Pour autoriser les multisé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
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
.InitialFileName
=
"c:\"
'Interdit la multisélection
.AllowMultiSelect
=
True
' Affiche la fenêtre et vérifie qu'un fichier a bien été choisi
If
.show
Then
For
Each
strNomFichier In
.SelectedItems
MsgBox
strNomFichier
Next
End
If
End
With
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 chaîne de caractères.
Dim
oFD As
Object
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
.InitialFileName
=
"FAQAccess.zip"
' Affiche la fenêtre et vérifie qu'un fichier a bien été choisi
If
.show
Then
MsgBox
.SelectedItems
(
1
)
End
If
End
With
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.
.InitialFileName
=
"c:\"
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"
La propriété ButtonName permet de modifier le texte écrit dans le bouton servant à la validation du choix de l'utilisateur. Le bouton Annuler est quant à lui figé.
Exemple :
Dim
oFD As
FileDialog
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
.ButtonName
=
"Sélectionner"
If
.show
Then
' ...
End
If
End
With
La propriété Title de l'objet FileDialog permet de modifier le titre de la fenêtre.
Exemple :
Dim
oFD As
FileDialog
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
.Title
=
"Sélectionnez un fichier"
If
.show
Then
'...
End
If
End
With
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
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
' Paramètre la fenêtre Ouvrir
Set
oFD =
Application.FileDialog
(
msoFileDialogOpen)
With
oFD
If
.show
Then
MsgBox
.SelectedItems
(
1
)
End
If
End
With
Attention, la collection SelectedItems commence à 1.
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
Les constantes nécessaires à la création d'une boite de dialogue sont disponibles 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
)
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 peuvent être 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.
.InitialFileName
=
""