formateur informatique

Filtrer un formulaire Access au choix dans une liste

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Filtrer un formulaire Access au choix dans une liste
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 un formulaire tabulaire

Cette nouvelle astuce Access montre comment filtrer un formulaire tabulaire au choix d'une valeur dans une liste déroulante.

Filtrer les enregistrements du formulaire tabulaire Access au choix dans une liste déroulante



Source et présentation
Pour les besoins des démonstrations, nous proposons de récupérer une base de données offrant déjà quelques outils aboutis à l'occasion de précédentes astuces. En consultant le volet de navigation sur la gauche de l'écran, vous constatez que cette base de données est constituée d'une table, d'une requête et d'un formulaire.
  • Double cliquer sur le formulaire F_Film pour l'exécuter,
En mode tabulaire, il énumère les films recensés dans la table T_Films. Il a été construit à partir de la requête R_Film. Cette dernière exploite la fonction Access Choisir pour traduire les catégories numériques dans leur équivalent textuel. C'est à l'occasion d'une précédente astuce que nous l'avons conçue.



Liste déroulante de choix
Pour atteindre l'objectif de cette astuce, nous devons ajouter une liste déroulante sur ce formulaire. Elle doit proposer de choisir l'une des catégories de film. A validation de ce choix, le formulaire doit réactualiser ses résultats pour ne restituer que les films du genre désigné. Cette liste déroulante doit se nourrir d'une source proposant ces genres au format texte. Nous proposons donc de créer une copie de la requête R_Film.
  • Dans le volet de navigation, cliquer droit sur la requête R_Film,
  • Dans le menu contextuel, choisir la commande Copier,
  • Dès lors, cliquer droit sur un emplacement vide du volet de navigation,
  • Dans le menu contextuel, choisir la commande Coller,
  • Dans la boîte de dialogue qui suit, la nommer R_Liste et valider par Ok,
  • Désormais, à gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste des propositions, choisir le mode Création,
Nous basculons ainsi dans la vue en conception du formulaire.
  • Dans la section Contrôles du ruban Création, choisir le contrôle Zone de liste déroulante,
  • Le tracer dans l'entête du formulaire à droite de l'étiquette Genre,
Une boîte de dialogue apparaît. Il s'agit de l'assistant. Son rôle est de simplifier la création de cette liste et de définir la liaison avec sa source de données.

Assistant création de liste déroulante sur formulaire Access
  • Dans cette première étape, conserver le premier choix coché et cliquer sur le bouton Suivant,
  • Dans cette deuxième étape, cocher la case Requête,
  • Puis, sélectionner la requête R_Liste dans la zone du dessus,
  • Cliquer de nouveau sur le bouton Suivant pour progresser,
Liaison entre une requête et une liste déroulante de formulaire Access
  • Dans cette troisième étape, sélectionner le champ desc_genre,
  • Puis, cliquer sur le bouton à la flèche orientée vers la droite,
Définir le champ de la requête pour alimenter la liste déroulante du formulaire Access

Ainsi, nous le basculons dans la liste de droite. Ce sont désormais ses informations qui serviront à remplir la liste déroulante.
  • Cliquer une fois encore sur le bouton Suivant,
  • Dans cette nouvelle étape, choisir un tri croissant sur le champ desc_genre,
Tri croissant pour la liste déroulante du formulaire Access

De cette manière, les types de film y seront organisés par ordre alphabétique croissant.
  • Cliquer de nouveau sur le bouton Suivant,
Cette étape permet de configurer la largeur de la liste déroulante. Ce réglage peut s'opérer en aval par le biais de la feuille de propriétés. Nous choisissons donc de l'ignorer.
  • Cliquer sur le bouton Suivant pour atteindre l'avant dernière étape,
  • Conserver la case cochée par défaut,
Il n'est pas nécessaire en effet de stocker la valeur du choix dans un champ de table. Ce choix est volatile. Il doit seulement permettre de faire réagir le formulaire pour filtrer les films en fonction du genre choisi par l'utilisateur.

Ne pas stocker la valeur de la liste déroulante dans un champ de table Access
  • Cliquer sur le bouton Suivant pour accéder à la dernière étape de l'assistant création,
  • Dans la zone de texte, inscrire l'intitulé Choix genre pour l'étiquette de la liste déroulante,
  • Puis, cliquer sur le bouton Terminer pour procéder à la création,
  • De retour sur le formulaire, activer l'onglet Autres de la feuille de propriétés,
  • Dans sa propriété Nom, inscrire l'intitulé Choix_genre puis valider par la touche Entrée,
Il est toujours important d'attribuer des noms explicites aux objets d'un formulaire. C'est par ces noms que nous pouvons les désigner et les piloter. Il apparaît ensuite opportun de placer l'étiquette juste au-dessus de la liste déroulante. Les attributs de format des autres étiquettes peuvent lui être répliqués grâce à l'outil du pinceau dans le ruban Accueil. Enfin et comme vous le savez, le ruban Organiser offre des outils permettant d'ajuster les alignements par rapport aux autres contrôles.
  • Enfoncer la touche F5 du clavier pour exécuter le formulaire,
  • Dès lors, déployer la liste déroulante des genres,
Doublons et propositions répétées dans la liste déroulante du formulaire Access

