Retour aux fonctions

VLOOKUP

Recherche verticale. Recherche une clé dans la première colonne d'une plage et renvoie la valeur d'une cellule spécifiée dans la ligne trouvée.

LookupVLOOKUP(search_key, range, index, [is_sorted])

VLOOKUP (« recherche verticale », RECHERCHEV dans un Google Sheets en français) parcourt la première colonne d'une plage à la recherche d'une clé et renvoie une valeur d'une autre colonne, sur la même ligne. C'est la fonction que l'on apprend en premier quand il faut récupérer des données d'un tableau vers un autre : le prix d'un produit à partir de son référence, le service d'un employé à partir de son nom, le taux de TVA d'un pays.

VLOOKUP est aussi facile à mal utiliser. Les problèmes les plus fréquents sont une correspondance approximative qui renvoie silencieusement la mauvaise ligne, des erreurs #N/A causées par des espaces invisibles, et une colonne de recherche située à droite de la valeur que l'on veut obtenir. Ce guide présente la syntaxe, les pièges à éviter et les formules qui résolvent des cas concrets.

Syntaxe

=VLOOKUP(search_key, range, index, [is_sorted])
  • search_key : La valeur à rechercher. Elle est comparée à la première colonne de range.
  • range : Le tableau dans lequel chercher. La colonne contenant la clé doit être la colonne la plus à gauche de cette plage.
  • index : Le numéro de colonne dans range (et non dans la feuille) dont on veut récupérer la valeur. 1 correspond à la colonne de la clé elle-même, 2 à la suivante, etc.
  • is_sorted [Facultatif] : TRUE (valeur par défaut) signifie correspondance approximative et exige que la première colonne soit triée par ordre croissant. FALSE signifie correspondance exacte. Utilisez FALSE, sauf si vous voulez précisément une correspondance approximative.

Version française de Google Sheets. Si votre feuille est réglée sur la France, la fonction s'appelle RECHERCHEV et les arguments sont séparés par des points-virgules : =RECHERCHEV(A1; B2:D10; 2; FAUX). Les exemples ci-dessous utilisent la notation anglaise (virgules, FALSE), qui fonctionne dans les feuilles réglées sur les États-Unis ou le Royaume-Uni.

Exemple rapide : correspondance exacte

Supposons que A2:C6 contienne une liste de produits :

   A (Référence)   B (Produit)   C (Prix)
2  A-100           Cahier        4,50
3  A-101           Stylo         1,20
4  A-102           Agrafeuse     9,99
5  A-103           Chemise       0,80
6  A-104           Marqueur      2,30

Pour obtenir le prix de la référence A-102 :

=VLOOKUP("A-102", A2:C6, 3, FALSE)

Résultat : 9,99. La clé est trouvée dans la colonne A (la première colonne de la plage), et 3 demande la troisième colonne de la plage, c'est-à-dire le prix. En pratique, la clé se trouve le plus souvent dans une cellule : on écrira =VLOOKUP(E2, $A$2:$C$6, 3, FALSE) puis on étirera la formule vers le bas. Les signes $ verrouillent la plage pour qu'elle ne se décale pas lors de la copie.

Correspondance exacte ou approximative

Le quatrième argument détermine la façon dont la clé est comparée, et c'est la source de la plupart des bugs de VLOOKUP.

FALSE : correspondance exacte. Renvoie la première ligne dont la première colonne est égale à la clé. S'il n'y a aucune correspondance, vous obtenez #N/A. La comparaison ne tient pas compte de la casse et accepte les caractères génériques (* pour n'importe quel texte, ? pour un seul caractère) : =VLOOKUP("A-1*", A2:C6, 2, FALSE) renvoie le premier produit dont la référence commence par A-1.

