<Retour Grenier>
Question
Comment
combiner 2 listes déroulantes, de façon à ce qu'un choix dans la première
filtre automatiquement la seconde ?
Dans l'exemple ci-contre, une liste propose les différentes
activités possibles pour un client (Plongée, Pêche, Cabotage...).
La seconde liste n'affiche que les clients liés à cette activité.
Réponse
Construction de la 1ère liste déroulante
Pour simplifier, on suppose que la 1ère liste est basée sur des
valeurs tapées manuellement, et que le formulaire sur lequel vous travaillez
s'appelle "frm Clients"
- Ouvrez votre formulaire en mode Création.
- Si nécessaire, faites apparaître la boîte à outils, via le menu
Affichage / Boîte à outils.
- Vérifiez sur la boîte à outils que l'Assistant Contrôle est activé

- Cliquez sur l'icône "Zone de liste modifiable"
puis cliquez quelque part sur le formulaire.
- 1ère étape de l'assistant, choisissez "Je taperai les valeurs
souhaitées".
- 2ème étape : tapez les valeurs les unes sous les autres (par ex. :
Cabotage, Pêche, Plongée...)
- 3ème étape : tapez le nom de l'intitulé qui précèdera la liste
déroulante (par ex. : Activité)
- Dans les propriétés de la liste déroulante (accessibles par un clic
droit sur celle-ci), nommez votre liste (par ex. : cmbActivites).
Vous obtenez quelque chose qui ressemble à : 
Construction d'une requête pour la 2ème liste déroulante
La 2ème liste déroulante sera basée sur une requête, qui sera
chargée de filtrer les clients.
Créez une
requête basée sur la table des clients, comme dans l'exemple ci-contre.
- Pour filtrer les clients par activité, définissez le critère suivant :
Forms![frm Clients]
![cmbActivites]
où frm Clients désigne le nom du formulaire
Clients et cmbActivites désigne le nom de la 1ère liste
déroulante, tel que vous l'avez défini plus haut.
- Enregistrez cette requête (par ex. sous le nom rqt
Clients par activité).
Construction de la 2ème liste déroulante
- Ouvrez votre formulaire en mode Création.
- Si nécessaire, faites apparaître la boîte à outils, via le menu
Affichage / Boîte à outils.
- Vérifiez sur la boîte à outils que l'Assistant Contrôle est activé

- Cliquez sur l'icône "Zone de liste modifiable"
puis cliquez quelque part sur le formulaire.
- 1ère étape de l'assistant, choisissez "Je veux que la liste
modifiable recherche les valeurs dans une table ou requête".
- 2ème étape : au bas de la boîte, activez le réglage
"Requêtes" et cliquez sur votre requête rqt Clients par
activité.
- 3ème étape : sélectionnez tous les champs de la requête pour les faire
passer à droite de la boîte.
- 4ème étape : réglez éventuellement les tailles des colonnes.
- 5ème étape : cliquez sur le champ dont la valeur devra être conservée.
- 6ème étape : définissez un intitulé quelconque (par ex. : Clients)
- Dans les propriétés de la liste déroulante (accessibles par un clic
droit sur celle-ci), nommez votre liste (par ex. : cmbClients).
Mise à jour de la 2ème liste déroulante par la 1ère liste
Si vous testez immédiatement, vous remarquerez qu'un choix dans la 1ère
liste déroulante n'a pour l'instant aucune répercussion sur la 2ème liste.
Voici la touche finale pour que tout fonctionne :
- Faites un clic droit sur la 1ère liste déroulante, puis cliquez sur
"Propriétés".
- Cliquez sur l'onglet Evénements.
- Définissez l'événement "Après mise à jour" sur
"Procédure événementielle".
- Cliquez sur le bouton

- Tapez la ligne suivante dans la procédure Visual Basic :
Me![cmbClients].Requery