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

Fonction IFERROR dans Excel — Intercepter les erreurs sans masquer vos bugs (IFERROR vs IFNA)

|

Fonction IFERROR dans Excel — Intercepter les erreurs sans masquer vos bugs (IFERROR vs IFNA)

L'essentielIFERROR(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ôt IFNA : il n'intercepte que #N/A et laisse les vraies erreurs remonter. Mieux encore, les nouvelles recherches devraient utiliser l'argument intégré if_not_found de XLOOKUP. IFERROR comme IFNA exigent 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 : IFERROR est un filet de sécurité, pas un correctif
  • L'anti-motif : tout envelopper dans IFERROR masque de vrais bugs
  • Pourquoi IFNA est 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_found de XLOOKUP rend souvent IFERROR inutile

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/MATCHIFNA 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 0 pour une valeur manquante et il entrera dans la moyenneAVERAGE et 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!, et SUM la sautera mais ISNUMBER lira FALSE.
  • Pour « pas de donnée », NA() est souvent le repli le plus honnête — les graphiques sautent les points #N/A au 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