TRUE (ou omis) : correspondance approximative. Renvoie la ligne dont la valeur est la plus grande valeur inférieure ou égale à la clé. C'est utile pour des tranches, comme des barèmes de notes ou des tranches d'imposition, mais uniquement si la première colonne est triée par ordre croissant. Si elle ne l'est pas, le résultat est imprévisible et Sheets ne vous prévient pas.

Un exemple de notation, avec les seuils en F2:G6 :

   F (Note min.)   G (Mention)
2  0               F
3  60              D
4  70              C
5  80              B
6  90              A
=VLOOKUP(84, F2:G6, 2, TRUE)

Résultat : B. 84 n'est pas dans le tableau, donc VLOOKUP prend le plus grand seuil qui ne dépasse pas 84 (80). Si vous aviez oublié le quatrième argument dans une recherche par référence, ce même comportement renverrait un mauvais produit sans aucune erreur. C'est pourquoi il faut écrire FALSE explicitement pour toute recherche par identifiant ou par nom.

Erreurs courantes et comment les corriger

#N/A : « Valeur introuvable dans l'évaluation de VLOOKUP ». La clé n'existe pas dans la première colonne. Avant de conclure que la donnée est absente, vérifiez ces causes :

  • Espaces superflus. "A-102 " n'est pas "A-102". Entourez la clé de TRIM : =VLOOKUP(TRIM(E2), A2:C6, 3, FALSE).
  • Texte ou nombre. Le nombre 1001 et le texte "1001" ne correspondent pas. Convertissez avec VALUE() ou TO_TEXT() pour que les deux côtés soient du même type. Un nombre aligné à gauche dans une cellule indique souvent qu'il est stocké comme du texte.
  • La plage ne commence pas à la colonne de la clé. Si vos clés sont en colonne B, la plage doit commencer en B (B2:D6), pas en A2:D6.
  • Correspondance approximative sur des données non triées. Passez le dernier argument à FALSE.

#REF! : « L'évaluation de VLOOKUP comporte une valeur d'index de colonne hors limites ». index est supérieur au nombre de colonnes de range. Une plage A2:C6 a trois colonnes, donc index ne peut pas dépasser 3.

#VALUE!. index est inférieur à 1 ou n'est pas un nombre.

Pour afficher un message plus lisible qu'une erreur, entourez la formule de IFERROR :

=IFERROR(VLOOKUP(E2, $A$2:$C$6, 3, FALSE), "Introuvable")

À utiliser avec prudence : cela masque toutes les erreurs, y compris un mauvais index. Pendant que vous construisez la formule, laissez IFERROR de côté pour voir ce qui ne va pas réellement.

Formules qui résolvent des problèmes concrets

Renvoyer plusieurs colonnes à la fois

VLOOKUP ne renvoie qu'une colonne par appel, mais vous pouvez passer un tableau à index et entourer la formule de ARRAYFORMULA pour renvoyer plusieurs colonnes côte à côte :

=ARRAYFORMULA(VLOOKUP(E2, A2:C6, {2, 3}, FALSE))

Cette formule renvoie à la fois le nom du produit et son prix, dans deux cellules adjacentes.

Chercher vers la gauche

VLOOKUP ne peut renvoyer que des colonnes situées à droite de la clé. Pour retrouver une référence à partir d'un nom de produit (la référence est à gauche), réorganisez les colonnes avec un tableau littéral :

=VLOOKUP("Agrafeuse", {B2:B6, A2:A6}, 2, FALSE)

Résultat : A-102. Pour des cas plus complexes, INDEX et MATCH (ou XLOOKUP) sont plus propres, comme expliqué plus bas.

Chercher selon deux critères

VLOOKUP ne compare qu'une seule clé. Pour comparer deux colonnes, par exemple le prénom et le nom, construisez une clé combinée à la volée :

=ARRAYFORMULA(VLOOKUP(E2 & F2, {A2:A100 & B2:B100, C2:C100}, 2, FALSE))

Le tableau littéral crée un tableau à deux colonnes : la clé concaténée dans la première, la valeur à renvoyer dans la seconde.

