Monsieur Excel
Pour tout savoir faire sur Excel !

27 mars 2006

Recherche H ou V avec « faux »

Un problème se présente cependant avec le modèle du 24 mars. Qu’arrive-t-il si l’on entre en F14 un prénom erroné, par exemple « Jules » ?

Eh bien, tout logiquement, nous récupérerons les résultats pour « Jacques Lerose », puisque « Jacques » est le dernier prénom inférieur ou égal à
« Jules ».

Là nous constatons qu’il y a un problème. En effet, avec la table de tarifs postaux, les valeurs intermédiaires sont acceptables : tout envoi entre 100 gr. et 250 gr. coûte effectivement 1,22 €. En revanche, un prénom entre
« Jacques » et « Léon » ne correspond pas à « Jacques ».

Il est donc souhaitable de pouvoir exclure – dans un tel cas – les valeurs intermédiaires. C’est une fonctionnalité qui n’était pas présente dans la première version de RechercheH() et RechercheV(), mais qui a été ajoutée par la suite. L’astuce revient à ajouter un quatrième argument avec la valeur FAUX, pour indiquer à Excel que l’on refuse les valeurs intermédiaires.

Nouvelle formule de F15 : =recherchev(F14;E3:F11;2;faux)

Si le prénom n’est pas présent dans la liste, la valeur « #NA » apparaît alors…

Remarque 1

Quand il n’y a pas de quatrième argument, cela se passe comme si ce quatrième argument était VRAI : les valeurs intermédiaires sont alors acceptées.

Remarque 2

Microsoft ne vous le dit pas dans l’aide mais, quand il y a FAUX en quatrième argument, l’algorithme utilisé est différent. Dans ce cas, Excel descend la colonne de recherche jusqu’à ce qu’il trouve la valeur cherchée et – dès qu’il l’a trouvée – s’arrête et renvoie ce qui est dans cette ligne et dans la colonne demandée.

Corollaires de la remarque 2

Etant donné l’algorithme utilisé quand il y a FAUX en dernier argument, il est évident que, dans ce cas, il n’y a plus aucune nécessité pour que la colonne de recherche soit triée en ordre croissant.

S’il y a plusieurs « Gilles » dans la liste, c’est maintenant le premier qui sera retenu…

Remarque 3

Ce dernier argument avec FAUX fonctionne avec RechercheV() et avec RechercheH(), mais pas avec Recherche(). Pour obtenir le même résultat avec Recherche(), il faut écrire : =si(recherche(valeur);vecteur_recherche)=
valeur;recherche(valeur;matrice_recherche);na())