RECHERCHEV : la maîtriser en un exercice

RECHERCHEV est la fonction qui fait basculer un utilisateur d’Excel du statut de « je sais faire des sommes » à celui de « je sais construire un fichier ». C’est aussi celle qui génère le plus d’appels au support interne, parce qu’elle échoue de six façons différentes et qu’aucun message d’erreur ne dit laquelle.

Le principe tient en une phrase : vous avez un code, vous voulez ce qui va avec. Un matricule et vous voulez le nom du salarié. Une référence produit et vous voulez le prix. Un code postal et vous voulez la ville. La donnée existe quelque part dans une autre table, RECHERCHEV va la chercher.

Cet article couvre la syntaxe complète, les quatre erreurs qui reviennent systématiquement, et le moment où il faut arrêter d’utiliser RECHERCHEV pour passer à autre chose.

La syntaxe, argument par argument

=RECHERCHEV(valeur_cherchée ; table_matrice ; no_index_col ; valeur_proche)

valeur_cherchée — ce que vous connaissez. Le matricule, la référence, le code. En général une cellule de votre feuille de travail.

table_matrice — la plage où chercher. Attention, c’est ici que se joue la règle la plus contraignante de la fonction : la valeur cherchée doit se trouver dans la première colonne de cette plage. Si vos matricules sont en colonne C et vos noms en colonne B, RECHERCHEV ne peut rien faire. Il faudra réorganiser la table source, ou changer de fonction.

no_index_col — le rang de la colonne à ramener, compté à partir de la première colonne de la plage, pas à partir de la colonne A de la feuille. C’est la deuxième source d’erreur. Si votre plage commence en C, la colonne C porte le numéro 1, pas 3.

valeur_proche — l’argument que personne ne lit et qui casse tout. FAUX (ou 0) impose une correspondance exacte. VRAI (ou 1) accepte la valeur immédiatement inférieure.

Écrivez toujours FAUX. Dans 95 % des cas c’est ce que vous voulez, et l’argument est facultatif : omis, Excel prend VRAI par défaut et vous renvoie un résultat faux sans le moindre avertissement. C’est le pire comportement possible : pas d’erreur affichée, juste des données incorrectes.

Le fichier d’exercice

Le classeur utilisé dans la vidéo est téléchargeable ici : feuille de saisie, table du personnel et corrigé.

L’exercice

La situation est celle qu’on rencontre partout : une feuille de saisie où l’utilisateur tape un matricule, et une table du personnel qui contient les informations. On veut que le nom, le service et le salaire s’affichent automatiquement.

La formule pour le nom :

=RECHERCHEV($B$2;Personnel!$A$2:$E$200;2;FAUX)

Trois choses à observer dans cette écriture.

Le $B$2 fige la cellule contenant le matricule saisi. Sans les dollars, la recopie vers le bas décalerait la référence.

Le $A$2:$E$200 fige la table de recherche. C’est l’erreur numéro un des débutants : sans dollars, la plage glisse à chaque recopie et les dernières lignes sortent de la zone de recherche. Résultat : des #N/A sur la fin de la liste, alors que les données existent. Le raccourci F4 pose les dollars sur la référence sélectionnée.

Le 2 désigne la deuxième colonne de la plage, donc la colonne B. Pour le service et le salaire, seul ce chiffre change : 3, puis 5.

Faire mieux : figer la table une bonne fois

Recopier une plage $A$2:$E$200 dans quinze formules, c’est se condamner à tout reprendre le jour où la table passe à 300 lignes.

Convertissez la table source en tableau structuré : curseur dedans, Ctrl + L, puis nommez-la T_Personnel dans Création de tableau > Nom du tableau. La formule devient :

=RECHERCHEV($B$2;T_Personnel;2;FAUX)

Plus de dollars à gérer, plus de plage à étendre. Les lignes ajoutées sont prises en compte automatiquement, et la formule est lisible par quelqu’un qui ouvre le fichier six mois plus tard.

C’est trente secondes de préparation qui suppriment une catégorie entière de problèmes.

Neutraliser le #N/A

Tant que la cellule de saisie est vide, ou si le matricule n’existe pas, Excel affiche #N/A. Techniquement correct, visuellement désastreux sur un document remis à un tiers.

=SIERREUR(RECHERCHEV($B$2;T_Personnel;2;FAUX);"")

Les guillemets vides laissent la cellule blanche. Vous pouvez aussi afficher un message : "Matricule inconnu".

Un avertissement, parce que je vois beaucoup d’abus sur ce point. SIERREUR masque toutes les erreurs, pas seulement #N/A. Une faute de frappe dans le nom de la table, un numéro de colonne hors plage, une division par zéro : tout disparaît derrière votre message. Vous ne saurez jamais que votre formule est cassée.