Comme vous pouvez le voir, le résultat est loin d'être satisfaisant. Les genres sont répétés autant de fois que de films y sont associés dans la requête source. Ce phénomène est tout à fait normal et nous devons y remédier.



Liste de choix uniques
Pour éliminer les redondances proposées par la liste déroulante ainsi construite, nous pouvons directement influer sur sa propriété Contenu par le biais de sa feuille de propriétés.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur la liste déroulante Choix_genre,
  • Dès lors, activer l'onglet Données de sa feuille de propriétés,
Sa propriété Contenu livre la syntaxe construite par l'assistant liste déroulante :

SELECT [R_Liste].[desc_genre] FROM R_Liste ORDER BY [desc_genre];

En l'état, elle restitue tous les genres extraits par la requête dans un ordre croissant. Nous devons éliminer ces redondances grâce à la clause SQL Distinct.
  • Adapter la syntaxe de la propriété Contenu comme suit :
SELECT DISTINCT [R_Liste].[desc_genre] FROM R_Liste ORDER BY [desc_genre];
  • Puis, la valider à l'aide de la touche Entrée du clavier,
  • Exécuter le formulaire et déployer de nouveau la liste déroulante,
Liste déroulante de formulaire Access purgée de ses doublons grâce à la clause Distinct de la requête SQL

Cette fois, seuls les genres effectivement distincts sont proposés. Il est à noter que nous aurions aussi pu effectuer ce réglage en conception de la requête R_Liste, grâce à sa feuille de propriétés. Désormais, si les données source évoluent avec de nouveaux films dans de nouveaux genres, ces derniers seront automatiquement intégrés dans la liste déroulante.



Filtrer le formulaire au choix dans la liste
Ce formulaire tabulaire est conçu sur la requête R_Film. Cette dernière doit restreindre ses propositions en fonction du choix émis par le biais de la liste déroulante. Un critère de correspondance doit donc être établi entre le champ desc_genre de la requête et la liste du formulaire.
  • Revenir sur le formulaire en mode création,
  • Dans le volet de navigation, cliquer droit sur la requête R_Film,
  • Dans le menu contextuel, choisir le mode Création,
  • Dès lors, cliquer droit dans la zone Critères du champ desc_genre,
Il s'agit du champ que nous avions construit à l'aide de la fonction Choisir pour retranscrire en textes les types de film encodés en version numérique.
  • Dans le menu contextuel, choisir la commande Créer,
Générateur d-expression pour requête de correspondance avec un formulaire Access filtrant

Nous affichons ainsi le générateur d'expression.
  • En haut de ce générateur, commencer la syntaxe comme suit : Comme "*" &,
Bien que les choix de genres soient stricts, aucun d'entre eux ne sera défini au premier chargement du formulaire. L'opérateur Comme suivi du symbole de l'astérisque permet de considérer comme équivalent tout ce qui suit. Donc, si aucun genre n'est défini, ce sont tous les films qui seront restitués.
  • Dans la liste de gauche, déployer l'arborescence des formulaires,
  • Puis, sélectionner le formulaire F_Film,
  • Dans la liste du centre, double cliquer sur la liste déroulante Choix_genre,
Lien entre un champ de requête Access et une liste déroulante de formulaire

Nous bâtissons ainsi l'expression de correspondance suivante :

Comme "*" & Formulaires![F_Film]![Choix_genre]

Les enregistrements de la requête seront filtrés en fonction du choix émis sur le genre par le biais de la liste déroulante du formulaire. Comme ce formulaire est construit sur cette requête, la proposition des films devrait s'affiner en cohérence.
  • Cliquer sur le bouton Ok du générateur d'expression pour valider la syntaxe,
  • Enregistrer la requête avec le raccourci clavier CTRL + S,
  • Puis, la fermer en cliquant sur la croix de son onglet,
De retour sur le formulaire, si vous choisissez un genre avec la liste déroulante, la liste des films ne réagit malheureusement pas.



Actualiser le formulaire au choix dans la liste
Le phénomène que nous venons de constater est tout à fait naturel. Nous devons indiquer à Access de réagir lorsque l'utilisateur émet un choix par le biais de la liste déroulante. En d'autres termes, il doit actualiser les enregistrements de sa source (La requête R_Film) sur l'événement de ce changement de valeur.
  • Revenir sur le formulaire en mode création,
  • Sélectionner la liste déroulante Choix_genre,
  • Dès lors, 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,
  • Cliquer ensuite sur le petit bouton situé à l'extrémité droite de cette zone,
  • Dans la boîte de dialogue qui suit, choisir le générateur de macro et valider par Ok,
  • Dans l'éditeur de macro Access, déployer la liste déroulante qui se propose,
  • Dans la liste des propositions, choisir l'action AfficherTousEnreg,
C'est elle qui ordonne le recalcul et l'actualisation des données, ici en l'occurrence, au choix d'une nouvelle valeur dans la liste donc.
  • Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
  • De retour sur le formulaire, l'enregistrer à son tour (CTRL + S) puis l'exécuter (F5),
  • Déployer la liste déroulante et choisir un genre,
Filtrer un formulaire Access au choix d-une valeur dans une liste déroulante

Instantanément, tous les films sont filtrés sur le type choisi par l'utilisateur.

 
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