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

Fonctions IS dans Excel — ISNUMBER, ISTEXT, ISBLANK, ISERROR et ISNA (protéger une formule avant qu'elle casse)

|

Fonctions IS dans Excel — ISNUMBER, ISTEXT, ISBLANK, ISERROR et ISNA (protéger une formule avant qu'elle casse)

L'essentiel — Les fonctions IS… répondent chacune à une question oui/non sur une cellule : ISNUMBER, ISTEXT, ISBLANK, ISERROR, ISNA (et apparentées). Elles classent, elles ne changent jamais la valeur — leur unique rôle est de protéger une formule avant qu'elle casse. Trois choses à savoir : ISBLANK est plus strict que « paraît vide » — une cellule contenant ="" ou une formule qui renvoie "" n'est pas vide ; ISERROR avale tous les types d'erreur (masquant de vrais bugs #REF!/#NOM?) tandis qu'ISNA n'intercepte que #N/A ; et ISNUMBER(SEARCH(...)) est la façon la plus propre de tester une correspondance textuelle partielle. Ne tendez la main vers une fonction IS que lorsqu'une garde intégrée (IFERROR, le 4ᵉ argument de XLOOKUP) ne fait pas déjà le travail. Fonctionne dans toutes les versions.

=IF(ISNUMBER(SEARCH("apple", A2)), "Match", "No")   ' partielle, insensible à la casse
=IF(ISBLANK(A2), "Missing", A2)                      ' contrôle de vrai vide

La famille IS, ce sont les outils de diagnostic d'Excel — de petites fonctions qui rapportent ce qu'une cellule est plutôt que de calculer une nouvelle valeur. Bien employées, elles empêchent une formule d'erreur sur l'unique mauvaise ligne. Employées à la légère, elles cachent précisément les bugs que vous aviez besoin de voir. La différence tient à savoir ce que chacune teste réellement.

Remarque : dans une interface Excel en français, les fonctions s'appellent ESTNUM (ISNUMBER), ESTTEXTE (ISTEXT), ESTVIDE (ISBLANK), ESTERREUR (ISERROR) et ESTNA (ISNA). Apparentées : IF = SI, IFERROR = SIERREUR, IFNA = SI.NON.DISP, AND = ET, OR = OU, VLOOKUP = RECHERCHEV, XLOOKUP = RECHERCHEX, SEARCH = CHERCHE, FIND = TROUVE, LEN = NBCAR, VALUE = CNUM, SUMPRODUCT = SOMMEPROD, FILTER = FILTRE. 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 : des inspecteurs qui renvoient un verdict, jamais une nouvelle valeur
  • Pourquoi ISBLANK est plus strict que « d'apparence vide » — le piège du ""
  • ISERROR (attrape tout) vs ISNA (seulement #N/A) — et pourquoi ça compte
  • Le coût caché d'IF(ISERROR(x), repli, x) : il calcule x deux fois
  • L'application phare d'ISNUMBER — transformer SEARCH en un test de correspondance partielle bien net
  • Là où les fonctions IS brillent sans aucun IF

Le modèle mental : des inspecteurs, pas des transformateurs

Chaque fonction IS… prend une valeur et renvoie TRUE ou FALSE — un verdict sur ce que contient la cellule. C'est tout. ISNUMBER demande « est-ce un nombre ? » ; ISTEXT demande « est-ce du texte ? » ; ISBLANK demande « est-ce véritablement vide ? » ; ISERROR demande « est-ce que ça a explosé ? ».

=ISNUMBER(A2)    ' TRUE si A2 contient un nombre (pas un texte d'apparence numérique)
=ISTEXT(A2)      ' TRUE si A2 contient du texte
=ISERROR(A2)     ' TRUE si A2 est une valeur d'erreur quelconque

Parce qu'elles ne font jamais que rapporter, une fonction IS n'est jamais la réponse finale — comme AND/OR, son verdict doit alimenter quelque chose : un IF, une règle de mise en forme conditionnelle, une formule de validation des données ou un masque matriciel. Et ce cadrage vous donne le principe directeur de toute la famille : utilisez une fonction IS pour protéger une formule avant qu'elle erre — mais seulement quand une garde plus propre et taillée sur mesure n'existe pas déjà.

ISBLANK est plus strict que « paraît vide »

ISBLANK est celle que tout le monde interprète de travers. Elle renvoie TRUE uniquement pour une cellule qui est authentiquement, physiquement vide — rien de tapé, aucune formule. Une cellule qui paraît vide parce qu'une formule a renvoyé une chaîne vide n'est pas vide :

=ISBLANK(A2)    ' A2 contient  =""  ou  =IF(...,"")  ->  FALSE  (elle contient une formule)
=ISBLANK(A2)    ' A2 est un espace résiduel " "        ->  FALSE  (elle contient un espace)

C'est la source du « mais la cellule EST vide, pourquoi mon contrôle échoue-t-il ? » Le test honnête pour « aucun contenu visible » est généralement une comparaison de valeur, pas ISBLANK :

=IF(A2="", "Empty", "Filled")       ' traite aussi le "" issu d'une formule comme vide
=IF(LEN(A2)=0, "Empty", "Filled")   ' même idée, explicite quant à la longueur nulle

Utilisez ISBLANK quand vous voulez précisément dire « personne n'a rien mis ici » — par exemple, distinguer une cellule de saisie réellement intacte d'une cellule qu'une formule a remplie de "". Utilisez ="" ou LEN()=0 quand vous voulez dire « rien ne s'affiche ». Elles ne sont pas interchangeables, et choisir la mauvaise est un classique bug silencieux. (C'est l'image inversée de l'habitude qu'a IF de renvoyer "" — ce "" est précisément ce qui trompe ISBLANK.)

ISERROR attrape tout ; ISNA n'attrape que #N/A

ISERROR renvoie TRUE pour n'importe quelle erreur — #N/A, #REF!, #DIV/0!, #NAME?, #VALUE!, tout le lot. Cela paraît pratique et c'est généralement une erreur. Quand vous enveloppez une recherche dans IF(ISERROR(...)), vous n'attrapez pas seulement le « non trouvé » — vous faites aussi taire un #REF! d'une colonne supprimée ou un #NAME? d'une faute de frappe, si bien qu'un vrai bug de formule disparaît derrière votre repli et que vous ne l'apprenez jamais :

=IF(ISERROR(VLOOKUP(A2, T, 2, 0)), "Not found", VLOOKUP(A2, T, 2, 0))
' masque aussi #REF!/#NAME? — un vrai bug affiche désormais "Not found" et vous n'en savez rien

L'outil précis, c'est ISNA, qui n'intercepte que #N/A — l'erreur « aucune correspondance » — et laisse toute autre erreur remonter bruyamment, exactement là où vous voulez qu'un vrai bug reste visible :

=IF(ISNA(MATCH(A2, List, 0)), "New", "Existing")   ' seule "aucune correspondance" est gérée

C'est la même leçon que IFERROR vs IFNA : interceptez l'unique erreur que vous attendez, pas toutes. Ajustez la largeur de votre filet à la taille du poisson que vous cherchez vraiment à prendre.

Le coût caché : IF(ISERROR(x), repli, x) calcule x deux fois

Même lorsque vous voulez réellement gérer une erreur, l'ancien motif IF(ISERROR(...)) a un vrai défaut : il évalue la partie coûteuse deux fois — une fois pour la tester, une fois pour la renvoyer. Sur une recherche lourde à travers des milliers de lignes, cela double le travail :

' Ancien — le VLOOKUP s'exécute deux fois par cellule
=IF(ISERROR(VLOOKUP(A2,T,2,0)), "n/a", VLOOKUP(A2,T,2,0))

' Moderne — calculé une seule fois
=IFERROR(VLOOKUP(A2,T,2,0), "n/a")
=IFNA(VLOOKUP(A2,T,2,0), "n/a")            ' seul #N/A, garde les vraies erreurs visibles
=XLOOKUP(A2, Keys, Vals, "n/a")            ' if_not_found intégré, aucun enveloppement

La hiérarchie honnête est donc la suivante : préférez IFERROR/IFNA ou le quatrième argument de XLOOKUP, et ne gardez IF(ISERROR(...)) que pour le cas rare où la branche d'erreur renvoie quelque chose de différent d'un recalcul de la valeur. ISERROR/ISNA gardent leur place quand vous avez besoin du booléen lui-même — dans un SUMPRODUCT, une mise en forme conditionnelle ou un comptage du nombre de lignes qui ont erré.

L'application phare d'ISNUMBER : un test de correspondance partielle bien net

La chose la plus utile de la famille, ce n'est pas un contrôle de type pour lui-même — c'est d'associer ISNUMBER à SEARCH/FIND. SEARCH renvoie une position quand il trouve votre sous-chaîne et une erreur #VALUE! quand il ne la trouve pas. L'envelopper dans ISNUMBER convertit ce « nombre-ou-erreur » en un TRUE/FALSE bien net « contient-il ce texte ? » :

=ISNUMBER(SEARCH("apple", A2))   ' TRUE si A2 contient "apple" (insensible à la casse)
=ISNUMBER(FIND("APPLE", A2))     ' FIND est sensible à la casse

C'est le test idiomatique « cette cellule contient-elle X », et il se glisse tel quel dans une mise en forme conditionnelle (surligner chaque ligne mentionnant un mot-clé), un masque de FILTER ou un comptage SUMPRODUCT — aucun d'eux ne voulant d'une valeur d'erreur en plein milieu.

ISNUMBER diagnostique aussi les « nombres stockés en texte »

ISNUMBER est le moyen le plus rapide de confirmer le casse-tête n° 1 de l'import de données : des valeurs qui ont l'air numériques mais sont en réalité du texte, si bien qu'elles refusent de se sommer ou de se trier. Si =ISNUMBER(A2) renvoie FALSE pour quelque chose qui ressemble à 1234, vous avez trouvé votre coupable :

=ISNUMBER(A2)   ' FALSE pour un nombre-stocké-en-texte  ->  corriger avec VALUE / *1

Une fois diagnostiqué, convertissez-le avec VALUE/NUMBERVALUE ou une coercition *1 / --. ISNUMBER est le test ; celles-là sont le remède.

Là où les fonctions IS brillent sans IF

Parce qu'elles renvoient déjà TRUE/FALSE, les fonctions IS conviennent parfaitement aux endroits qui veulent un booléen sans libellé — aucun IF nécessaire :

  • Mise en forme conditionnelle — une règle =ISERROR(A2) colore chaque cellule en erreur en rouge ; =ISNUMBER(SEARCH("urgent", A2)) surligne les lignes correspondantes.
  • Validation des données — une règle personnalisée =ISNUMBER(A1) empêche quiconque de taper du texte dans une saisie numérique.
  • Comptage=SUMPRODUCT(--ISNUMBER(A2:A100)) compte combien de cellules sont de vrais nombres ; =SUMPRODUCT(--ISERROR(Range)) compte les erreurs avant que vous nettoyiez.

Dans ces trois cas, le verdict est la réponse — l'envelopper dans un IF(..., TRUE, FALSE) ne serait que du bruit.

Le jugement : quelle fonction IS, ou une garde plus propre

  • « Y a-t-il vraiment rien ici ? »ISBLANK pour une cellule authentiquement intacte ; ="" ou LEN()=0 si le "" d'une formule doit aussi compter comme vide.
  • « Une recherche a-t-elle échoué ? »IFNA / le 4ᵉ argument de XLOOKUP d'abord ; ISNA quand il vous faut le booléen ; jamais ISERROR (il cache de vrais bugs).
  • « Gérer n'importe quelle erreur ? »IFERROR (calcule une fois) plutôt qu'IF(ISERROR(...)) (calcule deux fois).
  • « Ce texte contient-il X ? »ISNUMBER(SEARCH(...)).
  • « Est-ce un vrai nombre ? »ISNUMBER, puis corriger avec VALUE/*1.

Comment ExcelMaster aide

Les fonctions IS sont là où « faire que ça n'erre pas » se transforme discrètement en « cacher le bug que j'avais besoin de voir ». ExcelMaster choisit la garde qui colle à l'intention — ISNA ou IFNA quand seule une recherche manquante doit être gérée, IFERROR quand n'importe quel échec doit basculer sur un repli, un vrai ISBLANK face à un LEN()=0 quand « vide » est ambigu — pour que votre filet de sécurité attrape le cas que vous visiez et laisse les vraies erreurs remonter là où vous pouvez les corriger.

Questions fréquentes

Pourquoi ISBLANK renvoie-t-il FALSE sur une cellule d'apparence vide ?

Parce que la cellule n'est pas véritablement vide — elle contient une formule qui renvoie "", un espace ou un caractère invisible. ISBLANK n'est TRUE que pour une cellule physiquement vide. Pour traiter le "" d'une formule comme vide aussi, testez =A2="" ou =LEN(A2)=0 à la place.

Quelle est la différence entre ISERROR et ISNA ?

ISERROR renvoie TRUE pour n'importe quelle valeur d'erreur ; ISNA renvoie TRUE uniquement pour #N/A. Utilisez ISNA (ou IFNA) pour les recherches afin qu'un vrai #REF! ou #NAME? s'affiche encore au lieu d'être caché derrière votre repli.

Comment vérifier si une cellule contient un texte précis ?

Enveloppez SEARCH dans ISNUMBER : =ISNUMBER(SEARCH("apple", A2)) est TRUE quand A2 contient « apple » (insensible à la casse). Utilisez FIND au lieu de SEARCH pour un test sensible à la casse.

Devrais-je utiliser IF(ISERROR(...)) ou IFERROR ?

Préférez IFERROR — il évalue la formule une seule fois, alors que IF(ISERROR(x), repli, x) calcule x deux fois. Ne gardez IF(ISERROR(...)) que lorsque la branche d'erreur renvoie autre chose qu'un recalcul de la valeur.

Comment savoir si un nombre est en réalité du texte dans Excel ?

Testez-le avec =ISNUMBER(A2). S'il renvoie FALSE pour quelque chose d'apparence numérique, la valeur est stockée en texte — convertissez-la avec VALUE, NUMBERVALUE ou une coercition *1 / --.

Testé dans

Testé dans : Excel 365 (Windows 11) — dernière vérification le 04/07/2026.

Guides associés : Excel IFERROR · Excel AND & OR · Excel NOT & XOR · Excel FIND & SEARCH · Excel VALUE