Monsieur Excel
Pour tout savoir faire sur Excel !

25 février 2011

La seconde syntaxe de recherche()

La fonction recherche() originale posait des problèmes à de nombreux utilisateurs d’Excel. Certains avaient du mal à comprendre que c’était dans la colonne la plus à droite, ou la ligne la plus basse, de la matrice que l’on prenait le résultat. D’autres se plaignaient que – avec son algorithme – on était obligé de trouver le résultat à droite (matrice verticale) ou en bas (matrice horizontale) : ils voulaient pouvoir trouver un résultat à gauche, ou au-dessus…

Donc, une bonne dizaine d’années plus tard, Microsoft a ajouté une seconde syntaxe à cette fonction : =recherche(valeur;vecteur de recherche;vecteur de résultat).

Dans l’exemple ci-dessous, par rapport à celui présenté il y a quatre jours, nous avons interverti les blocs A2:A10 et B2:B10, en mettant les tarifs avant les poids.

La formule de la cellule B13 montre l’application directe de la nouvelle syntaxe aux deux vecteurs de la matrice verticale. Le nouvel algorithme est le suivant : on identifie dans le vecteur de recherche la position de la dernière valeur inférieure ou égale à la valeur cherchée (cf. tracé en bleu) ; ensuite, on note la position de cette valeur puis, dans le vecteur de résultat, on identifie (cf. tracé en rouge) la valeur ayant cette position.

Rien n’empêche alors, si l’on a l’esprit un peu tordu – serait-ce donc mon cas ? – de faire comme en B13, où nous effectuons la recherche dans le vecteur vertical B3:B10 et trouvons le résultat dans le vecteur horizontal A17:H17 !

Cela marche parfaitement bien, mais ce n’est pas vraiment conseillé pour la lisibilité de vos modèles :)