Comment synchroniser deux zones de liste déroulante sur un formulaire dans Microsoft Access

Cet article décrit la propriété AfterUpdate qui exécute une procédure événementielle lorsque vous sélectionnez une catégorie dans la première zone de liste déroulante.

Numéro de la base de connaissances d’origine : 289670

Remarque

Vous devez disposer de connaissances de base en macro, codage et interopérabilité avant de commencer. Cet article s’applique à une base de données Microsoft Access (.mdb/.accdb) et à un projet Microsoft Access (.adp).

Résumé

Cet article explique comment synchroniser deux zones de liste déroulante de sorte que lorsque vous sélectionnez un élément dans la première zone de liste modifiable, la sélection limite les choix dans la deuxième zone de liste modifiable.

Remarque

Cet article décrit une technique illustrée dans l’exemple de fichier, FrmSmp00.mdb.

Informations supplémentaires

L’exemple suivant utilise l’exemple de base de données Northwind.mdb. La première zone de liste déroulante répertorie les catégories de produits disponibles, et la deuxième liste déroulante répertorie les produits disponibles pour la catégorie sélectionnée dans la première zone de liste modifiable :

Microsoft fournit des exemples de programmation à titre d’illustration uniquement, sans garantie expresse ou implicite. Cela inclut, sans y être limité, les garanties implicites de commercialisation et d’adaptation à un but en particulier. Cet article considère que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d’une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques.

  1. Ouvrez l’exemple de base de données Northwind.mdb.

  2. Créez un formulaire qui n’est basé sur aucune table ou requête avec les zones de liste déroulante suivantes, puis enregistrez le formulaire en tant que Catégories et produits.

    Combo Box 1
    -------------------------------
    Name:          Categories
    RowSourceType: Table/Query
    RowSource:     Categories
    ColumnCount:   2
    ColumnWidths:  0";1"
    BoundColumn:   1
    AfterUpdate:   [Event Procedure]
    
    Combo Box 2
    --------------------------
    Name:          Products
    RowSourceType: Table/Query
    ColumnWidths:  2"
    Width:         2"
    

    Remarque

    Si vous êtes dans un projet Access, le RowSourceType sera Table/Vue/StoredProc.

  3. Ajoutez le code suivant à la procédure événementielle AfterUpdate de la zone de liste déroulante Catégories :

    Me.Products.RowSource = "SELECT ProductName FROM" & _
       " Products WHERE CategoryID = " & Me.Categories & _
       " ORDER BY ProductName"
    Me.Products = Me.Products.ItemData(0)
    
  4. Affichez le formulaire Catégories et produits en mode Formulaire.

    Remarque

    Lorsque vous sélectionnez une catégorie dans la première zone de liste modifiable, la deuxième zone de liste modifiable est mise à jour pour répertorier uniquement les produits disponibles pour la catégorie sélectionnée.

Notes

Dans cette exemple, la deuxième zone est remplie à l'aide des résultats d'une instruction SQL. Cette instruction SQL recherche tous les produits qui ont un CategoryID qui correspond à la catégorie sélectionnée dans la première zone de liste déroulante.

Chaque fois qu’une catégorie est sélectionnée dans la première zone de liste modifiable, la AfterUpdate propriété exécute la procédure événementielle, qui définit la propriété de la deuxième zone de RowSource liste déroulante. La liste des produits de la deuxième zone est ainsi actualisée. Sans cette procédure, le contenu de la deuxième zone ne changerait pas.