formateur informatique

Filtrer les enregistrements sur un formulaire Access

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Filtrer les enregistrements sur un formulaire Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Filtrer les enregistrements d'un formulaire

L'objectif de cette nouvelle astuce Access est de démontrer comment il est possible de filtrer les enregistrements, directement sur le formulaire, sans utiliser de sous formulaire.

Filtrer les enregistrements sur un formulaire Access par le biais de critères recoupés avec deux listes déroulantes reliées entre elles

Dans l'exemple finalisé illustré par la capture, l'utilisateur émet un choix sur le département à l'aide d'une première liste déroulante. Puis, il restreint le champ d'action en précisant la ville depuis une seconde liste déroulante reliée à la première. Aussitôt, tous les enregistrements concordants sont filtrés juste en-dessous, directement sur le formulaire. L'idée consiste à exploiter un formulaire tabulaire présentant les lignes les unes en dessous des autres et non les unes après les autres.



Source et procédure
Pour la démonstration de cette astuce, nous proposons de récupérer une base de données hébergeant ce formulaire tabulaire entre autres. Comme l'indique le volet de navigation sur la gauche de l'écran, cette base de données est constituée d'une table, d'une requête et d'un formulaire. La table archive des activités de sorties référencées sur leur désignation, département, ville et type d'activité.

Requête Access de sélection sur une table pour source de données au formulaire tabulaire

La première astuce pour aboutir cette solution réside dans l'exploitation d'une requête comme source de données du formulaire tabulaire. Nous l'avons ainsi construit à l'aide de l'assistant. Si vous ouvrez la requête en mode création, vous constatez qu'elle se contente pour le moment de restituer toutes les informations de la table. Aucun critère n'est en effet posé.
  • Dans le volet de navigation, double cliquer sur le formulaire f_source pour l'exécuter,
Liste de tous les enregistrements de la table Access sur un formulaire tabulaire par une requête sélection en source de données

Les 896 enregistrements de la table sont listés dans la partie grisée du formulaire grâce à la requête r_source. Vous pouvez choisir un département avec la première liste déroulante et une ville qui lui appartient avec la seconde. Mais à ce stade, ces actions ne produisent aucun effet sur les résultats restitués. Il s'agit de l'enjeu de cette astuce.
  • Tout à fait à gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, choisir le mode Création,
Nous basculons ainsi dans la vue en conception du formulaire. Les trois champs permettant la restitution de tous les enregistrements sont placés dans la zone Détail. Si vous sélectionnez tour à tour les deux listes déroulantes et consultez leur propriété Contenu dans l'onglet Données de leur feuille de Propriétés, vous visualisez leurs syntaxes :

SELECT DISTINCT s_dep FROM t_sorties;
SELECT DISTINCT s_ville FROM t_sorties WHERE [s_dep]=[dep];


Par une syntaxe Sql, la première sélectionne les départements uniques issus de la table t_sorties. La seconde restitue les villes uniques de ce département grâce à une clause Where. C'est ainsi que la dépendance est créée entre les deux listes déroulantes.



Filtrer les résultats
Pour isoler uniquement les enregistrements correspondant aux deux choix émis par le biais des deux listes déroulantes, l'astuce est triviale. Elle consiste à retravailler la requête utilisée comme source de données par le formulaire tabulaire. Deux critères doivent être émis sur les champs respectifs du département et de la ville. Ces critères doivent correspondre aux valeurs choisies par l'utilisateur dans ces listes.
  • Dans le volet de navigation, cliquer droit sur la requête r_source,
  • Dans le menu contextuel, choisir le mode Création,
  • Dans la grille de requête, cliquer droit dans la zone Critères du champ s_dep,
  • Dans le menu contextuel, choisir la commande Créer,
Nous affichons ainsi le générateur d'expression pour établir la correspondance entre le champ du département et ce même département choisi par l'utilisateur avec la première liste déroulante sur le formulaire tabulaire.
  • Dans la liste de gauche, déployer complètement l'arborescence des formulaires,
  • Sélectionner alors le formulaire f_source,
  • Dans la liste du centre, double cliquer sur le champ dep de la liste déroulante,
Expression de correspondance entre une liste déroulante de formulaire Access et un champ de requête dynamique

L'expression de correspondance se construit ainsi automatiquement dans la partie supérieure du générateur d'expression.
  • Cliquer sur le bouton Ok du générateur pour valider l'expression,
La syntaxe de correspondance apparaît désormais dans la zone Critères du champ s_dep :

