SI.NON.DISP (IFNA en anglais) est LA fonction à utiliser pour gérer les erreurs #N/A dans tes recherches Excel. Quand tu utilises RECHERCHEV, RECHERCHEX ou INDEX/EQUIV et que la valeur n'est pas trouvée, au lieu d'afficher un disgracieux #N/A, tu affiches un message clair et professionnel.
Concrètement, c'est elle qui nettoie tes devis quand un code produit n'existe pas encore dans le catalogue, qui protège tes tableaux RH quand un matricule est invalide, ou qui enchaîne automatiquement plusieurs sources de données en cascade si la première ne trouve pas la valeur. La meilleure amie de toutes tes fonctions de recherche.
Syntaxe de la fonction SI.NON.DISP
=SI.NON.DISP(valeur; valeur_si_na)Comprendre chaque paramètre de la fonction SI.NON.DISP
SI.NON.DISP attend ses deux arguments dans un ordre qu'on ne peut pas inverser : d'abord la formule à surveiller (ta recherche), ensuite la valeur de secours à afficher si elle bute sur un #N/A. Les deux sont obligatoires, ce qui la distingue de SIERREUR où on est parfois tenté de tout fourrer dans le premier.
Le deuxième argument n'est pas forcément un texte : tu peux y glisser un 0, une cellule vide, ou même une autre recherche pour enchaîner les sources.
valeur
: la formule ou l'expression que tu veux tester pour détecter l'erreur #N/ATypiquement, c'est une fonction de recherche : RECHERCHEV(A1; Table; 2; FAUX), INDEX(Plage; EQUIV(A1; Colonne; 0)), ou RECHERCHEX(A1; Tableau).
Excel évalue cette formule en premier. Si elle retourne #N/A (valeur non trouvée), SI.NON.DISP passe au deuxième paramètre. Si elle retourne n'importe quoi d'autre, y compris une autre erreur comme #REF! ou #DIV/0!, SI.NON.DISP retourne cette valeur telle quelle.
valeur_si_na
: la valeur affichée si (et seulement si) la formule retourne #N/AElle peut prendre plusieurs formes selon le contexte : un texte explicite ("Non trouvé", "Produit inconnu"), un nombre par défaut (0 pour les calculs qui suivent), une cellule vide ("" pour un tableau épuré), ou une formule alternative (RECHERCHEV(A1; Table2; 2; 0)) pour chercher dans une autre source.
C'est ce paramètre qui rend SI.NON.DISP si puissant : tu peux brancher une recherche de secours et créer un système en cascade.
Astuce : SI.NON.DISP ne capture QUE l'erreur #N/A. Les autres erreurs (#REF!, #DIV/0!, #VALEUR!) restent visibles, ce qui t'aide à détecter les vrais bugs dans tes formules. C'est pour ça que les utilisateurs avancés préfèrent SI.NON.DISP à SIERREUR pour les recherches.
Pas envie d'écrire la formule SI.NON.DISP à la main ?
Génère-la avec notre IAExemples pratiques pas à pas
Commercial : gérer les produits introuvables dans un catalogue
Tu es commercial et tu crées un devis pour un client. Tu saisis les codes produits et Excel récupère automatiquement les prix via RECHERCHEV. Problème : certains codes n'existent pas (erreur de saisie, produit discontinué), ce qui génère des #N/A qui font très amateur dans ton devis.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Code produit | Prix unitaire | Quantité | Total |
| 2 | PROD-A125 | 49,90 € | 5 | 249,50 € |
| 3 | PROD-X999 | Produit introuvable | 2 | - |
| 4 | PROD-B047 | 129,00 € | 3 | 387,00 € |
| 5 | PROD-C203 | 89,50 € | 1 | 89,50 € |
=SI.NON.DISP(RECHERCHEV(A2; TablePrix; 2; FAUX); "Produit introuvable")Quand le RECHERCHEV ne trouve pas le code dans le catalogue, il renvoie #N/A : la fonction intercepte cette erreur précise et affiche « Produit introuvable » à la place. Ton devis reste professionnel même avec des codes invalides, et le message explicite te signale les lignes à corriger.
Astuce de pro : Pour que le calcul du total ne soit pas bloqué sur les lignes introuvables, utilise 0 comme valeur de remplacement dans la colonne prix : =SI.NON.DISP(RECHERCHEV(A2; TablePrix; 2; FAUX); 0). Le total de la ligne sera alors 0 au lieu de générer une erreur.
RH : afficher les salaires avec recherche sécurisée
Tu travailles aux ressources humaines et tu crées un tableau qui affiche le salaire d'un employé à partir de son matricule. Certains matricules sont incorrects ou les employés ont quitté l'entreprise, générant des #N/A dans ton tableau confidentiel que tu dois présenter à la direction.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Matricule | Nom | Salaire mensuel | Statut |
| 2 | EMP-1045 | Sophie Martin | 3 200 € | Actif |
| 3 | EMP-9999 | Matricule invalide | - | À vérifier |
| 4 | EMP-2187 | Marc Dubois | 3 800 € | Actif |
| 5 | EMP-3042 | Julie Bernard | 4 100 € | Actif |
=SI.NON.DISP(RECHERCHEV(A2; BaseEmployés; 3; 0); "Matricule invalide")La fonction n'attrape que le #N/A et affiche « Matricule invalide », ce qui rend le tableau lisible même pour les non-spécialistes. Point important : si une colonne de la base est supprimée par erreur, c'est #REF! qui apparaîtra (pas le message), de quoi t'alerter aussitôt sur le vrai problème.
Logistique : récupérer les stocks avec plan de secours
Tu es responsable logistique et tu veux afficher le stock d'un produit. Si le produit n'est pas dans l'entrepôt principal, tu veux automatiquement chercher dans l'entrepôt secondaire. SI.NON.DISP te permet de créer ce système de recherche en cascade élégamment.
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Produit | Stock principal | Stock secondaire | Stock disponible |
| 2 | Produit A | 150 | 50 | 150 |
| 3 | Produit B | Non stocké | 75 | 75 |
| 4 | Produit C | 230 | 120 | 230 |
| 5 | Produit D | Non stocké | 0 | 0 |
=SI.NON.DISP(RECHERCHEV(A2; StockPrincipal; 2; 0); RECHERCHEV(A2; StockSecondaire; 2; 0))La fonction cherche d'abord dans l'entrepôt principal ; si le produit y est absent (#N/A), le second argument prend le relais et lance une recherche dans l'entrepôt secondaire. Si ce dernier ne le trouve pas non plus, tu peux imbriquer un troisième SI.NON.DISP pour enchaîner les sources.
Finance : consolider des données de plusieurs filiales
Tu es analyste financier et tu consolides les résultats de plusieurs filiales. Certaines filiales n'ont pas encore envoyé leurs données pour tous les trimestres, créant des #N/A dans ton tableau de consolidation qui doit être présenté au comité de direction.
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | Département | Budget Q1 | Budget Q2 | Budget Q3 | Total |
| 2 | Marketing | 45 000 € | 52 000 € | 48 000 € | 145 000 € |
| 3 | IT | 38 000 € | En attente | 42 000 € | 80 000 € |
| 4 | RH | 22 000 € | 24 000 € | 23 500 € | 69 500 € |
| 5 | R&D | 67 000 € | 71 000 € | En attente | 138 000 € |
=SI.NON.DISP(RECHERCHEV(A2&"-Q2"; DonnéesFiliales; 3; 0); "En attente")Chaque #N/A renvoyé par la recherche est remplacé par « En attente », ce qui rend le tableau lisible et professionnel même avec des données incomplètes. Tu peux aussi utiliser 0 à la place du texte si tu veux que les totaux continuent à se calculer sur les données disponibles.
Envie de t'entraîner sur de vrais exercices Excel ?
M'entraînerLes erreurs fréquentes avec la fonction SI.NON.DISP
Le faux pas le plus fréquent n'est même pas une erreur visible : c'est de dégainer SIERREUR par réflexe à la place de SI.NON.DISP. Tu masques alors un #REF! (colonne supprimée) ou un #DIV/0! sous un sage "Non trouvé", et le vrai bug passe inaperçu pendant des semaines.
Les deux autres pièges sont aussi sournois : oublier le FAUX final dans RECHERCHEV (du coup la recherche approximative ne renvoie jamais de #N/A, et ta sécurité ne se déclenche pas), et choisir "" ou 0 comme remplacement sans penser à ce que tes moyennes et compteurs en feront ensuite.
Utiliser SIERREUR au lieu de SI.NON.DISP : bugs masqués silencieusement
SIERREUR capture TOUTES les erreurs sans distinction, y compris les #REF! qui signalent une colonne supprimée. Si un collègue supprime la colonne D par erreur, =SIERREUR(RECHERCHEV(A1; B:D; 3; 0); "Non trouvé") affiche "Non trouvé" partout sans alerter personne.
Solution : Utilise SI.NON.DISP pour les RECHERCHEV, RECHERCHEX et INDEX/EQUIV : elle laisse les #REF!, #DIV/0! et #VALEUR! visibles, ce qui te permet de détecter les vrais problèmes. Réserve SIERREUR pour les divisions et les calculs mathématiques.
Oublier le mode de recherche FAUX dans RECHERCHEV : SI.NON.DISP ne s'active jamais
Si tu écris =SI.NON.DISP(RECHERCHEV(A1; Table; 2); "Non trouvé") sans le 4ème paramètre FAUX, RECHERCHEV fait une recherche approximative. Elle renvoie une valeur approchée au lieu de #N/A, donc SI.NON.DISP ne s'active jamais, et tu obtiens des résultats silencieusement incorrects.
Solution : Ajoute toujours FAUX ou 0 comme dernier paramètre de RECHERCHEV pour forcer la recherche exacte : =SI.NON.DISP(RECHERCHEV(A1; Table; 2; FAUX); "Non trouvé"). C'est la recherche exacte qui retourne #N/A quand la valeur n'existe pas.
Utiliser "" sans anticiper l'impact sur les calculs suivants
Une cellule contenant "" (chaîne vide) n'est pas vraiment vide pour Excel. Elle est ignorée par MOYENNE mais compte pour NB.VIDE. Un 0 compte dans MOYENNE. Choisir entre "" et 0 sans réfléchir fausse les statistiques qui suivent.
Solution : Choisis la valeur de remplacement selon ce que tes formules en aval attendent : "" si la cellule doit être ignorée dans les moyennes, 0 si elle doit compter comme zéro, et un texte explicite comme "En attente" si les calculs doivent s'arrêter sur cette cellule.
SI.NON.DISP vs SIERREUR vs SI(ESTNA) vs ESTERRNA
Réserve SI.NON.DISP à tes recherches (RECHERCHEV, RECHERCHEX, INDEX/EQUIV) : elle attrape le #N/A tout en laissant filer les #REF! et #DIV/0! qui méritent ton attention. SIERREUR reste le bon choix pour les divisions et les calculs où n'importe quelle erreur doit être neutralisée.
SI(ESTNA(…)) fait la même chose mais évalue ta formule deux fois et reste verbeux : ne le garde que pour Excel 2010 ou antérieur, où SI.NON.DISP n'existe pas. ESTERRNA, lui, ne fait que tester (VRAI/FAUX) sans rien remplacer.
| Critère | SI.NON.DISP | SIERREUR | SI(ESTNA(...)) | ESTERRNA |
|---|---|---|---|---|
| Capture uniquement #N/A | Oui | Non (toutes erreurs) | Oui | Teste seulement |
| Laisse les autres erreurs visibles | Oui (#REF!, #DIV/0!...) | Non (masque tout) | Oui | Oui |
| Renvoie une valeur de remplacement | Oui | Oui | Oui | Non (VRAI/FAUX) |
| Idéal pour RECHERCHEV | Meilleur choix | Trop large | Fonctionne (ancien) | Non |
| Simplicité | Simple | Simple | Formule longue | Partiel |
| Disponibilité | Excel 2013+ | Excel 2007+ | Toutes versions | Toutes versions |
Astuces avancées avec SI.NON.DISP
Recherche en cascade sur plusieurs sources de données
Tu peux imbriquer plusieurs SI.NON.DISP pour créer un système qui teste plusieurs bases dans l'ordre : =SI.NON.DISP(RECHERCHEV(A1; TablePrincipale; 2; 0); SI.NON.DISP(RECHERCHEV(A1; TableSecondaire; 2; 0); RECHERCHEV(A1; TableArchive; 2; 0))).
Cette formule cherche dans la table principale, puis la secondaire si non trouvé, puis l'archive. Parfait quand tu gères des données réparties sur plusieurs onglets ou plusieurs années.
Combiner SI.NON.DISP avec INDEX/EQUIV pour des recherches à gauche
RECHERCHEV ne peut chercher qu'à droite de la colonne-clé. La combinaison INDEX/EQUIV est plus puissante car elle cherche dans n'importe quelle direction, et SI.NON.DISP la complète : =SI.NON.DISP(INDEX(PlageRetour; EQUIV(A1; PlageRecherche; 0)); "Valeur non trouvée").
C'est la formule de référence pour les utilisateurs avancés : elle fonctionne dans toutes les directions et gère proprement les erreurs.
Créer un système de tarification en priorité avec plan de secours
SI.NON.DISP permet de bâtir un système de prix hiérarchisé : prix spécial client, puis prix normal, puis prix par défaut. =SI.NON.DISP(RECHERCHEV(Produit; TablePrixSpeciaux; 2; 0); SI.NON.DISP(RECHERCHEV(Produit; TablePrixNormaux; 2; 0); 100)) cherche un prix spécial, puis normal, et applique 100 par défaut.
Perfait pour les systèmes de remises et promotions sans multiplier les colonnes conditionnelles.
Questions fréquentes sur la fonction SI.NON.DISP
Quelle est la différence entre SI.NON.DISP et SIERREUR ?
SI.NON.DISP ne capture que l'erreur #N/A (typique des recherches sans résultat), tandis que SIERREUR capture toutes les erreurs (#DIV/0!, #VALEUR!, #REF!, etc.). Utilise SI.NON.DISP pour les recherches car elle laisse les autres erreurs visibles, ce qui t'aide à détecter les bugs dans tes formules.
Pourquoi utiliser SI.NON.DISP plutôt que SIERREUR pour les RECHERCHEV ?
Parce que SI.NON.DISP est plus sûre. Si une colonne est supprimée par erreur dans ta base, SI.NON.DISP laissera apparaître le #REF! alors que SIERREUR l'affichera comme "Non trouvé". Tu détectes les vrais problèmes tout en gérant proprement les recherches sans résultat.
SI.NON.DISP fonctionne-t-elle avec RECHERCHEX et INDEX/EQUIV ?
Oui. SI.NON.DISP fonctionne avec n'importe quelle formule susceptible de retourner #N/A : RECHERCHEV, RECHERCHEH, RECHERCHEX, INDEX/EQUIV, EQUIV, DECALER, etc. Dès qu'une fonction peut retourner #N/A, SI.NON.DISP peut le gérer.
Peut-on retourner une autre formule au lieu d'un texte avec SI.NON.DISP ?
Absolument. Tu peux retourner un calcul, une autre recherche, ou imbriquer plusieurs SI.NON.DISP : =SI.NON.DISP(RECHERCHEV(A1; Table1; 2; 0); RECHERCHEV(A1; Table2; 2; 0)). Si la première recherche échoue, Excel essaie la deuxième. Parfait pour chercher dans plusieurs sources de données.
SI.NON.DISP est-elle disponible dans toutes les versions d'Excel ?
SI.NON.DISP est disponible depuis Excel 2013 et toutes les versions suivantes, y compris Excel 365 et Excel Online. Sur Excel 2010 ou antérieur, tu dois utiliser =SI(ESTNA(formule); "Non trouvé"; formule), ce qui est moins pratique car la formule est évaluée deux fois.
Pour aller plus loin
Les fonctions similaires : SIERREUR, RECHERCHEV, RECHERCHEX, INDEX, EQUIV
Bloqué sur une formule Excel ?
Pose ta question à notre assistant Excel IA, il te sort la bonne formule en quelques secondes.
Essayer l'assistant IAGratuit · 10 questions par mois

