Aller au contenu principal

Qu'est-ce que la fonction SI.NON.DISP ?

Définition
La fonction SI.NON.DISP évalue une formule et renvoie la valeur de remplacement uniquement si cette formule produit l'erreur #N/A. Toutes les autres erreurs (#REF!, #DIV/0!, #VALEUR!) restent visibles.

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

=SI.NON.DISP(valeur; valeur_si_na)

Clique sur un argument pour aller à son explication.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

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.

1

valeur

: la formule ou l'expression que tu veux tester pour détecter l'erreur #N/A

Typiquement, 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.

2

valeur_si_na

: la valeur affichée si (et seulement si) la formule retourne #N/A

Elle 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.

Le combo gagnant
Le second argument n'est pas obligé d'être un texte : glisse-y une autre recherche et tu enchaînes les sources. SI.NON.DISP(RECHERCHEV(...principal); RECHERCHEV(...secours)) interroge d'abord le premier entrepôt, puis bascule sur le second si le produit y manque.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

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.

Les étapes
  1. 1
    Dans une cellule, écris =SI.NON.DISP(.
  2. 2
    En 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.
  3. 3
    En 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?.
  4. 4
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. La référence B2 devient B3 puis B4 en descendant, de sorte que chaque prix est contrôlé sur sa propre ligne.
Au final, ta formule devrait ressembler à ça :=SI.NON.DISP(B2; "Non référencé")
Explication
Ici, la fonction lit le prix brut de la ligne : comme 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.
Exemple 2

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.

Les étapes
  1. 1
    Dans une cellule, écris =SI.NON.DISP(.
  2. 2
    En 1er argument : écris la recherche à surveiller et referme-la, RECHERCHEV(A2; Catalogue; 2; FAUX). Elle prend le code saisi en A2 et en ramène le prix depuis le catalogue. Son FAUX final impose la correspondance exacte, et c'est lui qui fait tomber l'erreur #N/A quand le code n'y figure pas.
  3. 3
    En 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é.
  4. 4
    Ferme 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.
Voici la formule que tu obtiens à la fin :=SI.NON.DISP(RECHERCHEV(A2; Catalogue; 2; FAUX); "Non référencé")
Explication
La recherche part chercher le code du client dans le catalogue et n'y trouve rien pour 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.
Exemple 3

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.

Les étapes
  1. 1
    Dans une cellule, écris =SI.NON.DISP(.
  2. 2
    En 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é.
  3. 3
    En 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.
  4. 4
    Ferme 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.
Une fois les morceaux assemblés, ta formule donne ça :=SI.NON.DISP(RECHERCHEV(A2; CatalogueAlpha; 2; FAUX); RECHERCHEV(A2; CatalogueBeta; 2; FAUX))
Explication
La fonction interroge d'abord le catalogue Alpha : 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.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

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.

Lucas, la mascotte du Dojo, compare deux fonctions Excel

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èreSI.NON.DISPSIERREURSI(ESTNA(...))
Capture uniquement #N/AOuiNon (toutes erreurs)Oui
Laisse les autres erreurs visiblesOui (#REF!, #DIV/0!...)Non (masque tout)Oui
Renvoie une valeur de remplacementOuiOuiOui
Idéal pour RECHERCHEVMeilleur choixTrop largeFonctionne (ancien)
SimplicitéSimpleSimpleFormule longue
DisponibilitéExcel 2013+Excel 2007+Toutes versions
L’erreur fatale
Si tu oublies le FAUX final de ta RECHERCHEV, elle passe en recherche approximative et ne renvoie plus jamais de #N/A : ta SI.NON.DISP ne se déclenche donc jamais et tu récupères des valeurs silencieusement fausses. Termine toujours par FAUX ou 0.
Lucas, la mascotte du Dojo, avec une ampoule, partage des astuces avancées

Astuces avancées avec SI.NON.DISP

1Astuce

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.

2Astuce

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.

3Astuce

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.

FAQ

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.

Ressources

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