L'essentiel —
IFERROR(formule, valeur_si_erreur)exécute votre formule et, si elle erre, renvoie un repli à la place :=IFERROR(A2/B2, 0). Le piège qui coûte des heures aux gens : IFERROR intercepte tous les types d'erreur —#REF!,#NAME?,#VALUE!,#DIV/0!, tous — donc il masque allègrement le vrai bug (une colonne supprimée, une fonction mal orthographiée) en même temps que celui que vous attendiez. Pour une recherche qui pourrait ne rien trouver, utilisez plutôtIFNA: il n'intercepte que#N/Aet laisse les vraies erreurs remonter. Mieux encore, les nouvelles recherches devraient utiliser l'argument intégréif_not_founddeXLOOKUP.IFERRORcommeIFNAexigent Excel 2013+.
=IFERROR(A2/B2, 0) ' B2 vaut 0 ou est vide -> 0 au lieu de #DIV/0!
=IFNA(XLOOKUP(A2, Ids, Names), "Not found") ' seule une absence de correspondance est interceptée
IFERROR est la fonction vers laquelle les gens tendent la main à l'instant où
ils voient une erreur dans une cellule — et c'est précisément ce réflexe qui pose
problème. Bien employé, il rend un modèle robuste ; utilisé comme une couverture
jetée sur tout, il transforme votre feuille de calcul en une feuille qui paraît
propre tout en vous mentant discrètement. Ce guide s'articule autour d'une
recommandation forte : interceptez l'erreur que vous attendez, pas toutes les
erreurs qui existent.
Remarque : dans une interface Excel en français, la fonction s'appelle SIERREUR (IFERROR). Apparentées : IFNA = SI.NON.DISP, IF = SI, ISERROR = ESTERREUR, XLOOKUP = RECHERCHEX, VLOOKUP = RECHERCHEV, MATCH = EQUIV, INDEX = INDEX, AVERAGE = MOYENNE, SUM = SOMME, ISNUMBER = ESTNUM, FILTER = FILTRE, NA = NA. Dans Excel en français, 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 :
IFERRORest un filet de sécurité, pas un correctif - L'anti-motif : tout envelopper dans
IFERRORmasque de vrais bugs - Pourquoi
IFNAest généralement le bon outil pour les recherches - Le piège de performance de l'ancien motif
IF(ISERROR(…)) - Choisir une valeur de repli qui n'empoisonne pas vos totaux
- Pourquoi le
if_not_founddeXLOOKUPrend souventIFERRORinutile
Le modèle mental : un filet de sécurité, pas un correctif
IFERROR ne prévient pas une erreur — il intercepte la formule après qu'elle
a déjà échoué et vous remet autre chose :
' "Calcule A2/B2. Si ça explose, donne-moi 0 à la place."
=IFERROR(A2/B2, 0)
Voyez-le comme un filet tendu sous un funambule. Le filet est sensé pour une chute
que vous pouvez anticiper — un diviseur parfois nul, une recherche parfois sans
résultat. Mais un filet ne sait pas pourquoi vous êtes tombé. Si vous êtes tombé
parce que la corde était coupée (vous avez supprimé une colonne référencée, ou
mal tapé =VLOOKUP en =VLOOKP), le filet vous rattrape tout pareil — et vous
n'apprenez jamais que la corde est rompue. C'est cet aveuglement qui constitue
tout le danger.
L'anti-motif : IFERROR comme couverture jetée sur tout
Voici le geste qui masque les bugs. Quelque chose affiche une erreur, alors vous enveloppez la formule entière et passez à autre chose :
=IFERROR(SomeBigFormula(...), "") ' faire disparaître le rouge
La cellule a l'air propre maintenant. Mais IFERROR avale tous les types
d'erreur à égalité :
| Erreur | Ce que ça signifie d'habitude | Faut-il la masquer ? |
|---|---|---|
#N/A |
Une recherche n'a trouvé aucune correspondance | Souvent oui — c'est attendu |
#DIV/0! |
Le diviseur est nul ou vide | Parfois — si zéro est valide |
#REF! |
Une cellule référencée a été supprimée | Non — c'est un vrai bug |
#NAME? |
Fonction/nom mal orthographié | Non — c'est un vrai bug |
#VALUE! |
Mauvais type (du texte là où un nombre est attendu) | Non — généralement un vrai bug |
Un IFERROR couverture traite les trois du bas exactement comme les deux du
haut. Vous supprimez une colonne trois mois plus tard, la formule passe en
#REF!, et au lieu d'une erreur bien visible vous obtenez une cellule
proprement vide — et un rapport silencieusement faux. La règle : n'enveloppez
jamais une formule dans IFERROR pour faire disparaître une erreur. Ne
l'enveloppez que pour gérer un échec précis et attendu — et prouvez d'abord
que la formule est correcte sur des données propres.
IFNA : n'interceptez que ce que vous vouliez intercepter
La plupart du temps, l'erreur que vous attendez réellement, c'est un #N/A issu
d'une recherche qui n'a pas trouvé de correspondance. C'est exactement à ça que
sert IFNA — il intercepte #N/A et rien d'autre :
' IFERROR — masque aussi bien une absence de correspondance qu'une référence cassée
=IFERROR(VLOOKUP(A2, Table, 2, 0), "Not found")
' IFNA — gère l'absence de correspondance, laisse #REF!/#NAME? continuer à crier
=IFNA(VLOOKUP(A2, Table, 2, 0), "Not found")
Les deux donnent « Not found » quand l'identifiant est absent. La différence
apparaît le jour où autre chose casse : avec IFNA, une colonne supprimée fait
toujours remonter #REF! haut et fort ; avec IFERROR, c'est enterré sous « Not
found ». Pour les recherches — VLOOKUP, XLOOKUP, MATCH, INDEX/MATCH —
IFNA est le défaut correct, pas IFERROR. Ne tendez la main vers IFERROR
que lorsque l'erreur attendue n'est véritablement pas #N/A (une division
délibérée qui peut tomber sur zéro, par exemple).
Le piège de performance : ne calculez pas la formule deux fois
Avant l'existence de IFERROR (avant 2007), la seule façon de piéger une erreur
était le motif IF(ISERROR(…)) — et il a un coût caché :
' Ancien motif — exécute le VLOOKUP DEUX FOIS (pour le test, puis à nouveau pour la valeur)
=IF(ISERROR(VLOOKUP(A2, T, 2, 0)), "", VLOOKUP(A2, T, 2, 0))
' IFERROR — l'exécute une seule fois
=IFERROR(VLOOKUP(A2, T, 2, 0), "")
L'ancienne forme évalue la recherche coûteuse une fois pour la tester et une
seconde fois pour la renvoyer — le double de travail sur chaque ligne, ce qui
s'accumule vite sur de grandes feuilles. IFERROR (et IFNA) n'évaluent la
formule interne qu'une seule fois. S'il vous reste des motifs IF(ISERROR(…))
dans des classeurs hérités, les réduire à IFERROR/IFNA est une accélération
gratuite et un gain de lisibilité.
Choisissez un repli qui n'empoisonne pas vos nombres
Le type du second argument importe plus que les gens ne le pensent, parce que tout ce que vous renvoyez s'écoule dans tout ce qui suit en aval :
- Renvoyez
0pour une valeur manquante et il entrera dans la moyenne —AVERAGEet les graphiques traitent désormais « pas de donnée » comme un vrai zéro et tirent le résultat vers le bas. - Renvoyez
""(texte vide) et toute formule numérique sur cette cellule peut lever#VALUE!, etSUMla sautera maisISNUMBERliraFALSE. - Pour « pas de donnée »,
NA()est souvent le repli le plus honnête — les graphiques sautent les points#N/Aau lieu de les tracer comme des zéros.
Le jugement : choisissez le repli selon la manière dont la cellule est
consommée, pas seulement pour effacer l'erreur. « Vide pour l'affichage,
NA() pour les graphiques, 0 uniquement quand zéro est véritablement le bon
nombre » est un bon défaut.
Pourquoi XLOOKUP rend souvent IFERROR inutile
Pour du travail neuf, le correctif le plus propre est de ne rien envelopper du
tout. XLOOKUP possède un quatrième argument intégré,
if_not_found, qui gère le cas manquant à l'intérieur de la recherche :
=XLOOKUP(A2, Ids, Names, "Not found") ' pas besoin de IFERROR/IFNA
C'est strictement supérieur à l'enveloppement : c'est évalué une seule fois, ça ne
se déclenche que sur une véritable absence de correspondance (pas sur un #REF!
ailleurs), et l'intention est là, dans la formule même. La même idée se retrouve
dans les fonctions modernes — l'argument if_empty de
FILTER joue le même rôle pour « aucune ligne ne
correspond ». Quand la fonction offre son propre gestionnaire d'absence, préférez-le
à un IFERROR externe.
Comment ExcelMaster aide
L'ennui avec la gestion des erreurs, c'est que la mauvaise approche a l'air
identique à la bonne — les deux font disparaître le rouge. ExcelMaster écrit
la version qui ne ment pas : IFNA pour les recherches afin que les vraies
ruptures remontent toujours, le if_not_found de XLOOKUP au lieu d'un
enveloppement externe, et une valeur de repli choisie selon la façon dont la
cellule alimente vos totaux et vos graphiques. Vous décrivez ce que « non trouvé »
doit afficher ; il s'assure qu'une référence cassée ne puisse pas se cacher
derrière.
Questions fréquentes
Quelle est la différence entre IFERROR et IFNA ?
IFERROR intercepte tous les types d'erreur (#REF!, #NAME?, #VALUE!,
#DIV/0!, #N/A, …). IFNA n'intercepte que #N/A. Pour les recherches,
IFNA est plus sûr car il gère une absence de correspondance tout en laissant de
vrais bugs comme #REF! se montrer.
Pourquoi est-ce une mauvaise idée de tout envelopper dans IFERROR ?
Parce que ça masque de vrais bugs. Une colonne supprimée (#REF!) ou une fonction
mal orthographiée (#NAME?) se voit remplacée en silence par votre repli, donc
une formule cassée a l'air correcte et votre résultat est discrètement faux.
N'interceptez que l'erreur précise que vous attendez.
Comment masquer une erreur #DIV/0! ?
Enveloppez uniquement cette division et renvoyez une valeur sensée :
=IFERROR(A2/B2, 0) ou =IFERROR(A2/B2, ""). Assurez-vous que 0 est réellement
la bonne réponse pour « pas de diviseur » — si la cellule alimente un AVERAGE,
un 0 tirera la moyenne vers le bas.
Devrais-je utiliser IFERROR avec VLOOKUP ou XLOOKUP ?
Avec VLOOKUP, préférez IFNA à IFERROR pour n'intercepter qu'une absence de
correspondance. Avec XLOOKUP, sautez complètement l'enveloppement et utilisez
son quatrième argument : =XLOOKUP(A2, Ids, Names, "Not found").
IFERROR fonctionne-t-il dans les anciennes versions d'Excel ?
IFERROR est livré depuis Excel 2007 et IFNA depuis Excel 2013. L'ancienne
solution de contournement IF(ISERROR(…)) fonctionne toujours mais évalue votre
formule deux fois — passez à IFERROR/IFNA dès que vous le pouvez.
Testé dans
Testé dans : Excel 365 (Windows 11) — dernière vérification le 25/06/2026.
Guides associés : Excel IF · Excel IFS & SWITCH · Excel XLOOKUP · Excel FILTER
