formateur informatique

Extractions Access sur trois listes déroulantes recoupées

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Extractions Access sur trois listes déroulantes recoupées
Livres à télécharger


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


    Inscription Newsletter
Sujets que vous pourriez aussi aimer :


Extraire sur des critères recoupés

Avec l'astuce précédente, nous avons appris à relier entre elles trois listes déroulantes. Avec cette nouvelle astuce, nous entendons profiter de ce mécanisme pour offrir l'extraction affinée des résultats sur ces critères recoupés.

Extraction multicritère Access en fonction des choix réalisés avec trois listes déroulantes sur un formulaire

Dans l'exemple illustré par la capture, nous travaillons sur une base de données des activités de sorties. Un premier critère est posé sur le département, un deuxième sur la ville et un troisième sur le type d'activité. Sur cette table de près de 1000 enregistrements, seules les quelques activités correspondant effectivement à ces trois choix recoupés sont extraites dans un sous formulaire.



Source et procédure
Pour la démonstration de cette astuce, cette base de données et les travaux précédents sont nécessaires. Deux éléments composent cette base de données. Ils sont représentés dans le volet de navigation sur la gauche de l'écran. Il s'agit de la table t_sorties et du formulaire f_villes.
  • Double cliquer sur le formulaire f_villes pour l'exécuter,
Nous retrouvons les trois listes dépendantes que nous avons construites lors de l'astuce précédente. Vous pouvez donc choisir un département avec la première liste déroulante. Dès lors, la deuxième liste se charge des villes correspondantes. Au choix de l'une d'entre elles, ce sont toutes les activités disponibles pour le lieu sélectionné qui sont proposées dans la troisième et dernière liste déroulante.

Requête multicritère
Sous ces trois listes, vous avez remarqué la présence d'un sous formulaire. Pour l'instant, il reste muet. Mais c'est bien lui qui doit recevoir les résultats de l'extraction en fonction des choix émis par l'utilisateur par le biais de ces listes déroulantes.

Ce sous formulaire doit se nourrir des résultats d'une requête. Cette requête doit utiliser les choix de l'utilisateur comme critères à recouper pour produire le filtre sur les enregistrements. Mais elle doit aussi permettre d'extraire les données lorsque toutes les conditions ne sont pas encore définies. Concrètement et par exemple, au choix d'un département seulement, ce sont toutes les activités de sorties correspondantes qui doivent être affichées dans le sous formulaire. Nous allons donc exploiter une astuce que nous avions démontrée dans un précédent volet. Elle consiste à autoriser des critères vides.

Pour information, ces trois listes déroulantes se nomment respectivement dep, villes et activites. Nous avons besoin de ces noms pour établir la jonction entre le formulaire et la requête.
  • Fermer le formulaire en cliquant sur la croix de son onglet,
  • En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
  • Dans la section Requêtes du ruban, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui suit, cliquer sur le bouton Ajouter puis sur le bouton Fermer,
En effet, la table t_sorties est seule dans cette base de données. Elle était donc sélectionnée par défaut. Nous l'avons ainsi ajoutée dans l'éditeur de requête, dans sa représentation schématisée.
  • Dans cette représentation, cliquer sur le champ s_rs pour le sélectionner,
  • Avec la touche MAJ enfoncée, cliquer sur le dernier champ s_Ville,
Ainsi, nous les sélectionnons tous à l'exception du champ de la clé primaire s_id.
  • Glisser cette sélection vers le bas sur la grille de requête,
Nous indiquons ainsi quels sont les éléments que nous souhaitons afficher à l'extraction.

Ajouter les champs de table Access dans la grille de requête pour définir les critères à recouper



Nous devons maintenant poser les critères en concordance avec les choix effectués par l'utilisateur depuis le formulaire à l'aide des listes déroulantes. Par esprit de cohérence et d'organisation, il peut être opportun de glisser le champ s_Ville devant le champ s_act. Le premier critère doit être posé sur le champ s_dep.
  • Cliquer avec le bouton droit de la souris dans la zone Critères du champ s_dep,
  • Dans le menu contextuel, choisir l'option Créer,
Nous affichons ainsi le générateur d'expression. C'est lui qui va nous permettre de descendre jusqu'au contrôle dep du formulaire pour établir la correspondance dynamique.
  • Dans la liste de gauche, déployer l'arborescence des formulaires,
  • Puis, sélectionner le formulaire f_villes,
  • Dans la liste du milieu, double cliquer sur le contrôle dep,
Expression de correspondance entre un formulaire et une requête Access avec le générateur d-expression

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

Formulaires![f_villes]![dep]

Elle apparaît dans la zone de saisie en haut du générateur d'expression.
  • Cliquer sur le bouton Ok du générateur d'expression pour valider la syntaxe,
Elle s'inscrit dès lors dans la zone Critères du champ s_dep. Nous devons maintenant poser les conditions sur la ville et l'activité. Mais comme nous l'évoquions, si elles ne sont pas définies, elles doivent être ignorées. Avant cela, nous proposons d'enregistrer cette requête.
  • Réaliser le raccourci clavier CTRL + S,
  • La nommer r_sorties puis valider avec le bouton Ok,
