SIERREUR vs SI.NON.DISP : masquer les erreurs Excel

Excel dispose de deux fonctions pour intercepter les erreurs et les remplacer par une valeur personnalisée : SIERREUR (qui capture toutes les erreurs) et SI.NON.DISP (qui capture uniquement #N/A). Le choix entre les deux a des implications importantes sur la fiabilité de vos données.

Les erreurs Excel en un coup d'œil

ErreurCause principaleCapturée par SIERREURCapturée par SI.NON.DISP
#N/AValeur introuvable (RECHERCHEV, EQUIV…)OuiOui
#VALEUR!Type de données incorrectOuiNon
#REF!Référence supprimée ou invalideOuiNon
#DIV/0!Division par zéroOuiNon
#NOM?Nom de fonction ou de plage nommée inconnuOuiNon
#NBRE!Résultat numérique impossibleOuiNon
#NUL!Intersection videOuiNon

Comparatif des deux fonctions

SIERREUR

Capture toutes les erreurs

Remplace n'importe quelle erreur par la valeur spécifiée

=SIERREUR(valeur; valeur_si_erreur)

=SIERREUR(RECHERCHEV(A2;B:C;2;0);"Non trouvé")
=SIERREUR(D2/E2;0)
=SIERREUR(1/A2;"—")

Disponible depuis Excel 2007.

SI.NON.DISP

Capture uniquement #N/A

Remplace #N/A ; laisse passer toutes les autres erreurs

=SI.NON.DISP(valeur; valeur_si_na)

=SI.NON.DISP(RECHERCHEV(A2;B:C;2;0);"Non trouvé")
=SI.NON.DISP(EQUIV(A2;D:D;0);"Absent")
=SI.NON.DISP(RECHERCHEX(A2;B:B;C:C);"—")

Disponible depuis Excel 2013.

La différence qui change tout

Imaginez que votre formule RECHERCHEV contient une faute de frappe dans le nom de la plage :

— Avec SIERREUR : le #NOM? est masqué, tout semble normal
=SIERREUR(RECHERCHEV(A2;Produits_!;2;0);"Non trouvé")
→ Affiche "Non trouvé" même si le problème est une erreur dans la formule

— Avec SI.NON.DISP : le #NOM? reste visible, vous détectez le bug
=SI.NON.DISP(RECHERCHEV(A2;Produits_!;2;0);"Non trouvé")
→ Affiche #NOM? car ce n'est pas un #N/A
Le piège de SIERREUR : masquer toutes les erreurs peut dissimuler de vrais bugs — formules cassées, références invalides, colonnes déplacées. Préférez SI.NON.DISP dès que vous gérez des recherches, et n'utilisez SIERREUR que quand vous êtes certain qu'aucun autre type d'erreur ne peut survenir.

Avec RECHERCHEV et RECHERCHEX

— RECHERCHEV : #N/A quand la valeur n'existe pas dans la table
=SI.NON.DISP(RECHERCHEV(A2;$D$2:$F$100;2;0);"Non trouvé")

— RECHERCHEX (Excel 365) : possède son propre paramètre par défaut
=RECHERCHEX(A2;D2:D100;E2:E100;"Non trouvé")   ← pas besoin de SIERREUR
← Mais SI.NON.DISP reste utile en combinaison avec des formules imbriquées
RECHERCHEX (Excel 365) accepte un quatrième argument qui remplace la valeur si non trouvé — souvent vous n'avez pas besoin de SIERREUR ni de SI.NON.DISP avec cette fonction.

Avec EQUIV et INDEX

— EQUIV renvoie #N/A si la valeur est introuvable
=SI.NON.DISP(INDEX(C:C;EQUIV(A2;B:B;0));"Introuvable")

— Avec double correspondance (lignes + colonnes) :
=SI.NON.DISP(
    INDEX($C$2:$F$100; EQUIV(A2;$B$2:$B$100;0); EQUIV(B2;$C$1:$F$1;0));
    "—"
)

Quand SIERREUR est le bon choix

— Division conditionnelle : le seul risque est #DIV/0!
=SIERREUR(B2/C2;0)

— Calcul racine : le seul risque est #NBRE! (nombre négatif)
=SIERREUR(RACINE(A2);"N/A")

— Somme sur plage avec valeurs texte mélangées
=SIERREUR(SOMMEPROD(...);"—")

Dans ces cas, le type d'erreur attendu est connu et unique — SIERREUR est parfaitement adapté.

Tableau de décision

SituationRecommandation
Valeur introuvable dans RECHERCHEV / EQUIVSI.NON.DISP — laisse les vraies erreurs de formule visibles
Division par zéro possibleSIERREUR — seul risque connu = #DIV/0!
RECHERCHEX avec valeur absenteUtiliser le 4e argument de RECHERCHEX directement
SOMMEPROD avec erreurs dans la plageSIERREUR autour de chaque sous-expression, ou SIERREUR(valeur;0)
Prototypage rapide sur formule complexeSIERREUR temporairement, puis affiner
Formule de production en production partagéeSI.NON.DISP — les erreurs inattendues doivent rester visibles

Astuce : imbriquer pour distinguer plusieurs erreurs

=SI(ESTNA(RECHERCHEV(A2;D:E;2;0));
    "Produit non référencé";
    SI(ESTERREUR(RECHERCHEV(A2;D:E;2;0));
        "Erreur de formule — vérifiez la table";
        RECHERCHEV(A2;D:E;2;0)
    )
)
→ Affiche un message différent selon le type d'erreur

Cette approche (ancienne mais universelle) utilise ESTNA et ESTERREUR pour distinguer les erreurs. Elle reste utile quand vous voulez des messages d'erreur spécifiques selon le cas.

Ignorer les erreurs dans une somme → SI vs SI.CONDITIONS vs SI.MULTIPLE Fiche SIERREUR