<Retour Grenier>

Début de page 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é.

 

Début de page 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"

  1. Ouvrez votre formulaire en mode Création.
  2. Si nécessaire, faites apparaître la boîte à outils, via le menu Affichage / Boîte à outils.
  3. Vérifiez sur la boîte à outils que l'Assistant Contrôle est activé
  4. Cliquez sur l'icône "Zone de liste modifiable" puis cliquez quelque part sur le formulaire.
  5. 1ère étape de l'assistant, choisissez "Je taperai les valeurs souhaitées".
  6. 2ème étape : tapez les valeurs les unes sous les autres (par ex. : Cabotage, Pêche, Plongée...)
  7. 3ème étape : tapez le nom de l'intitulé qui précèdera la liste déroulante (par ex. : Activité)
  8. 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.

  1. Créez une requête basée sur la table des clients, comme dans l'exemple ci-contre.
  2. Pour filtrer les clients par activité, définissez le critère suivant :
Forms![frm Clients]

![cmbActivites]

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.

  1. Enregistrez cette requête (par ex. sous le nom rqt Clients par activité).

 

Construction de la 2ème liste déroulante

  1. Ouvrez votre formulaire en mode Création.
  2. Si nécessaire, faites apparaître la boîte à outils, via le menu Affichage / Boîte à outils.
  3. Vérifiez sur la boîte à outils que l'Assistant Contrôle est activé
  4. Cliquez sur l'icône "Zone de liste modifiable" puis cliquez quelque part sur le formulaire.
  5. 1ère étape de l'assistant, choisissez "Je veux que la liste modifiable recherche les valeurs dans une table ou requête".
  6. 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é.
  7. 3ème étape : sélectionnez tous les champs de la requête pour les faire passer à droite de la boîte.
  8. 4ème étape : réglez éventuellement les tailles des colonnes.
  9. 5ème étape : cliquez sur le champ dont la valeur devra être conservée.
  10. 6ème étape : définissez un intitulé quelconque (par ex. : Clients)
  11. 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 :

  1. Faites un clic droit sur la 1ère liste déroulante, puis cliquez sur "Propriétés".
  2. Cliquez sur l'onglet Evénements.
  3. Définissez l'événement "Après mise à jour" sur "Procédure événementielle".
  4. Cliquez sur le bouton
  5. Tapez la ligne suivante dans la procédure Visual Basic :
Me![cmbClients].Requery