[Formulaires]![f_source]![dep]
  • Copier cette syntaxe avec le raccourci clavier CTRL + C,
  • Cliquer dans la zone Critères du champ s_Ville,
  • Taper tout d'abord l'expression suivante : Comme "*" &,
  • Ajouter un espace et coller (CTRL + V) la précédente syntaxe copiée,
  • Dans les derniers crochets, remplacer le nom du champ dep par Ville,
Ce nom désigne la seconde liste déroulante sur le formulaire tabulaire. La syntaxe finalisée est donc la suivante : Comme "*" & [Formulaires]![f_source]![Ville].



Grâce à l'opérateur Comme suivi du symbole de l'astérisque, nous cherchons à trouver tous les enregistrements pour lesquels le champ de la ville contient celle désignée par la liste déroulante. Si elle n'est pas définie, l'étoile permet de considérer tous les enregistrements. Donc, la simple sélection d'un département doit suffire à restituer toutes les informations concordantes dans le formulaire.
  • Valider la syntaxe avec la touche Entrée du clavier,
  • Enregistrer la requête avec le raccourci clavier CTRL + S,
  • Puis, fermer cette dernière en cliquant sur la croix de son onglet,
Nous l'avons compris au travers de précédentes formations, pour que le formulaire actualise son affichage, les requêtes doivent être recalculées aux changements de sélections effectués dans les listes déroulantes.
  • Revenir sur le formulaire en mode Création,
  • Sélectionner la première liste déroulante des départements,
  • Activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer dans la zone de son événement Sur changement pour l'activer,
  • A l'extrémité droite de la zone, cliquer sur son petit bouton à trois points,
  • Dans la boîte de dialogue, choisir Générateur de code et valider par Ok,
Nous basculons ainsi dans l'éditeur de code Visual Basic Access, entre les bornes de la procédure événementielle dep_Change.
  • Entre les bornes de cette procédure, saisir les deux instructions VBA suivantes :
Private Sub dep_Change()
Ville.Value = ""
DoCmd.Requery

End Sub


Tout d'abord, grâce à la propriété Value de l'objet Ville, nous effaçons le précédent potentiel choix de ville dans la seconde liste déroulante, au changement de département. Ensuite, grâce à la méthode Requery de l'objet DoCmd (Do Command), nous forçons l'actualisation des requêtes engagées sur ce formulaire tabulaire.
  • Revenir sur le formulaire en conception,
  • Sélectionner désormais la seconde liste déroulante, celle des villes,
  • Dans la feuille de propriétés, cliquer dans la zone de son événement Sur changement,
  • A son extrémité droite, cliquer sur le petit bouton à trois points,
  • Dans la boîte de dialogue qui suit, choisir Générateur de code et valider par le bouton Ok,
Nous sommes de retour dans l'éditeur de code Visual Basic Access, mais cette fois entre les bornes de la procédure événementielle Ville_Change.
  • Y inscrire l'instruction suivante :
Private Sub Ville_Change()
DoCmd.Requery
End Sub


De la même façon donc, nous forçons le recalcul des requêtes au changement de ville. C'est ainsi que le formulaire tabulaire pourra actualiser son affichage pour présenter l'extraction affinée des résultats.
  • Enregistrer les modifications (CTRL + S) puis fermer l'éditeur VBA Access,
  • De retour sur le formulaire, l'enregistrer à son tour,
  • L'exécuter ensuite à l'aide de la touche F5 du clavier,
  • Choisir un département grâce à la première liste déroulante,
Comme vous pouvez le voir, la liste des enregistrements concordants s'actualise et se restreint. C'est notre second critère utilisant l'opérateur Comme et le symbole de l'astérisque qui permet d'ignorer la condition sur la ville lorsque celle-ci n'est pas définie.
  • Avec la seconde liste déroulante, choisir une ville de ce département,
Filtrer les enregistrements Access sur un formulaire tabulaire grâce aux choix en cascade dans deux listes déroulantes reliées entre elles

L'extraction est parfaitement actualisée en temps réel. Seules subsistent les activités de sorties correspondant aux choix du département et de la ville associée. Et cette solution est aboutie directement depuis un formulaire sans faire appel à un sous-formulaire attaché à une source de données dynamique.

A l'occasion de prochaines astuces, nous exploiterons ces travaux pour voir comment il est possible de surligner intégralement la ligne de l'enregistrement cliqué directement sur le formulaire. Nous apprendrons aussi à extraire toutes les informations de détail associées dans les zones de saisie situées juste au-dessus. Enfin, nous découvrirons l'astuce permettant de livrer le résultat de synthèse sur le nombre d'enregistrements effectivement concordants avec ces conditions recoupées.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn