Dans notre article du 9 mai, nous n’avons pas commenté le troisième argument de la fonction equiv. En fait, ce troisième argument, facultatif, peut avoir trois valeurs possibles :
-
+1 : position de la dernière valeur inférieure ou égale à la valeur cherchée ;
-
0 : position de la première valeur identique à la valeur cherchée ;
-
–1 position de la dernière valeur supérieure ou égale à la valeur cherchée.
L'argument
+1, quand vous n'utilisez que deux arguments, est la valeur par défaut.
Sur le plan algorithmique, equiv(...;...;1) fonctionne à la manière de recherchev(...;...;...;vrai) et equiv(...;...;0) à la manière de recherchev(...;...;...;faux).
Microsoft affirme dans l’aide d’Excel que le vecteur de recherche doit être en ordre croissant avec l’argument +1 et en ordre décroissant avec –1. Là encore, nos chers amis se trompent : même si l’usage normal d’equiv() avec les argument +1 et –1 suppose en général un vecteur trié, il est tout à fait possible d’utiliser un equiv(...;...;1) ou un equiv(...;...;-1) avec un vecteur non trié et cela est même tout à fait utile pour résoudre certains problèmes de façon élégante.
Attention ! Si vous oubliez le troisième argument alors que vous cherchez la position de la première valeur identique à la valeur cherchée, vous serez surpris par le résultat : en effet, Excel supposera alors que l’argument est +1.
Une application originale : le remplacement de la fonction Recherche()
Si vous avez bien compris l’utilisation de la fonction equiv(), vous avez certainement remarqué qu’elle permet de se passer de la fonction recherche().
Reprenons l’exemple du 16 mars, reproduit ci-contre, où nous avions montré que la formule naturelle à placer en C13 était :
=recherche(C12;B3:C10).
Cette formule est parfaitement remplaçable par
=index(C3:C10;equiv(C12,B3:B10)) ou par
=index(C3:C10;equiv(C12,B3:B10;1)), qui donneront toujours le même résultat !
Intéressant, n'est-ce pas ?