Ne mettez le SIERREUR qu’une fois la formule testée et validée. Jamais pendant la construction.

Les quatre causes d’un #N/A

Quand la formule renvoie #N/A alors que la valeur existe visiblement dans la table, c’est l’une de ces quatre causes. Testez-les dans cet ordre.

Un espace parasite. Le matricule saisi vaut A123 et celui de la table vaut A123. Invisible à l’œil, fatal pour Excel. Test : =NBCAR(B2) sur les deux cellules. Correction : =SUPPRESPACE() sur la colonne source.

Un conflit texte / nombre. Le matricule est stocké en nombre dans un fichier et en texte dans l’autre — typiquement après un import CSV. Un petit triangle vert dans le coin de la cellule est le signe. Sélectionnez la colonne, Données > Convertir, et terminez sur Standard pour forcer la conversion.

La valeur cherchée n’est pas dans la première colonne de la plage. Relisez la définition de table_matrice. C’est structurel, aucune option ne le contourne.

L’argument FAUX a été oublié. La formule renvoie alors un résultat approximatif ou une erreur selon le tri de la table.

Si le résultat affiché est #REF! et non #N/A, la cause est différente : le numéro de colonne dépasse la largeur de la plage. Vous demandez la colonne 6 dans une table qui en compte 5.

Le cas où VRAI est le bon choix

L’argument VRAI n’est pas une aberration, il a un usage précis : les recherches par tranche.

Barème de commission, tranches d’imposition, grille de remise par quantité. Vous ne cherchez pas une valeur exacte, vous cherchez dans quelle tranche elle tombe.

CA minimumTaux
00 %
10 0002 %
25 0004 %
50 0007 %
=RECHERCHEV(B2;T_Bareme;2;VRAI)

Un CA de 32 000 renvoie 4 %. Excel prend la valeur immédiatement inférieure.

Condition impérative : la table doit être triée par ordre croissant sur la première colonne. Sinon, résultat faux, sans erreur affichée. C’est le seul contexte où j’accepte VRAI, et toujours avec la table triée sous les yeux.

Quand abandonner RECHERCHEV

RECHERCHEV a deux limites structurelles : elle ne cherche que vers la droite, et le numéro de colonne est figé en dur — insérez une colonne dans la table source, toutes vos formules ramènent la mauvaise donnée, silencieusement.

Si vous avez Microsoft 365 ou Excel 2021 : utilisez RECHERCHEX.

=RECHERCHEX($B$2;T_Personnel[Matricule];T_Personnel[Nom];"Inconnu")

Elle cherche dans n’importe quelle direction, ne dépend d’aucun numéro de colonne, gère la valeur par défaut sans SIERREUR, et fait de la correspondance exacte par défaut. Sur tous les plans, c’est mieux.

Si vous êtes sur une version antérieure, ou si vous partagez vos fichiers avec des gens qui le sont : INDEX + EQUIV.

=INDEX(T_Personnel[Nom];EQUIV($B$2;T_Personnel[Matricule];0))

Plus verbeux, mais compatible avec toutes les versions depuis vingt ans, et insensible à l’insertion de colonnes.

Un point de réalité en entreprise : RECHERCHEV reste la fonction que tout le monde connaît. Un fichier qui va circuler dans un service dont vous ne maîtrisez pas les versions d’Excel, ou qui sera maintenu par quelqu’un d’autre, gagne souvent à rester en RECHERCHEV. La meilleure formule n’est pas toujours la plus élégante.

Questions fréquentes

RECHERCHEV peut-elle chercher vers la gauche ? Non. La valeur cherchée doit être dans la première colonne de la plage. Passez par INDEX + EQUIV ou RECHERCHEX.

Pourquoi ma formule renvoie 0 au lieu d’une cellule vide ? La cellule cible de la table est vide, et Excel affiche 0. Enveloppez dans =SI(RECHERCHEV(...)=0;"";RECHERCHEV(...)), ou passez à RECHERCHEX qui gère le cas nativement.

Peut-on faire une RECHERCHEV sur deux critères ? Pas directement. Créez une colonne de concaténation dans la source (=[@Matricule]&[@Année]) et cherchez sur cette clé. Ou passez à Power Query si le besoin est récurrent.

Ma RECHERCHEV fonctionne mais le fichier est devenu très lent. Plusieurs milliers de RECHERCHEV avec VRAI sur des tables non triées, ou des plages définies en colonnes entières (A:E). Limitez les plages, ou basculez sur une fusion de requêtes dans Power Query.

La formule affiche le texte de la formule au lieu du résultat. La cellule est au format Texte. Passez-la en Standard, puis F2 et Entrée pour la revalider.