🚀The world's best VBA AI has evolved. ExcelMaster is now an autonomous Agent.Read more →
Back to Blog

Fonction VLOOKUP dans Excel — Comment l'utiliser, et le 4ᵉ argument qui la fait dérailler

|

Fonction VLOOKUP dans Excel — Comment l'utiliser, et le 4ᵉ argument qui la fait dérailler

L'essentielVLOOKUP recherche une valeur le long de la colonne la plus à gauche d'un tableau et renvoie quelque chose depuis une colonne située à sa droite : =VLOOKUP(lookup_value, table, col_index_num, [range_lookup]). Le seul réglage qui décide si ça marche, c'est le quatrième argument : mettez FALSE (correspondance exacte) presque à chaque fois. Vous l'oubliez ou vous mettez TRUE ? Excel fait une correspondance approximative, qui exige la première colonne triée par ordre croissant et renverra en silence la mauvaise ligne sur des données non triées. Deux limites strictes découlent de sa conception : VLOOKUP ne sait regarder que vers la droite, et son numéro de colonne est un entier codé en dur qui casse dès que vous insérez une colonne. Fonctionne dans toutes les versions ; XLOOKUP lève les deux limites dans Excel 365.

=VLOOKUP(A2, Products, 3, FALSE)    ' cherche A2 dans la col 1, renvoie la col 3, exact
=VLOOKUP("APX-100", $E$2:$H$500, 4, FALSE)   ' verrouillez le tableau avec $ quand vous recopiez

VLOOKUP est la fonction de recherche la plus utilisée au monde, et presque tous les problèmes que les gens rencontrent avec elle se ramènent à un seul fait sur son fonctionnement : elle ne cherche pas dans le tableau. Elle balaie une seule colonne — la plus à gauche — de haut en bas, et lorsqu'elle trouve votre valeur elle se décale d'un nombre fixe de colonnes vers la droite. Une fois cette image en tête, le piège de la correspondance exacte, le mur du « ne peut pas regarder à gauche » et le numéro de colonne cassé cessent tous d'être des mystères.

Remarque : dans une interface Excel en français, ces fonctions s'appellent RECHERCHEV (VLOOKUP), RECHERCHEH (HLOOKUP), RECHERCHE (LOOKUP), INDEX (INDEX), EQUIV (MATCH), RECHERCHEX (XLOOKUP), SIERREUR (IFERROR), SI (IF), FILTRE (FILTER), SUPPRESPACE (TRIM) et SUBSTITUE (SUBSTITUTE). Les codes d'erreur s'affichent #N/A, #REF!, #NOM?, #VALEUR!, #DIV/0!. Les formules ci-dessous utilisent les noms anglais — le comportement est identique.

Ce que vous allez apprendre

  • Le modèle mental : VLOOKUP balaie la première colonne uniquement, puis compte vers la droite
  • Le bug n° 1 : le quatrième argument, et pourquoi il doit valoir FALSE
  • Le mur : VLOOKUP ne sait pas regarder à gauche — et quoi faire à la place
  • Le casseur silencieux : un numéro de colonne codé en dur qui meurt quand vous insérez une colonne
  • Ce que #N/A veut vraiment dire, et comment le corriger (pas seulement le masquer)
  • Le seul cas où la correspondance approximative a raison : les recherches par tranches

Le modèle mental : elle balaie la première colonne, puis compte vers la droite

Imaginez votre tableau comme une grille. VLOOKUP pose son doigt en haut de la colonne la plus à gauche et le fait glisser vers le bas jusqu'à trouver lookup_value. C'est la seule colonne qu'elle recherche jamais. Quand elle tombe sur une correspondance, elle déplace son doigt vers la droite de col_index_num colonnes et lit ce qui s'y trouve.

=VLOOKUP(A2, Products, 3, FALSE)
'          |       |     |   |
'          |       |     |   +-- correspondance exacte
'          |       |     +------ renvoie la 3ᵉ colonne du tableau
'          |       +------------ le tableau (la col 1 est celle qu'elle recherche)
'          +-------------------- la valeur à trouver, dans la col 1

Deux choses sont donc figées dès le départ. La valeur que vous recherchez doit se trouver dans la première colonne du tableau que vous lui donnez, et le nombre 3 est compté à partir de cette première colonne, pas à partir de la colonne A de la feuille. Tout ce qui suit est une conséquence de cette unique conception.

Le bug n° 1 : le quatrième argument (trompez-vous et il vous ment)

range_lookup est facultatif, et c'est précisément le piège. Omettez-le et Excel applique par défaut TRUE — une correspondance approximative :

=VLOOKUP(A2, Products, 3)          ' DANGER — bascule sur la correspondance approximative
=VLOOKUP(A2, Products, 3, TRUE)    ' la même chose, écrite en toutes lettres
=VLOOKUP(A2, Products, 3, FALSE)   ' CORRECT dans 99 % des cas — correspondance exacte

