Monsieur Excel
Pour tout savoir faire sur Excel !

06 mars 2017

Les trois arguments d’equiv()

Dans l’article précédent, nous avons présenté la fonction equiv(). Dans celui-ci, nous analysons ce qu’elle donne avec chacun de des trois arguments.

L’argument 0

Quand le troisième argument est 0, Excel renvoie la position dans le vecteur de recherche de la première occurrence de la valeur cherchée. Dans notre exemple, la formule de B16, reproduite sous forme de texte dans la cellule B17, dit bien que c’est en ligne 6 que l’on trouve le premier 7.

Remarque – On peut se demander pourquoi Microsoft a choisi de prendre par défaut le « 1 » comme troisième argument alors que c’est le « 0 » qui est de loi le plus utile.

L’argument 1

Quand le troisième argument est 1, Excel renvoie la position de la dernière valeur inférieure ou égale à la valeur cherchée. Cela suppose en théorie que le vecteur dans lequel on effectue la recherche soit trié en ordre croissant, mais il n’y a là aucune obligation. Dans notre exemple, la formule de D16, reproduite sous forme de texte dans la cellule D17, dit bien que c’est en ligne 9 que l’on trouve la dernière valeur inférieure ou égale à 7.


Si l’on ajoute les valeurs de la colonne D, on peut constater que l’equiv() avec un 1 en troisième argument donne exactement le même résultat qu’un simple recherche(), avec la formule reproduite en D18.

L’argument -1

Quand le troisième argument est 1, Excel renvoie la position de la dernière valeur supérieure ou égale à la valeur cherchée. Cela suppose en théorie que le vecteur dans lequel on effectue la recherche soit trié en ordre décroissant, mais il n’y a là aucune obligation. Dans notre exemple, la formule de G16, reproduite sous forme de texte dans la cellule G17, dit bien que c’est en ligne 9 que l’on trouve la dernière valeur inférieure ou égale à 7.

On ne peut hélas pas, dans ce cas, trouver un équivalent avec la fonction recherche() car celle-ci ne sait pas gérer une liste de valeurs décroissantes. Mais on peut par exemple utiliser à cet effet la formule matricielle suivante : =max(si(F1:F13>=G15;ligne(G1:G13);0)). Cette formule est matricielle, donc validée avec [Ctrl]-[Maj]-[Entrée].