Menu

RECHERCHEV Excel : formule, exemples et #N/A (VLOOKUP)

=RECHERCHEV(F2;A2:D6;3;FAUX) cherche F2 dans la première colonne de A2:D6 et renvoie la valeur de la troisième colonne de la même ligne. Correspondance exacte ou approximative, erreur #N/A, autre feuille, deux critères.

Chaque feuille de cette page est interactive : modifiez un nombre ou une formule et elle se recalcule.

=RECHERCHEV(F2;A2:D6;3;FAUX) cherche la valeur de F2 dans la première colonne de A2:D6 et renvoie la valeur de la troisième colonne de la même ligne. FAUX à la fin signifie "correspondance exacte uniquement". Choisissez un autre produit en F2 et le prix change. RECHERCHEV (ou "recherche v") s'appelle VLOOKUP dans un Excel anglais, et le tableau affiche la formule sous cette forme : =VLOOKUP(F2,A2:D6,3,FALSE).

Prix d'un produit
G2
ABCDEFG
1ProductCategoryPriceStockLook forPrice
2AppleFruit$1.2040Pear$1.50
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEV(F2;A2:D6;3;FAUX)

Cliquez sur G2 pour voir la table A2:D6 encadrée. Remplacez le 3 de la formule par 2 et G2 renvoie la catégorie au lieu du prix, car Category est la deuxième colonne de la table. La recherche ignore la casse : pear trouve Pear.

Syntaxe de RECHERCHEV

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
ArgumentCe que c'estDans l'exemple
lookup_value (valeur_cherchée)La valeur à trouver.F2 (Pear)
table_array (table_matrice)La table où chercher. RECHERCHEV ne cherche que dans sa première colonne.A2:D6
col_index_num (no_index_col)La colonne de la table à renvoyer, comptée à partir de la première colonne de la table (1).3 (Price)
range_lookup (valeur_proche)FAUX ou 0 pour une correspondance exacte. VRAI, 1 ou rien pour une correspondance approximative.FAUX

Le numéro de colonne se compte depuis le début de la table, pas depuis la colonne A de la feuille. Dans une table qui commence en colonne C, un col_index_num de 2 désigne la colonne D. Un nombre supérieur à la largeur de la table renvoie #REF!, et 0 renvoie #VALEUR! (en anglais #VALUE!).

Dans un Excel français, la virgule sert de séparateur décimal et les arguments sont séparés par des points-virgules : =RECHERCHEV(F2;A2:D6;3;FAUX). Vous pouvez aussi taper les formules du tableau de cette façon.

Choisir la colonne renvoyée avec EQUIV

Un 3 écrit en dur se casse sans bruit quand quelqu'un insère une colonne dans la table : la formule continue de renvoyer la troisième colonne, qui contient désormais autre chose. Laissez plutôt EQUIV (MATCH en anglais) trouver le numéro de colonne à partir de l'en-tête. Ici, G1 est une liste déroulante : choisissez Stock ou Category et G2 suit.

Numéro de colonne à partir de l'en-tête
G2
ABCDEFG
1ProductCategoryPriceStockLook forPrice
2AppleFruit$1.2040Carrot0.8
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEV(F2;A2:D6;EQUIV(G1;A1:D1;0);FAUX)

EQUIV(G1;A1:D1;0) renvoie la position de "Price" dans la ligne d'en-tête, 3, et RECHERCHEV l'utilise comme numéro de colonne : 0.8 pour Carrot. En français, la formule de G2 s'écrit =RECHERCHEV(F2;A2:D6;EQUIV(G1;A1:D1;0);FAUX). C'est une recherche à double entrée : une ligne choisie par produit, une colonne choisie par en-tête. La même idée écrite avec INDEX au lieu de RECHERCHEV se trouve sur la page INDEX et EQUIV.

Correspondance approximative : RECHERCHEV avec VRAI

Avec VRAI comme dernier argument, RECHERCHEV ne cherche pas une valeur égale. Elle trouve la plus grande valeur inférieure ou égale à la valeur cherchée. C'est ce qu'il faut pour des tranches : barèmes d'impôt, notes, tarifs d'expédition, paliers de commission. La première colonne doit être triée du plus petit au plus grand.