La requête apparaît désormais listée dans le volet de navigation.
  • Cliquer droit dans la zone Critères du champ s_Ville,
  • Dans le menu contextuel, choisir l'option Créer,
  • Dans la zone de saisie du générateur, débuter la syntaxe comme suit : Comme '*' &,
Avec l'opérateur Comme suivi du symbole de l'astérisque, nous autorisons tout ce qui suit dans le champ. Si la ville est définie, elle sera considérée et utilisée pour le filtre. Le cas échéant, le symbole de l'astérisque permettra de considérer toutes les données du champ. C'est ainsi donc que nous autorisons un critère vide. Le symbole de concaténation qui suit attend la fin de l'expression pour la correspondance dynamique avec le contrôle Villes du formulaire.
  • Dans la liste de gauche du générateur, déployer l'arborescence des formulaires,
  • Sélectionner le formulaire f_villes,
  • Puis dans la liste du centre, double cliquer sur le contrôle Villes,
Nous bâtissons ainsi l'expression de correspondance suivante :

Comme '*' & Formulaires![f_villes]![villes]
  • Valider la syntaxe en cliquant sur le bouton Ok du générateur d'expression,
  • Puis, enregistrer les modifications de la requête (CTRL + S),
La dernière expression à bâtir est similaire. Seul le nom du contrôle à atteindre change.
  • Dans la zone Critères du champ s_act, construire et valider l'expression suivante :
Comme '*' & Formulaires![f_villes]![activites]
  • Ensuite, fermer la requête en l'enregistrant,


Liaison sous-formulaire et requête
Le sous formulaire doit désormais se nourrir des résultats de cette requête qui elle-même alimente ses critères en fonction des choix émis par le biais des listes déroulantes du formulaire parent.
  • Dans le volet de navigation, cliquer droit sur le formulaire f_villes,
  • Dans le menu contextuel, choisir le mode création,
  • Dans la vue en conception, cliquer sur le sous-formulaire pour le sélectionner,
  • Activer alors l'onglet Données de sa feuille de propriétés,
  • Déployer la liste déroulante de sa propriété Objet source,
  • Dans les propositions, choisir la requête r_sorties,
Lier un sous-formulaire et une requête Access avec la feuille de propriétés

Nous définissons ainsi le contenu dynamique susceptible de charger le sous-formulaire au gré des actions de l'utilisateur par le biais des listes déroulantes. Mais un dernier réglage reste à entreprendre. Dans l'astuce précédente, nous avons ordonné l'actualisation des requêtes au changement de valeur dans les deux premières listes déroulantes. C'est ainsi qu'elles peuvent ajuster leurs contenus en fonction des choix réalisés en amont. Mais cet événement n'est pas encore géré sur la dernière liste, celle des activités. Or, elle doit imposer elle aussi la mise à jour des données dans le sous-formulaire.
  • Sur le formulaire, sélectionner la troisième liste déroulante, celle des activités,
  • Activer ensuite l'onglet Evénement de sa feuille de propriétés,
  • Cliquer dans la zone de son événement Sur changement pour l'activer,
  • Dès lors, cliquer sur le petit bouton situé à l'extrémité droite de la zone,
  • Dans la boîte de dialogue, choisir Générateur de code et valider par Ok,
Nous basculons ainsi dans l'éditeur de code VBA Access entre les bornes de la procédure événementielle activites_Change. Vous notez la présence de deux précédentes procédures attachées au deux autres listes déroulantes. Nous devons là aussi exploiter la méthode Requery de l'objet DoCmd pour forcer l'actualisation des requêtes.
  • Entre les bornes de la procédure, ajouter l'instruction VBA Access suivante :
Private Sub activites_Change()
DoCmd.Requery
End Sub
  • Enregistrer les modifications (CTRL + S),
  • Puis, fermer l'éditeur VBA Access pour revenir sur le formulaire en conception,
  • Enfoncer la touche F5 du clavier pour l'exécuter,
  • Avec la première liste déroulante, choisir un département, par exemple : 26-Drome,
Aussitôt, le sous-formulaire se charge de toutes les activités recensées dans ce département. Elles sont au nombre de 134.
  • Avec la deuxième liste déroulante, choisir une ville, par exemple : Valence,
Instantanément, les résultats du sous-formulaire s'affinent. Les activités de sorties recensées dans la ville de ce département ne sont plus que 40.
  • Avec la troisième liste déroulante, choisir une activité, par exemple : Hôtel,


Extraire des données sur des critères recoupés par des listes déroulantes en cascade sur un formulaire Access

L'extraction s'affine encore un peu plus pour livrer les 10 idées correspondant à la fois à l'activité et à la ville choisies pour le département sélectionné en amont. Et comme vous avez pu le voir, les extractions aboutissent également lorsque toutes les conditions ne sont pas encore émises. Voilà donc une astuce fort intéressante et simple de mise en oeuvre pour offrir un outil efficace de consultation des données sur un formulaire Access.

 
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