La correspondance approximative suppose que la première colonne est triée par ordre croissant et renvoie la ligne dont la valeur est la plus grande, tout en restant inférieure ou égale à votre valeur recherchée. Sur une liste de produits non triée, c'est une mauvaise réponse d'apparence aléatoire — et il n'y a aucune erreur, aucun avertissement. La formule renvoie un nombre ; c'est simplement le mauvais. Cette seule omission est le bug VLOOKUP le plus répandu qui soit.

L'habitude qui vous sauve : tapez toujours FALSE (ou 0) comme quatrième argument, sauf si vous avez une raison précise de ne pas le faire. La correspondance exacte trouve la ligne que vous visiez ou renvoie #N/A — un honnête « introuvable » vaut mieux qu'un mauvais nombre silencieux, à tous les coups.

Le mur : VLOOKUP ne sait regarder que vers la droite

Parce qu'elle recherche la première colonne et compte vers la droite, la valeur que vous renvoyez doit se trouver à droite de la valeur que vous recherchez. Vous voulez rechercher un identifiant de produit et renvoyer le nom situé dans une colonne à sa gauche ? VLOOKUP en est tout simplement incapable — il n'existe pas de numéro de colonne négatif.

' Tableau : A = Nom, B = ID.  Vous avez l'ID, vous voulez le Nom (à GAUCHE).
=VLOOKUP(F2, A:B, ... )   ' impossible — le Nom est à gauche de l'ID, aucun numéro ne marche

Ce n'est pas une limitation qu'on contourne à force d'astuce — c'est la raison d'être d'INDEX + MATCH et, plus tard, de XLOOKUP. Tous deux recherchent et renvoient dans des plages indépendantes, si bien que le sens cesse d'avoir de l'importance. Si vous vous surprenez à réorganiser des colonnes juste pour faire plaisir à VLOOKUP, c'est le signal qu'il faut changer d'outil, pas déplacer des données.

Le casseur silencieux : un numéro de colonne codé en dur

col_index_num est un entier littéral, et il n'a aucune idée de quelle colonne vous vouliez réellement parler. Écrivez VLOOKUP(A2, Data, 4, FALSE) et il renverra toujours la 4ᵉ colonne — même après que vous ayez inséré une nouvelle colonne au milieu de Data, ce qui pousse votre cible en position 5. La formule ne renvoie pas d'erreur. Elle renvoie discrètement la mauvaise colonne.

C'est la raison n° 1 pour laquelle un classeur hérité « casse d'un coup » après que quelqu'un a modifié le tableau source. Deux correctifs :

' Correctif 1 — laissez MATCH trouver la colonne par son en-tête, pour qu'elle s'auto-ajuste
=VLOOKUP(A2, Data, MATCH("Price", Data_Headers, 0), FALSE)

' Correctif 2 — abandonnez complètement le numéro de colonne avec INDEX/MATCH ou XLOOKUP
=INDEX(Data_Price, MATCH(A2, Data_ID, 0))

Envelopper MATCH à l'intérieur de VLOOKUP transforme l'entier fragile en une recherche par en-tête qui survit aux colonnes insérées. C'est un pansement ; le vrai remède est une fonction qui n'a jamais eu besoin de compter des colonnes au départ.

Ce que #N/A veut vraiment dire — et comment le corriger

Un #N/A renvoyé par VLOOKUP signifie une seule chose : la valeur n'a pas été trouvée dans la première colonne. Avec une correspondance exacte, c'est généralement l'un de ces cas :

  • Espaces ou caractères cachés"APX-100 " ne correspondra pas à "APX-100". Nettoyez la clé avec TRIM (ou SUBSTITUTE pour d'éventuels espaces insécables) des deux côtés.
  • Incohérence nombre-stocké-comme-texte — la valeur recherchée est le texte "1001" mais le tableau contient le nombre 1001 (ou l'inverse). Ils ne correspondront jamais. Corrigez le type, ne le rafistolez pas.
  • La valeur n'est vraiment pas dans la première colonne — vérifiez que vous avez bien pointé le tableau sur la bonne colonne de départ.

Pour afficher un message aimable plutôt que l'erreur brute, enveloppez la formule — mais enveloppez-la au plus juste, de manière à n'attraper que le cas « introuvable », pas de vraies erreurs de formule :

=IFERROR(VLOOKUP(A2, Products, 3, FALSE), "Introuvable")

Ne tendez la main vers IFERROR qu'une fois la formule correcte. Un IFERROR généralisé autour d'un VLOOKUP défectueux masque le bug qui le fait échouer — vous livrerez « Introuvable » pour des lignes qui auraient dû correspondre.

Le seul cas où la correspondance approximative a raison : les recherches par tranches

Il existe un usage légitime de TRUE : les recherches par tranches ou par paliers, où vous voulez la ligne dans laquelle une valeur tombe plutôt qu'une correspondance exacte — tranches d'imposition, paliers de commission, seuils de notes, tranches de poids d'expédition.

' Tranches de notes : 0->F, 60->D, 70->C, 80->B, 90->A  (première colonne triée croissant !)
=VLOOKUP(B2, Grade_Table, 2, TRUE)    ' 73 -> tombe dans la tranche des 70 -> "C"

Ici la correspondance approximative fait exactement ce que vous voulez : trouver le plus grand seuil qui ne dépasse pas le score. La condition non négociable est que la première colonne soit triée par ordre croissant — sinon ça casse de la manière silencieuse, propre aux données non triées, vue plus haut. C'est le seul scénario où omettre FALSE est une fonctionnalité, pas un bug.

Le choix éclairé : VLOOKUP ou quelque chose de plus récent ?

VLOOKUP convient très bien, et est partout, pour le cas simple : correspondance exacte, valeur renvoyée à droite, colonnes qui ne bougeront pas. Passez au-delà quand :

  • Vous devez regarder à gauche, ou rechercher et renvoyer dans l'un ou l'autre sens → INDEX + MATCH ou XLOOKUP.
  • Les colonnes du tableau source sont modifiées → tout ce qui ne code pas un numéro de colonne en dur.
  • Vous voulez une valeur « introuvable » intégrée ou une correspondance sur plusieurs critères → XLOOKUP.

VLOOKUP n'est pas mauvais ; c'est juste le plus ancien outil d'un tiroir qui en contient désormais de meilleurs. Connaître ses trois points faibles — le quatrième argument, le mur du sens unique vers la droite et le numéro de colonne fragile — c'est ce qui vous permet de l'utiliser sans risque et de savoir quand vous arrêter.

Comment ExcelMaster aide

La plupart des signalements « mon VLOOKUP est faux » ne sont pas des problèmes de syntaxe — c'est le quatrième argument qui bascule par défaut sur l'approximatif, une valeur de recherche qui est du texte d'un côté et un nombre de l'autre, ou un numéro de colonne qui a dérivé après une modification. ExcelMaster écrit la recherche avec la correspondance exacte verrouillée, repère l'incohérence de type qui provoque votre #N/A, et — lorsque l'agencement appelle une recherche à gauche ou un tableau qui ne cesse de changer — tend la main vers INDEX/MATCH ou XLOOKUP plutôt que de forcer VLOOKUP à faire un travail pour lequel il n'a jamais été conçu.

Questions fréquentes

Comment utiliser VLOOKUP dans Excel ?

=VLOOKUP(lookup_value, table_array, col_index_num, FALSE). Placez la valeur que vous recherchez en premier argument, le tableau (dont la première colonne contient cette valeur) en deuxième, le numéro de la colonne à renvoyer (compté à partir de la première colonne du tableau) en troisième, et FALSE pour une correspondance exacte en quatrième. Exemple : =VLOOKUP(A2, Products, 3, FALSE) trouve A2 dans la première colonne de Products et renvoie la troisième colonne.

Pourquoi mon VLOOKUP renvoie-t-il #N/A ?

#N/A signifie que la valeur n'a pas été trouvée dans la première colonne du tableau. Les causes habituelles sont des espaces cachés (nettoyez avec TRIM), une incohérence nombre-stocké-comme-texte entre la valeur recherchée et le tableau, ou la valeur qui n'est simplement pas dans la première colonne. Corrigez la cause sous-jacente plutôt que de la masquer avec IFERROR.

À quoi sert le quatrième argument de VLOOKUP ?

Il définit le type de correspondance. FALSE (ou 0) signifie correspondance exacte — à utiliser presque toujours. TRUE (ou omis) signifie correspondance approximative, qui exige la première colonne triée par ordre croissant et renvoie la plus grande valeur inférieure ou égale à votre valeur recherchée. La correspondance approximative n'est correcte que pour les recherches par tranches, comme les tranches d'imposition ou les seuils de notes.

VLOOKUP peut-il regarder à gauche ?

Non. VLOOKUP recherche la colonne la plus à gauche et ne peut renvoyer que des colonnes situées à sa droite. Pour rechercher une valeur et renvoyer quelque chose à sa gauche, utilisez INDEX/MATCH ou XLOOKUP, qui gèrent les deux sens.

Pourquoi mon VLOOKUP a-t-il cassé après que j'ai inséré une colonne ?

Parce que col_index_num est un nombre fixe. Insérer une colonne dans le tableau décale votre cible, mais le nombre pointe toujours sur l'ancienne position. Utilisez MATCH("En-tête", …, 0) à la place du nombre littéral pour qu'il s'auto-ajuste, ou passez à INDEX/MATCH ou XLOOKUP, qui ne comptent pas de colonnes.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 05/07/2026.

Guides associés : Excel INDEX & MATCH · Excel HLOOKUP & LOOKUP · XLOOKUP (2025) · Excel IFERROR · Excel FILTER