Taux de commission selon les ventes
F2
ABCDEF
1Sales fromRateRepSalesRate
200%Ana7500%
310003%Ben4,2003%
450005%Cara5,0005%
5100008%Dev12,5008%
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEV(E2;$A$2:$B$5;2;VRAI)

Les 4 200 de Ben ne figurent pas dans la colonne A. La plus grande valeur qui ne les dépasse pas est 1 000, il obtient donc 3 %. Les 5 000 de Cara correspondent exactement à la ligne 5 000 et obtiennent 5 %. Les 12 500 de Dev dépassent la dernière tranche et obtiennent le dernier taux, 8 %. Une valeur inférieure à la première tranche (ici, un chiffre de ventes négatif) renvoie #N/A, c'est pourquoi la table commence à 0.

Les $ de $A$2:$B$5 maintiennent la table en place quand F2 est recopiée jusqu'à F5. Sans eux, F3 chercherait dans A3:B6 et sauterait la première tranche.

Omettre le quatrième argument revient à mettre VRAI. Sur une liste de produits non triée, c'est un bug silencieux : Excel cherche comme si la liste était triée et peut renvoyer le prix d'une mauvaise ligne, ou #N/A pour une valeur pourtant présente. Quand vous cherchez des noms, des codes ou des identifiants, terminez toujours par FAUX.

Pourquoi RECHERCHEV renvoie #N/A

#N/A signifie "non trouvé" (l'erreur porte le même nom en français et en anglais). Le tableau ci-dessous montre trois causes fréquentes, et la colonne G reprend chaque recherche entourée de SI.NON.DISP (IFNA en anglais) et de SUPPRESPACE (TRIM).

Trois recherches qui renvoient #N/A
F2
ABCDEFG
1ProductCategoryPriceStockLook forPriceFixed
2AppleFruit$1.2040Kiwi#N/ANot found
3PearFruit$1.5025Milk #N/A$1.10
4CarrotVegetable$0.8060Fruit#N/ANot found
5BreadBakery$2.4015
6MilkDairy$1.1030
#N/A La valeur cherchée n’est pas dans la plage de recherche.Dans Excel en français : =RECHERCHEV(E2;$A$2:$D$6;3;FAUX)
  1. La valeur n'est pas dans la table. Kiwi n'est pas dans A2:A6. C'est un vrai "non trouvé", et SI.NON.DISP(...;"Not found") le transforme en texte lisible. Remplacez E2 par Apple et les deux colonnes affichent le prix.
  2. Des espaces en trop. E3 contient "Milk " avec une espace finale, donc ce n'est pas égal à Milk. SUPPRESPACE(E3) la supprime et G3 trouve le prix. Si les espaces sont dans la table, nettoyez une fois la colonne A avec SUPPRESPACE plutôt que dans chaque recherche.
  3. La valeur est dans une autre colonne. Fruit existe, mais dans la colonne B. RECHERCHEV ne cherche que dans la première colonne de la table, donc E4 échoue dans les deux colonnes. Faites commencer la table à la colonne où vous cherchez, ou utilisez RECHERCHEX, qui prend séparément la colonne de recherche et la colonne de résultat.

Utilisez SI.NON.DISP plutôt que SIERREUR autour d'une recherche. SI.NON.DISP n'intercepte que #N/A, donc un #REF! dû à un mauvais numéro de colonne reste visible au lieu d'être masqué en "Not found".

Deux autres causes :

  • Des nombres stockés sous forme de texte. Si la colonne A contient des codes produit saisis comme du texte (souvent après un import, avec un petit triangle vert dans le coin) et que F2 contient le nombre 101, =RECHERCHEV(F2;A2:B6;2;FAUX) renvoie #N/A alors que 101 figure dans la liste. Convertissez l'un des deux côtés : =RECHERCHEV(F2&"";A2:B6;2;FAUX) cherche le texte "101", et =RECHERCHEV(CNUM(F2);A2:B6;2;FAUX) cherche un nombre quand F2 est du texte.
  • Une correspondance approximative sur des données non triées, décrite dans la section précédente.

