Événement Form.Filter (Access)

Se produit lorsque l’utilisateur ouvre une fenêtre de filtre en choisissant Filtrer par formulaire, Filtrer/trier avancé ou Filtrer par formulaire au serveur.

Syntaxe

expression. Filtre (Annuler, FilterType)

expressionVariable qui représente un objetForm.

Paramètres

Nom Requis/Facultatif Type de données Description
Cancel Obligatoire Entier Le paramètre détermine si vous souhaitez ouvrir la fenêtre de filtrage. Définir l’argument Annuler sur True (1) empêche la fenêtre de filtre de s’ouvrir. Vous pouvez également utiliser la méthode CancelEvent de l'objet DoCmd pour annuler l'ouverture de la fenêtre de filtrage.
FilterType Obligatoire Entier La fenêtre de filtre de l'utilisateur essaie d'ouvrir. L’argument FilterType peut être l’une des constantes intrinsèques suivantes :
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

Remarques

Pour exécuter une macro ou une procédure événementielle lorsque cet événement se produit, définissez la propriété OnFilter sur le nom de la macro ou [procédure événementielle].

Utilisez l’événement Filter pour :

  • Supprimer tout ancien filtre du formulaire. Pour ce faire, définissez la propriété Filter ou ServerFilter du formulaire sur une chaîne de longueur nulle ("") dans la filtre de macro ou une procédure événementielle. Ceci est particulièrement utile si vous voulez vous assurer que des critères superflus n’apparaissent pas dans le nouveau filtre. Par exemple, lorsque vous utilisez la fonctionnalité Filtrer par sélection , les critères que vous utilisez (le texte sélectionné dans le formulaire) sont ajoutés à l’expression de clause WHERE de la propriété Filter ou ServerFilter et apparaissent à la fois dans les fenêtres Filtrer par formulaire et Filtre/tri avancés ou Filtrer par formulaire au serveur . Vous pouvez supprimer ces anciens critères à l'aide de l'événement Filter.

  • Entrez les paramètres par défaut pour le nouveau filtre. Pour ce faire, définissez la propriété Filter ou ServerFilter avec ces critères. Par exemple, vous pouvez souhaiter que tous les filtres d’un formulaire Produits affichent uniquement les produits actuels (produits pour lesquels le contrôle Abandonné dans le formulaire Produits n’est pas sélectionné).

  • Utiliser votre propre fenêtre filtre personnalisé au lieu d'une des fenêtres de filtre Microsoft Access. Lorsque l'événement Filter se produit, vous pouvez ouvrir votre propre formulaire et utiliser les entrées de ce formulaire pour définir la propriété Filter ou ServerFilter et filtrer le formulaire d'origine. Lorsque l’utilisateur ferme ce formulaire personnalisé, définissez la propriété FilterOn ou ServerFilterByForm du formulaire d’origine sur True (1) pour appliquer le filtre. L’annulation de l’événement Filtre empêche la fenêtre de filtre Access de s’ouvrir.

  • Empêcher certains contrôles du formulaire d'apparaître ou utilisé dans la fenêtre Filtrer par formulaire ou Filtrer par formulaire sur serveur. Si vous masquez ou désactivez un contrôle dans la procédure ou la macro d’événement de filtre , le contrôle est masqué ou désactivé dans la fenêtre Filtrer par formulaire ou Filtrer par serveur par formulaire et ne peut pas être utilisé pour définir des critères de filtre. Vous pouvez ensuite utiliser l'événement ApplyFilter pour afficher ou activer ce contrôle une fois que le filtre est appliqué, ou lorsque le filtre est supprimé du formulaire.

Exemple

L’exemple suivant montre comment désactiver le contrôle TotalDue sur un formulaire de commandes lorsque l’utilisateur tente de créer un filtre, de sorte que l’utilisateur ne puisse pas filtrer sur ce champ. Tous les enregistrements qui ont une valeur TotalDue et qui répondent aux autres critères de filtre seront toujours affichés dans le formulaire filtré. Cet exemple oblige aussi l'utilisateur à utiliser la fenêtre Filtrer par formulaire et non la fenêtre Filtre/tri avancé.

Pour essayer cet exemple, ajoutez la procédure événementielle suivante à un formulaire Commandes qui contient un contrôle TotalDue . Essayez de créer un filtre à l’aide de la fenêtre Filtre/tri avancé qui utilise le contrôle TotalDuvet . Essayez aussi de créer le même filtre à l'aide de la fenêtre Filtrer par formulaire.

Private Sub Form_Filter(Cancel As Integer, FilterType As Integer) 
    If FilterType = acFilterByForm Then 
        Forms!Orders!TotalDue.Enabled = False 
    ElseIf FilterType = acFilterAdvanced Then 
        MsgBox "The best way to filter this form is to use the " _ 
            & "Filter By Form command or toolbar button.", vbOKOnly + vbInformation 
        Cancel = True 
    End If 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.