Partager via


Appliquer un filtre pour ouvrir un formulaire ou un rapport

Lorsque vous utilisez un code Visual Basic pour Applications (VBA) pour ouvrir un formulaire ou un rapport, vous pouvez spécifier les enregistrements à afficher. Vous pouvez spécifier les enregistrements à afficher dans le formulaire ou le rapport de plusieurs façons. Une approche courante consiste à afficher une boîte de dialogue personnalisée dans laquelle l'utilisateur entre les critères de la requête sous-jacente du formulaire ou du rapport. Pour obtenir les critères, faites référence aux contrôles dans la boîte de dialogue. Les sections suivantes décrivent les trois manières dont vous pouvez utiliser les critères entrés dans une boîte de dialogue personnalisée pour filtrer les enregistrements.

Utilisation de l’argument wherecondition

L’argument wherecondition de la méthode ou de l’action OpenForm ou OpenReport est le moyen le plus simple d’obtenir des critères dans les situations où un utilisateur ne fournit qu’une seule valeur. Par exemple, vous pouvez afficher un formulaire qui invite l'utilisateur à sélectionner un ID de commande pour la facture à imprimer. Si vous utilisez une procédure d'événement, vous pouvez appliquer un filtre qui affiche uniquement un enregistrement, en ajoutant un argument à la méthode OpenReport, comme indiqué dans la ligne de code suivante :

DoCmd.OpenReport "Invoice", acViewPreview, , "OrderID = " & OrderID 

Le "OrderID = " dans l’expression de filtre fait référence au champ OrderID dans la requête sous-jacente du rapport de facture. OrderID sur le côté droit de l’expression fait référence à la valeur que l’utilisateur a sélectionnée dans la liste OrderID dans la boîte de dialogue. L’expression concatène les deux, ce qui fait que le rapport inclut uniquement la facture de l’enregistrement sélectionné par l’utilisateur.

L’argument wherecondition est appliqué uniquement par la procédure d’événement spécifiée pour l’événement OnClick du bouton qui exécute la méthode OpenForm ou OpenReport. Cela vous permet d’utiliser un certain nombre de boîtes de dialogue différentes pour ouvrir le même formulaire ou rapport et d’appliquer différents ensembles de critères en fonction de ces actions que l’utilisateur veut effectuer. Par exemple, l'utilisateur peut vouloir imprimer une facture pour un client ou afficher les commandes uniquement pour un produit donné.

Utilisez l’argument wherecondition pour définir des critères pour plusieurs champs, mais si c’est le cas, le paramètre de l’argument devient rapidement long et compliqué. Dans ce cas, il peut être plus facile de spécifier des critères dans une requête.

Utilisation d’une requête comme filtre

Une requête distincte, parfois appelée requête de filtre, peut faire référence aux contrôles de votre boîte de dialogue pour obtenir ses critères. Avec cette technique, vous filtrez les enregistrements d’un formulaire ou d’un rapport en définissant l’argument filtername de la méthode ou action OpenForm ou OpenReport sur le nom de la requête de filtre créée. La requête de filtre doit inclure toutes les tables de la source d’enregistrement du formulaire ou rapport que vous ouvrez. En outre, la requête de filtre doit inclure tous les champs du formulaire ou rapport que vous ouvrez, ou bien vous devez définir sa propriété OutputAllFields sur Oui.

Après avoir créé et enregistré la requête à utiliser en tant que filtre, définissez l’argument filtername de la méthode ou action OpenReport sur le nom de la requête de filtre. L’argument filtername s’applique à la requête de filtre spécifiée à chaque exécution de la méthode OpenReport.

L’utilisation d’une requête en tant que filtre pour définir les critères offre des avantages similaires à ceux de l’utilisation de l’argument wherecondition de la méthode OpenForm ou OpenReport. Une requête de filtre vous offre la même flexibilité d’utilisation de plusieurs boîtes de dialogue pour ouvrir le même formulaire ou rapport et d’application de différents ensembles de critères en fonction des actions que l’utilisateur veut effectuer.

Référence directe aux contrôles de boîte de dialogue dans la requête sous-jacente d’un formulaire ou d’un état

Vous pouvez également faire référence aux contrôles de la boîte de dialogue directement dans la requête sous-jacente d’un formulaire ou d’un rapport, plutôt que via les arguments de la méthode OpenForm ou OpenReport. Avec cette technique, la méthode ou action OpenForm ou OpenReport ne nécessite aucun argument wherecondition ou filtername. En effet, chaque fois que vous ouvrez un formulaire ou un rapport, sa requête sous-jacente recherche la boîte de dialogue pour obtenir ses critères. Toutefois, si un utilisateur ouvre le formulaire ou le rapport dans la fenêtre Base de données et non via votre boîte de dialogue, Access affiche une boîte de paramètres qui invite l'utilisateur à entrer la valeur de la boîte de dialogue.

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.