Qu'est-ce que la fonction SI. NON. DISP ?
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.

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.

Exemples pratiques pas à pas
Comment remplacer une erreur #N/A par un message avec la fonction SI.NON.DISP
L'export de stock que tu reçois chaque matin arrive troué : plusieurs prix remontent en erreur #N/A parce que le code n'a jamais été référencé chez le fournisseur. Tu as la liste des codes avec leur prix brut, leur fournisseur et leur entrepôt, et ce tableau doit partir ce soir sans une seule cellule d'erreur à l'écran. La fonction SI.NON.DISP passe chaque prix au crible et remplace les #N/A par un message clair, en laissant les vrais prix intacts.
- 1Dans une cellule, écris
=SI.NON.DISP(. - 2En 1er argument : clique sur la cellule à surveiller,
B2. Elle contient le prix brut remonté par l'export, et la fonction la lit avant tout le reste pour voir si elle porte une erreur #N/A. - 3En 2ᵉ argument : écris le texte qui s'affiche à la place de l'erreur,
"Non référencé". Les guillemets sont obligatoires pour qu'Excel affiche ce texte brut : sans eux, il y voit un nom de plage qui n'existe pas et renvoie#NOM?. - 4Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. La référence
B2devientB3puisB4en descendant, de sorte que chaque prix est contrôlé sur sa propre ligne.
=SI.NON.DISP(B2; "Non référencé")B2 porte une erreur #N/A, c'est le texte « Non référencé » qui s'affiche à la place. Les lignes dont le prix est valide le recopient sans y toucher, et une autre erreur (#REF! ou #VALEUR!) resterait bien visible, puisque SI.NON.DISP ne s'occupe que du #N/A.Comment intercepter l'erreur #N/A d'une recherche avec les fonctions SI.NON.DISP et RECHERCHEV
Un client attend son devis pour ce soir et tu recopies les codes produits qu'il t'a dictés au téléphone. Excel va chercher chaque prix dans le catalogue, sauf que deux codes n'existent pas (l'un a été mal noté, l'autre a été retiré de la gamme) et l'erreur #N/A s'affiche en plein milieu du devis. La fonction SI.NON.DISP surveille la recherche et remplace ces erreurs par un message que ton client peut lire sans sourciller.
- 1Dans une cellule, écris
=SI.NON.DISP(. - 2En 1er argument : écris la recherche à surveiller et referme-la,
RECHERCHEV(A2; Catalogue; 2; FAUX). Elle prend le code saisi enA2et en ramène le prix depuis le catalogue. SonFAUXfinal impose la correspondance exacte, et c'est lui qui fait tomber l'erreur #N/A quand le code n'y figure pas. - 3En 2ᵉ argument : saisis le texte affiché à la place de cette erreur,
"Non référencé". Il ne se déclenche que sur un #N/A, donc un#REF!venu d'une colonne supprimée dans le catalogue continuerait de t'alerter au lieu d'être masqué. - 4Ferme la parenthèse et appuie sur Entrée, puis recopie la formule sur les lignes suivantes. Chacune interroge le catalogue avec son propre code, et celles dont le code y manque affichent le message au lieu de l'erreur.
=SI.NON.DISP(RECHERCHEV(A2; Catalogue; 2; FAUX); "Non référencé")PRD-888 : elle renvoie une erreur #N/A, que la fonction SI.NON.DISP intercepte pour afficher « Non référencé ». Ton devis reste présentable, et le message te pointe exactement les lignes à faire corriger avant l'envoi.Comment basculer sur une seconde table après une erreur #N/A avec les fonctions SI.NON.DISP et RECHERCHEV
Tes tarifs sont négociés chez Alpha, mais ce fournisseur ne référence pas toute la gamme et le reste vient de Beta. La commande de la semaine doit être chiffrée avant la réunion de vendredi, et tu ne veux pas faire deux recherches à la main pour chaque code. La fonction SI.NON.DISP interroge le catalogue prioritaire, et bascule toute seule sur le second dès que le code y manque.
- 1Dans une cellule, écris
=SI.NON.DISP(. - 2En 1er argument : écris la recherche prioritaire et referme-la,
RECHERCHEV(A2; CatalogueAlpha; 2; FAUX). Elle interroge le catalogue négocié chez Alpha, et renvoie une erreur #N/A dès que le code n'y est pas référencé. - 3En 2ᵉ argument : écris la recherche de secours et referme-la elle aussi,
RECHERCHEV(A2; CatalogueBeta; 2; FAUX). Excel ne la lance que si la première a buté sur un #N/A, ce qui te donne une vraie cascade (Alpha d'abord, Beta en secours) sans la moindre colonne intermédiaire. - 4Ferme la parenthèse de la fonction SI.NON.DISP et appuie sur Entrée. Celle de la seconde recherche a déjà été refermée à l'étape précédente.
=SI.NON.DISP(RECHERCHEV(A2; CatalogueAlpha; 2; FAUX); RECHERCHEV(A2; CatalogueBeta; 2; FAUX))PRD-101 n'y figure pas, l'erreur #N/A tombe, et le second argument prend le relais pour aller chercher le prix chez Beta (89,90 €). Les codes présents chez Alpha, eux, sortent dès la première recherche et ne déclenchent jamais la seconde.
Les 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)
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.
| Critère | SI.NON.DISP | SIERREUR | SI(ESTNA(...)) |
|---|---|---|---|
| Capture uniquement #N/A | Oui | Non (toutes erreurs) | Oui |
| Laisse les autres erreurs visibles | Oui (#REF!, #DIV/0!...) | Non (masque tout) | Oui |
| Renvoie une valeur de remplacement | Oui | Oui | Oui |
| Idéal pour RECHERCHEV | Meilleur choix | Trop large | Fonctionne (ancien) |
| Simplicité | Simple | Simple | Formule longue |
| Disponibilité | Excel 2013+ | Excel 2007+ | 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
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.
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.
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.
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 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
Continue sur ta lancée après la fonction SI.NON.DISP : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



