Monsieur Excel
Pour tout savoir faire sur Excel !

18 mars 2006

Plus sur la fonction Recherche()

Il y a deux jours, nous avons introduit la fonction Recherche(), mais nous n’avons pas tout dit sur ce sujet !

Nous avons présenté l’algorithme de la fonction recherche() en disant qu’Excel descendait au fur et à mesure le long de la première colonne, jusqu’au premier seuil supérieur à la valeur cherchée, puis remontait d’un cran et ramenait la valeur la plus à droite dans la même ligne.

En faut, c’est ce qui se passe quand la matrice de recherche est « verticale », c’est-à-dire possède plus de lignes que de colonnes. Quand la matrice est
« horizontale », Excel se déplace de gauche à droite le long de la première ligne, jusqu’au premier seuil supérieur à la valeur cherchée, puis revient à gauche d’un cran et ramène la valeur la plus basse dans cette colonne.

Il y a deux inconvénients à cela. Premièrement, si la table de recherche est verticale, puis que l’on insère plusieurs colonnes entre sa première et sa dernière colonne, elle peut devenir horizontale, auquel cas la formule de recherche ne donnera plus le résultat espéré. Ensuite, il est difficile de faire comprendre à certains utilisateurs que la même fonction peut, selon le cas, fonctionner en vertical ou en horizontal.

Pour éviter ces deux problèmes, Microsoft a décidé un beau jour d’ajouter une seconde syntaxe à la fonction recherche, la syntaxe =recherche(valeur;vecteur de recherche;vecteur de résultat).

Dans ce cas, Excel identifie dans le premier vecteur la position du dernier seuil inférieur ou égal à la valeur cherchée, puis ramène – depuis le second vecteur – la valeur qui se trouve dans la même position.

Pour la formule de C13, nous avons donc le choix entre les formules suivantes :
=recherche(C12;B3:C10) … dans la matrice verticale
=recherche(C12;C15:J16) … dans la matrice horizontale
=recherche(C12;B3:B10;C3:C10) ... avec les vecteurs verticaux
=recherche(C12;C15:J15;C16:J16)
... avec les vecteurs horizontaux

Mais rien ne vous empêche – quoique je ne le conseille pas, pour la lisibilité de votre modèle – d’être plus créatif avec une formule telle que =recherche(C12;B3:B10;C16:J16) qui cherche dans un vecteur vertical pour ramener le résultat depuis un vecteur horizontal !