Developpez.com

Plus de 14 000 cours et tutoriels en informatique professionnelle à consulter, à télécharger ou à visionner en vidéo.

FAQ MS-AccessConsultez toutes les FAQ

Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireSpécificités d'Access 2007FileDialog : Boites de dialogue

Pour afficher plusieurs extensions de fichiers dans un filtre, il faut séparer les différentes extensions par des points-virgules.

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

Cet exemple montre comment afficher une boite de dialogue Ouvrir à l'aide de l'objet FileDialog.

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

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.

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

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.

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

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.

 
Sélectionnez

.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.

 
Sélectionnez

.InitialFileName = "c:\faqaccess.zip"
Créé le 27 juin 2006  par Tofalu

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 :

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

La propriété Title de l'objet FileDialog permet de modifier le titre de la fenêtre.

Exemple :

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

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).
 
Sélectionnez

    With .Filters
        .Add "Archive", "*.zip", 1
        .Add "Tous", "*.*", 2
    End With
Créé le 27 juin 2006  par Tofalu

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 :

 
Sélectionnez

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.

Créé le 27 juin 2006  par Tofalu

Lorsque l'utilisateur clique sur le bouton Annuler d'une boite de dialogue, la fonction Show qui l'a appelée retourne False.

 
Sélectionnez

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
Créé le 27 juin 2006  par Tofalu

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 :

 
Sélectionnez

	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 :

 
Sélectionnez

Dim oFD As Object
Set oFD = Application.FileDialog(1)
Créé le 27 juin 2006  par Tofalu

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.

 
Sélectionnez

    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.

 
Sélectionnez
    
    .InitialFileName = ""
Créé le 27 juin 2006  par Tofalu
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.