formateur informatique

Lier entre elles des listes déroulantes dans un formulaire Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Lier entre elles des listes déroulantes dans un formulaire Access
Livres à télécharger
Vous pourriez aussi être intéressé(e) par :
Didacticiel pour apprendre à créer des listes déroulantes dans Excel
Sous formulaire dynamique dans un formulaire sur plusieurs tables
Facturation avec interface graphique VBA Excel
Distributeur de billets en Visual Basic Excel
Listes déroulantes liées dans un formulaire Access

Le but de ce didacticiel est de montrer comment lier deux listes déroulantes dans un formulaire Access. Concrètement, un choix dans la liste déroulante 1 implique un chargement de la liste déroulante 2 qui varie. Pour débuter les manipulations : Il s'agit d'une toute petite base volontairement simplifiée pour réaliser les actions qui nous intéressent. Elle est constituée de trois tables marques, modeles et fiches. La table marques énumère les différents fabricants de véhicules : Renault, Peugeot etc… La table modeles énumère les différents modèles selon la marque (Clio, 208 etc…). C'est pourquoi ces deux tables doivent être liées. Enfin la table fiches correspond à la fiche technique de chaque modèle d'une marque. Ainsi la table fiches doit être, elle aussi, liée à la table modeles dans le but de savoir à quel modèle appartient telle fiche technique.
  • Cliquer sur le bouton Activer le contenu pour avoir accès à toutes les fonctionnalités.
Les tables sont donc liées comme nous l'avons évoqué précédemment et nous allons le constater.
  • Cliquer sur le ruban Outils de base de données pour activer ce dernier,
  • Dans le ruban, cliquer sur le bouton Relations.

relations tables base de données
Les tables ont été conçues avec des clés primaires pour pouvoir les lier entre elles.
  • Refermer cet onglet.
Nous allons maintenant concevoir un petit formulaire dans lequel seront disposées deux listes déroulantes. La première permettra de sélectionner une marque. En fonction de la marque, la seconde chargera les modèles disponibles depuis la table liée modeles de façon à proposer un second choix encore plus sélectif.
  • Cliquer sur le ruban Créer pour l'activer,
  • Dans le ruban, cliquer sur le bouton Création de Formulaire.
Nous ne passons pas par l'assistant Formulaire. De cette façon, nous obtenons un formulaire vierge en mode conception que nous allons pouvoir organiser à notre guise. Vous remarquez que le ruban Création s'active automatiquement. Il propose notamment tous les contrôles à disposer sur le formulaire.
  • Cliquer sur le bouton Zone de liste déroulante dans ce ruban,
  • Puis cliquer sur le formulaire pour déposer ce contrôle.
conception formulaire Access
Vous remarquez qu'une boîte de dialogue se déclenche immédiatement.
  • La première case est cochée, nous allons nous faire aider par Access pour créer le lien,
  • Cliquer sur le bouton Suivant,
assistant liste déroulante formulaire Access
Cette étape consiste à établir le lien entre la liste déroulante et la table de données.
  • Cliquer sur la ligne Table : marques,
  • Puis cliquer sur Suivant,

Cette étape consiste à indiquer les champs utiles pour cette liste déroulante. Dans notre cas nous avons besoin des deux, marque_num car il s'agit de l'identifiant et marque_nom pour le texte à afficher dans la liste.
  • Cliquer sur la double flèche au centre de la boîte de dialogue,
De cette façon vous incluez tous les champs de la table dans la construction de la liste déroulante.
  • Puis cliquer sur Suivant.

Dans cette nouvelle étape nous allons indiquer que nous souhaitons un affichage croissant des marques.
  • Choisir le champ marque_nom dans la première liste,
  • Cliquer sur Suivant,
choix colonnes liste déroulante formulaire
Ici l'assistant Access nous indique qu'il n'affichera que les informations du champ marque_nom et conservera la colonne marque_num comme masquée. C'est parfait c'est ce que nous souhaitons.


  • Cliquer sur le bouton Suivant pour poursuivre,
Enfin nous voilà arrivé à la dernière étape. Access propose d'associer le nom du champ à l'étiquette qui décrit cette liste déroulante.
  • Accepter cette proposition et cliquer sur Terminer.
Nous n'avons pas totalement fini de paramétrer notre liste.
  • Cliquer avec le bouton droit de la souris sur cette liste déroulante,
  • Dans la liste qui s'affiche, cliquer tout en bas sur Propriétés.
La feuille de Propriétés pour la liste déroulante sélectionnée apparaît sur la droite de l'écran.
  • Dans l'onglet Autres saisir liste_marques en lieu et place du nom proposé.
nommer contrôle formulaire Access
Un nom explicite pour un contrôle est important. C'est par son nom que nous allons le piloter au travers des actions que nous allons entreprendre. Remarquez l'absence d'accents et d'espaces dans ces syntaxes. Nous devons maintenant sauvegarder ce formulaire avant de l'exploiter.
  • Cliquer sur le bouton Enregistrer tout à fait en haut à gauche de la fenêtre Access,
  • Dans la boîte de dialogue, taper le nom choix_marques_modeles,
  • Puis valider en cliquant sur Ok.
Vous remarquez que ce nouveau formulaire apparaît dans la liste des objets Access sur la gauche.
Enregistrer formulaire Access
  • Cliquer sur le bouton Affichage en haut à gauche du ruban.
