Introduction
Lorsque l’on effectue une recherche avec Excel et que l’on utilise l’outil Validation de données on est limité à la recherche des éléments d’une colonne.
Voici une astuce pour faire une recherche sur plusieurs éléments d’une table de données (Par exemple, par le nom d’une entreprise ou par son n° de tva).
Les données
Nous avons une base de données qui fait référence à la plage B4:H8 et que nous allons nommer 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
- 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.
Nous pouvons déjà tester nos liste déroulantes en cliquant sur l’une ou l’autre.
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.
=INDEX(db;cnRow;EQUIV(B11;db_Fields;0))
Il suffit ensuite en B12 et lignes suivantes de taper un autre nom d’étiquette et tirer la formule de B12 vers le bas.
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
Commentaires récents