RECHERCHEV renvoie 0 au lieu d'une cellule vide

Quand la cellule sur laquelle tombe RECHERCHEV est vide, Excel affiche 0, pas une cellule vide. Un 0 dans une colonne Stock se lit alors comme "rupture de stock" alors que le stock n'a jamais été saisi. Ajoutez &"" à la formule, ou testez la longueur du résultat :

=VLOOKUP(F2,A2:D6,4,FALSE)&""
=IF(LEN(VLOOKUP(F2,A2:D6,4,FALSE))=0,"",VLOOKUP(F2,A2:D6,4,FALSE))

Dans un Excel français : =RECHERCHEV(F2;A2:D6;4;FAUX)&"" et =SI(NBCAR(RECHERCHEV(F2;A2:D6;4;FAUX))=0;"";RECHERCHEV(F2;A2:D6;4;FAUX)). La première est plus courte mais transforme chaque nombre renvoyé en texte, qu'une SOMME ultérieure ignorera. La seconde garde les nombres sous forme de nombres.

RECHERCHEV dans une autre feuille

Écrivez le nom de la feuille et ! devant la table. Quand vous construisez la formule dans Excel, cliquez sur l'onglet de l'autre feuille et sélectionnez la plage : Excel écrit Prices!A2:B6 pour vous. Ici, l'onglet Orders cherche les prix dans l'onglet Prices.

Commandes chiffrées à partir de la feuille Prices
D2
ABCDE
1OrderProductQtyPriceTotal
21001Pear3$1.50$4.50
31002Milk2$1.10$2.20
41003Apple5$1.20$6.00
51004Bread1$2.40$2.40
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEV(B2;Prices!$A$2:$B$6;2;FAUX)

Ouvrez l'onglet Prices et changez le prix de Apple : le total de la commande se met à jour. Deux détails :

  • Un nom de feuille avec des espaces doit être entre apostrophes : =RECHERCHEV(B2;'Price list'!$A$2:$B$6;2;FAUX).
  • Une table dans un autre classeur ajoute le nom du fichier entre crochets, [Prices.xlsx]Prices!$A$2:$B$6. Quand ce fichier est fermé, Excel affiche son chemin complet dans la formule et la recherche continue de fonctionner à partir du fichier enregistré.

RECHERCHEV avec des caractères génériques (correspondance partielle)

Avec FAUX, la valeur cherchée peut contenir des caractères génériques : * remplace un nombre quelconque de caractères et ? exactement un. "*"&E2&"*" trouve le premier produit dont le nom contient le texte de E2.

Trouver un produit à partir d'une partie de son nom
F2
ABCDEF
1ProductCategoryPriceContainsPrice
2Green teaDrinks$3.20coffee$2.90
3Iced coffeeDrinks$2.90
4Coffee beansPantry$8.50
5Black teaDrinks$2.70
6Orange juiceDrinks$3.40
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.Dans Excel en français : =RECHERCHEV("*"&E2&"*";A2:C6;3;FAUX)

"coffee" correspond à Iced coffee et à Coffee beans ; RECHERCHEV renvoie le premier en partant du haut, $2.90. Remplacez E2 par bean pour obtenir $8.50, ou par juice. Pour chercher un vrai astérisque ou point d'interrogation, faites-le précéder d'un tilde : "~*".

RECHERCHEV vers la gauche

RECHERCHEV ne peut pas renvoyer une colonne située à gauche de la colonne où elle cherche : col_index_num ne compte que vers la droite, et un nombre négatif est une erreur. Pour trouver le produit correspondant à un prix donné, cherchez dans la colonne C et renvoyez la colonne A avec RECHERCHEX ou INDEX et EQUIV :

=XLOOKUP(2.4, C2:C6, A2:A6)              Excel 2021 and Microsoft 365
=INDEX(A2:A6, MATCH(2.4, C2:C6, 0))      every version

La première ligne fonctionne dans Excel 2021 et Microsoft 365, la seconde dans toutes les versions ; en français : =RECHERCHEX(2,4;C2:C6;A2:A6) et =INDEX(A2:A6;EQUIV(2,4;C2:C6;0)). Les deux renvoient Bread avec les données du premier tableau. La page RECHERCHEX donne l'explication complète.

Exercice : frais d'expédition selon le poids

Tarifs d'expédition
E2
ABCDE
1Weight from (kg)CostWeight (kg)Cost
20$4.507
32$6.00
45$9.50
510$14.00
620$22.00
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.

À vous : Chaque tarif s'applique à partir de son poids jusqu'au poids suivant de la liste. En E2, utilisez RECHERCHEV (VLOOKUP) pour renvoyer les frais d'expédition du colis dont le poids est en D2.

RECHERCHEV avec deux critères

RECHERCHEV prend une seule valeur cherchée. Pour faire correspondre deux colonnes, créez une colonne d'aide qui les assemble, placez-la en premier dans la table et cherchez le même texte assemblé. La colonne A ci-dessous contient =B2&"-"&C2 recopiée vers le bas, elle contient donc Coffee-Small, Coffee-Large et ainsi de suite.

Prix selon le produit et la taille
G2
ABCDEFG
1KeyProductSizePriceProductSizePrice
2Coffee-SmallCoffeeSmall$2.50TeaLarge
3Coffee-LargeCoffeeLarge$3.50
4Tea-SmallTeaSmall$2.00
5Tea-LargeTeaLarge$3.00
6Juice-SmallJuiceSmall$3.00
Cliquez sur une cellule pour voir sa formule. Modifiez un nombre ou une formule et la feuille se recalcule.

À vous : La colonne A assemble le produit et la taille avec un tiret. En G2, renvoyez le prix du produit de E2 dans la taille de F2.

Le séparateur compte : "Tea"&"Large" donne TeaLarge, qui ne correspond à rien dans la colonne A. Dans Excel 2021 et Microsoft 365, vous pouvez vous passer de la colonne d'aide avec =RECHERCHEX(1;(B2:B6=E2)*(C2:C6=F2);D2:D6) ; la page recherche avec plusieurs critères montre cette méthode et la version INDEX/EQUIV.

Questions fréquentes

Comment faire une RECHERCHEV dans Excel ?

Tapez =RECHERCHEV( et donnez quatre arguments : la valeur à trouver, la table (sa première colonne doit contenir cette valeur), le numéro de la colonne à renvoyer, et FAUX pour une correspondance exacte. =RECHERCHEV("Pear";A2:D6;3;FAUX) trouve Pear dans la colonne A et renvoie la valeur de la colonne C de cette ligne.

Que signifie VRAI ou FAUX à la fin de RECHERCHEV ?

FAUX (ou 0) demande une correspondance exacte et renvoie #N/A quand la valeur est absente. VRAI (ou 1, ou l'argument omis) demande une correspondance approximative : la plus grande valeur inférieure ou égale à la valeur cherchée, ce qui ne fonctionne que si la première colonne est triée par ordre croissant.

Pourquoi ma RECHERCHEV renvoie-t-elle #N/A ?

La valeur n'a pas été trouvée dans la première colonne de la table. Les causes habituelles sont une faute de frappe, une espace en trop ("Milk " n'est pas "Milk"), un nombre stocké sous forme de texte d'un seul côté, ou une valeur qui se trouve dans une autre colonne. Entourez la formule de SI.NON.DISP pour afficher votre propre texte : =SI.NON.DISP(RECHERCHEV(F2;A2:D6;3;FAUX);"Not found").

RECHERCHEV peut-elle chercher vers la gauche ?

Non. RECHERCHEV ne renvoie que les colonnes situées à droite de la première colonne de la table. Utilisez =RECHERCHEX(F2;C2:C6;A2:A6) dans Excel 2021 ou Microsoft 365, ou =INDEX(A2:A6;EQUIV(F2;C2:C6;0)) dans toutes les versions.

Comment faire une RECHERCHEV dans une autre feuille ?

Placez le nom de la feuille et un point d'exclamation devant la plage : =RECHERCHEV(B2;Prices!$A$2:$B$6;2;FAUX). Si le nom de la feuille contient une espace, mettez-le entre apostrophes : 'Price list'!$A$2:$B$6.

Illustration des langages de programmation de Coddy

Apprendre à coder avec Coddy

COMMENCER