Chercher dans une autre feuille ou un autre fichier

Pour chercher dans un autre onglet, faites précéder la plage du nom de la feuille : =VLOOKUP(A2, Prix!A:C, 3, FALSE). Pour chercher dans un autre fichier, entourez la plage de IMPORTRANGE :

=VLOOKUP(A2, IMPORTRANGE("url_du_classeur", "Prix!A:C"), 3, FALSE)

La première fois, Sheets vous demande d'autoriser l'accès entre les deux fichiers.

Remplir toute une colonne avec une seule formule

Au lieu d'étirer la formule vers le bas, placez-la une seule fois dans la ligne d'en-tête avec ARRAYFORMULA : elle remplira la colonne toute seule :

=ARRAYFORMULA(IF(E2:E="", "", VLOOKUP(E2:E, $A$2:$C$6, 3, FALSE)))

Le IF garde les lignes vides vides, pour ne pas remplir la colonne de #N/A.

VLOOKUP, INDEX/MATCH ou XLOOKUP ?

  • Chercher à gauche de la clé : VLOOKUP ne le peut pas (sauf avec une astuce de tableau). INDEX/MATCH et XLOOKUP le peuvent.
  • Insertion d'une colonne : VLOOKUP casse, car le numéro index est écrit en dur. INDEX/MATCH et XLOOKUP continuent de fonctionner, car ils référencent directement la colonne à renvoyer.
  • Type de correspondance par défaut : VLOOKUP est approximatif par défaut, ce qui est risqué. INDEX/MATCH et XLOOKUP sont exacts par défaut.
  • Valeur « introuvable » intégrée : seul XLOOKUP en propose une. VLOOKUP et INDEX/MATCH nécessitent IFERROR.
  • Familiarité : VLOOKUP est celle que la plupart des gens connaissent déjà.

VLOOKUP convient pour des tableaux simples et stables, et c'est celle que vos collègues reconnaîtront. Préférez XLOOKUP pour tout nouveau travail : elle est exacte par défaut et peut chercher dans toutes les directions. Utilisez INDEX/MATCH pour une recherche qui résiste aux changements de colonnes sans dépendre de XLOOKUP.

Exemple vidéo

Questions fréquentes

VLOOKUP tient-elle compte de la casse ? Non. "apple" et "APPLE" correspondent. Pour une recherche sensible à la casse, utilisez INDEX/MATCH avec EXACT.

Que se passe-t-il quand il y a des clés en double ? VLOOKUP renvoie la première correspondance en partant du haut et ignore les autres. Si vous avez besoin de toutes les correspondances, utilisez FILTER.

VLOOKUP peut-elle renvoyer une ligne entière ? Oui, avec ARRAYFORMULA et une liste d'index ({1,2,3}), comme ci-dessus. Pour une ligne entière ou toutes les correspondances, FILTER est généralement plus simple.

Pourquoi VLOOKUP renvoie-t-elle une mauvaise valeur au lieu d'une erreur ? Presque toujours parce que le quatrième argument a été omis : Sheets a alors utilisé une correspondance approximative sur une colonne non triée. Ajoutez FALSE.

Fonctions associées

  • XLOOKUP : Le remplaçant moderne. Correspondance exacte par défaut, peut chercher dans toutes les directions.
  • HLOOKUP : La même recherche, mais sur la ligne du haut au lieu de la première colonne.
  • INDEX : Récupère une valeur à une position donnée dans une plage.
  • MATCH : Trouve la position d'une valeur dans une plage.
  • IFERROR : Remplace les erreurs par une valeur personnalisée.
  • ARRAYFORMULA : Applique une formule à toute une colonne.

Articles associés

Newsletter

Plus d'exemples sur VLOOKUP arrivent bientôt.

Nous préparons des mises à jour courtes et pratiques pour les utilisateurs avancés de Sheets.