Nous aimerions rechercher une société indifféremment par son nom ou par son numéro de TVA et ce à l'aide de 2 listes déroulantes bien distinctes.
Les données
Nous avons une base de données qui fait référence à la plage B4:H8 et que nous allons nommé bd.
Le champ Nom se trouve à la colonne B et le champ TVA en colonne F. Ces champs sont nommés respectivement db_Nom et db_TVA. Enfin, la plage B3:H3 contient les étiquettes des champs et sera nommée db_Fields (exemple en B3, Nom, C3, Adresse, .....F3 TVA
L'outils
Pour permettre l'utilisation de deux listes déroulantes, nous allons utiliser le contrôle liste déroulante de l'outil formulaire et nous allons nommé une cellule cnRow qui fera référence par exemple à la cellule D11.
Pour dessiner une liste déroulante
Nous pouvons déjà tester nos liste déroulantes en cliquant sur l'une ou l'autre.
- Sélectionner le contrôle liste déroulante dans les contrôles formulaire
Pour Excel 2003. Sélectionner Zone de liste déroulante dans la barre d'outil Formulaires. (Affichage/Barres d'outils-Formulaire)
Excel 2007 et 2010. Dans le groupe Contrôle de l'onglet [Developpeur], cliquer sur insérer Zone de liste déroulante de Contrôles de formulaire.- Dessiner les deux listes
- Une fois les listes dessinées, clic droit sur le contrôle , sélectionner Format de contrôle et l'onglet [Contrôle]
Remplir les valeurs des propriétés
Plage d'entrée : On indiquera db_Société pour l'une et db_Tva pour l'autre
Cellule liée : pour les deux listes cnRow.
Dès que nous sélectionnons un élément de la liste, nous voyons un nombre s'afficher en cellule D11 (cnRow) qui correspond à sa place dans la liste c'est à dire finalement au numéro de ligne dans la base de données.
Il ne nous reste plus qu'à afficher les informations de la base de données sélectionnées par une des listes déroulantes.
En B11, nous allons taper Nom et en B12 la formule suivante
Il suffit ensuite en B12 et lignes suivantes de taper un autre nom d'étiquette et tirer la formule de B12 vers le bas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part =INDEX(db;cnRow;EQUIV(B11;db_Fields;0))
La fonction INDEX a comme 2ème argument le n° de ligne qui est donné par la cellule liée (cnRow) de l'outil Liste déroulante
Un classeur excel en exemple illustre cette contribution.
Partager