Nous exécutons ainsi le formulaire. Si vous cliquez sur la liste déroulante, vous remarquez que celle-ci propose bien de sélectionner une marque.
liste déroulante formulaire Access
Nous souhaitons créer la liste déroulante des modèles qui dépendra de la marque sélectionnée au préalable.
  • Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste qui apparaît, cliquer sur Mode création,
Nous retournons ainsi dans la conception du formulaire.
  • Cliquer sur le ruban Création pour l'activer,
  • Cliquer sur le contrôle Zone de liste déroulante,
  • Puis cliquer sur le formulaire pour ajouter une seconde liste déroulante,
  • Dans la boîte de dialogue qui apparaît, accepter le choix par défaut (Je veux que la liste…),
  • Cliquer sur Suivant,
  • Cliquer sur la ligne Table : modeles pour la lier à la liste,
  • Cliquer sur Suivant,
Cette fois nous avons besoin des champs modele_num pour l'identifiant et modele_nom pour le texte à afficher dans la liste déroulante.
  • Sélectionner la ligne modele_num dans la liste de gauche,
  • Cliquer sur le bouton de la flèche pour la basculer dans la liste de droite,
  • Sélectionner la ligne modele_nom dans la liste de gauche,
  • Cliquer sur le bouton de la flèche pour la basculer dans la liste de droite,
  • Cliquer sur Suivantpour poursuivre,
  • Choisir un tri croissant sur modele_nom,
  • Cliquer sur Suivant,
  • Comme précédemment, accepter l'étape qui suit et cliquer sur Suivant,
  • Enfin cliquer sur Terminer,
  • Cliquer sur le bouton Affichage du ruban Accueil pour exécuter le formulaire,



listes déroulantes indépendantes formulaire Access
La première liste déroulante propose bien les marques tandis que la seconde propose bien les modèles. Mais à ce stade aucun lien n'existe entre les deux. En effet si vous sélectionner Renault dans la première, le choix n'est pas restreint aux modèles de la marque dans la seconde. Nous devons créer ce lien.
  • Cliquer sur la flèche du bouton Affichage,
  • Cliquer sur Mode création.
Toujours aussi important, nous allons commencer par donner un nom explicite à cette seconde liste pour pouvoir la piloter.
  • Sélectionner la liste des modèles,
  • Cliquer sur l'onglet Autres de la Feuille de propriétés,
  • Dans la zone Nom, taper liste_modeles et valider par Entrée,
  • Cliquer maintenant sur l'onglet Données,
Dans la zone contenu, une requête Sql indique de quelle façon est chargée cette liste : SELECT [modeles].[modele_num],[modeles].[modele_nom] FROM modeles ORDER BY [modele_nom];
Concrètement il est écrit que cette liste affichera tous les modèles énumérés dans la table modeles. Il n'y a donc en effet aucun lien avec la liste déroulante des marques, donc aucune interaction possible. Pour pallier le problème nous allons ajouter une condition dans cette requête, plus précisément une clause WHERE :
  • Modifier la requête comme suit et valider par Entrée :
SELECT [modeles].[modele_num],[modeles].[modele_nom] FROM modeles WHERE [modele_marque_num]=[liste_marques] ORDER BY [modele_nom];
Nous établissons un lien entre le champ de la table modeles qui est lié aux marques et la liste déroulante des marques.
  • Cliquer sur le bouton Affichage pour exécuter le formulaire.

Les deux listes déroulantes n'interagissent toujours pas malgré une requête Sql explicite. Cela tient au fait que nous devons calibrer un évènement qui indique que lorsque le choix dans liste des marques change, la liste des modèles doit être recalibrée. Nous avons besoin d'un tout petit bout de code Vba. Pour cela nous devons commencer par activer le code pour ce formulaire.
  • Cliquer sur le bouton Affichage de manière à revenir en mode Création,
  • Cliquer dans l'angle supérieur gauche du formulaire pour le sélectionner,
  • Dans la fenêtre propriétés, cliquer sur l'onglet Autres pour l'activer,
  • Placer la valeur de la zone Avec module sur Oui,
activation modules code vba formulaire Access
Nous activons ainsi les modules de code VBA.
  • Cliquer sur la liste déroulante des marques pour l'activer,
  • Cliquer sur l'onglet Evénement de sa feuille de propriétés,
  • Cliquer sur le petit bouton à trois points dans la zone Après MAJ,
  • Dans la boîte de dialogue qui apparaît, sélectionner Générateur de code,
  • Puis cliquer sur Ok.
générateur code évènement liste déroulante
Nous basculons dans l'éditeur de code Visual Basic pour Access. Au travers des configurations que nous venons de réaliser, tout ce que nous allons écrire là se déclenchera au changement de choix dans la liste déroulante des marques (Après MAJ).
  • Saisir la ligne de code suivante :Me![liste_modeles].Requery
code vba raffraichir liste déroulante
Me! désigne la formulaire actif. [liste_modeles] désigne la liste déroulante des modèles sur ce formulaire. Et Requery est une méthode qui impose à cette dernière de se reclaculer. Ce recalcul intervient Après Maj comme nous l'avons paramétré.
  • Enregistrer ce petit bout de code(CTRL + S),
  • Revenir sur le formulaire en changeant de fenêtre,
  • Cliquer sur le bouton Affichage du ruban Accueil pour exécuter le formulaire,
  • Cliquer sur la liste des marques et faire un choix,
  • Cliquer sur la liste des modèles pour constater qu'elle s'adapte.
listes déroulantes liées formulaire Access
Nous avons donc bien réussi à lier ces deux listes.



 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales