Qu'est-ce que la fonction NON ?
NON (NOT en anglais) te sert pour retourner le résultat d'un test déjà écrit, sans réécrire toute la condition à l'envers. Tu emballes ESTVIDE, ET ou OU dans NON et tu obtiens directement leur contraire.
Pourquoi c'est utile ? Parce que parfois, il est plus naturel de raisonner par exclusion. Au lieu de lister tous les cas où tu veux agir, tu décris le seul cas à exclure : les clients qui ne sont pas à Paris, les employés qui ne sont pas en congé, les commandes qui n'ont pas encore été traitées. NON rend cette logique d'exclusion limpide, et elle devient redoutable quand tu la combines avec SI, ET ou OU.

Comprendre chaque paramètre de la fonction NON
valeur_logique
: la valeur ou l'expression à inverserElle peut être une valeur logique directe (VRAI ou FAUX), une comparaison (A1>10), une fonction qui renvoie VRAI/FAUX (ESTVIDE(A1), ET(A1>5; B1<10)), ou un nombre (0 est traité comme FAUX, tout nombre non nul comme VRAI).
Tu peux aussi passer une référence de cellule contenant l'une de ces valeurs. La flexibilité de valeur_logique est ce qui rend NON si polyvalente : elle s'applique à n'importe quelle expression logique, quelle que soit sa complexité.

Exemples pratiques pas à pas
Comment vérifier qu'une cellule n'est pas vide avec les fonctions NON et ESTVIDE
Les réponses à tes formulaires arrivent en vrac dans une feuille, et tu dois repérer les sessions où le nom obligatoire n'a jamais été saisi avant de lancer le traitement. Chaque ligne porte le nom, le formulaire d'origine, l'étape et l'identifiant de session, et tu veux une colonne qui réponde par oui ou par non à « le champ est-il rempli ? ». La fonction NON retourne le test posé par la fonction ESTVIDE et te donne la réponse dans le sens où tu la lis.
- 1Dans une cellule, écris
=NON(. - 2En 1er argument : écris le test à retourner et referme-le,
ESTVIDE(A2). Il répond vrai quand la cellule est restée vide et faux dès qu'un nom y est saisi. La fonction NON inverse ensuite ce verdict pour répondre à la question de la colonne, qui est de savoir si le champ est rempli. - 3Ferme la parenthèse de la fonction NON et appuie sur Entrée. Celle de la fonction ESTVIDE a déjà été refermée à l'étape précédente. Recopie ensuite la formule vers le bas, et chaque ligne testera le nom qu'elle porte sans que tu aies à toucher aux références.
=NON(ESTVIDE(A2))A2, y trouve Jean Dupont et renvoie donc FAUX. La fonction NON retourne ce FAUX en VRAI, ce qui répond directement à la question posée par la colonne (le champ est-il rempli ?). Recopiée vers le bas, la formule affiche VRAI sur chaque nom saisi et FAUX sur chaque cellule restée vide.Comment exclure un cas avec les fonctions NON et SI
Une note interne doit partir par email à toutes les personnes joignables aujourd'hui, sauf à celles qui sont en congé. Ton tableau liste chaque employé avec son statut du jour, et tu veux une colonne qui tranche à ta place. Plutôt que d'énumérer tous les statuts à retenir, tu décris le seul à écarter et tu laisses la fonction NON retourner la logique.
- 1Dans une cellule, écris
=SI(. - 2En 1er argument : écris le test qui écarte les personnes en congé et referme-le,
NON(B2="Congé"). La comparaison seule répond vrai sur les lignes en congé, et la fonction NON retourne ce verdict pour ne laisser vrai que les autres statuts. Tu n'as ainsi aucun statut à énumérer, niBureau, niTélétravail, ni ceux qui apparaîtront plus tard. - 3En 2ᵉ argument : écris le texte affiché quand le test est vrai,
"Oui". C'est la sortie de toutes les personnes que la fonction NON a laissées passer, quel que soit leur statut du jour. - 4En 3ᵉ argument : écris le texte affiché dans le cas contraire,
"Non". Il ne tombe que sur les lignes en congé, le seul cas que tu as décidé d'écarter. - 5Ferme la parenthèse et appuie sur Entrée.
=SI(NON(B2="Congé"); "Oui"; "Non")Congé : Sophie est au bureau, donc la comparaison est fausse, son inverse est vrai et la fonction SI affiche Oui. Marc bascule sur Non. Le vrai gain se voit à l'usage : le jour où un statut Formation apparaît, il est inclus tout seul, sans retoucher la formule.Comment exclure plusieurs cas à la fois avec les fonctions NON et OU
La revue des dépenses courantes approche, et deux catégories doivent rester en dehors du périmètre : les investissements et les charges exceptionnelles, qui écraseraient les montants du quotidien. Chaque ligne porte un montant et sa catégorie, et tu veux marquer d'un coup celles à garder. La fonction NON, posée sur une fonction OU, écarte les deux catégories d'un seul geste au lieu d'enchaîner les « différent de ».
- 1Dans une cellule, écris
=SI(. - 2En 1er argument : écris le test qui écarte les deux catégories et referme-le,
NON(OU(B2="Investissement"; B2="Exceptionnel")). La fonction OU répond vrai dès que la dépense tombe dans l'une des deux. La fonction NON retourne cette réponse, si bien que seules les dépenses n'appartenant à aucune de ces deux catégories restent vraies. - 3En 2ᵉ argument : écris le texte affiché quand le test est vrai,
"Oui". Il marque les dépenses courantes que tu gardes dans l'analyse. - 4En 3ᵉ argument : écris le texte affiché dans le cas contraire,
"Non". Il ne tombe que sur les deux catégories mises de côté. - 5Ferme la parenthèse et appuie sur Entrée.
=SI(NON(OU(B2="Investissement"; B2="Exceptionnel")); "Oui"; "Non")Fournitures échappe aux deux tests et ressort donc en Oui, alors qu'Investissement bascule sur Non.
Astuces avancées avec NON
Simplifie les doubles négations
Si tu vois =SI(NON(A1<>10); ...) dans une formule, simplifie-la en =SI(A1=10; ...) : les deux sont identiques, mais la seconde est immédiatement lisible. Une double négation est toujours le signe qu'on peut réécrire la condition directement.
Avant d'imbriquer NON, demande-toi si l'opérateur inverse (<> au lieu de =, <= au lieu de >) ne suffit pas.
Combine NON avec ET pour des exclusions composites
NON peut inverser le résultat d'une condition ET complexe. =NON(ET(A1>100; B1="Paris")) sélectionne tout sauf les grandes commandes à Paris, sans avoir à décrire tous les autres cas.
Grâce aux lois de De Morgan, cette formule est strictement équivalente à =OU(A1<=100; B1<>"Paris") : choisis la version qui correspond le mieux à la façon dont tu penses le problème.
Utilise NON pour rendre les conditions négatives lisibles
Quand une condition naturelle s'exprime par une négation (« non traité », « pas encore validé », « jamais répondu »), NON rend ta formule aussi claire que ta pensée. =NON(ESTVIDE(A1)) se lit « non vide » : c'est immédiat, sans effort de décodage.
Réserve NON aux cas où la forme négative est la plus naturelle : si la condition positive est tout aussi simple, utilise-la directement.

Les erreurs fréquentes avec la fonction NON
Avec NON, les soucis ne viennent presque jamais d'un code d'erreur affiché, mais d'un résultat juste-mais-pas-celui-attendu. Le cas le plus fréquent : on la confond avec l'opérateur <>. Les deux donnent la même chose sur une comparaison simple, sauf qu'on ne peut pas inverser une fonction avec <> (impossible d'écrire =ESTVIDE(A1)<>VRAI).
L'autre surprise classique, c'est une cellule qui contient 0 : =NON(A1) renvoie alors VRAI, parce qu'Excel traite 0 comme FAUX et tout nombre non nul comme VRAI.
Confondre NON et l'opérateur <> pour les comparaisons simples
=NON(A1=5) et =A1<>5 donnent le même résultat sur une comparaison simple, mais NON devient indispensable pour inverser une fonction : tu ne peux pas écrire =ESTVIDE(A1)<>VRAI, tu dois écrire =NON(ESTVIDE(A1)).
Solution : Utilise <> pour les comparaisons de valeurs simples, et NON quand tu inverses le résultat d'une fonction ou d'une condition complexe.
Résultat inattendu quand la cellule contient 0
Si tu écris =NON(A1) avec A1=0, Excel retourne VRAI car 0 est traité comme FAUX en logique Excel. Avec A1=5, tu obtiens FAUX car tout nombre non nul est VRAI. Ce comportement surprend quand on ne le connaît pas.
Solution : Si tu veux tester qu'une cellule ne contient pas un nombre, utilise =NON(ESTNUM(A1)) plutôt que =NON(A1) : c'est plus explicite et ça évite les confusions avec les valeurs numériques.
Formule illisible avec plusieurs NON imbriqués
=SI(NON(NON(NON(A1))); ...) est difficile à lire. Trois NON s'annulent deux à deux, donc ça revient à =SI(NON(A1); ...). Les NON en nombre pair s'annulent complètement.
Solution : Si tu dois imbriquer plus d'un NON, c'est généralement le signe qu'il faut repenser la logique. Réécris la condition avec l'opérateur inverse ou restructure l'expression.

NON vs ET vs OU vs SI
Prends NON quand ta logique s'exprime le plus simplement par une exclusion : un seul cas à écarter, sans rien décider derrière. Dès que tu veux croiser plusieurs conditions, passe à ET (toutes vraies) ou OU (au moins une), et à SI quand le but est de renvoyer une vraie valeur, pas seulement VRAI ou FAUX.
En pratique NON joue rarement seule : elle s'imbrique dans un OU ou un ESTVIDE pour rendre la condition lisible, là où les autres se suffisent à elles-mêmes.
| Critère | NON | ET | OU | SI |
|---|---|---|---|---|
| Rôle | Inverse VRAI/FAUX | Toutes les conditions vraies | Au moins une condition vraie | Renvoie une valeur selon une condition |
| Nombre de paramètres | 1 seul | Jusqu'à 255 | Jusqu'à 255 | 3 (condition, si_vrai, si_faux) |
| Résultat | VRAI ou FAUX | VRAI ou FAUX | VRAI ou FAUX | Toute valeur |
| Usage typique | Exclure un cas | Combiner plusieurs conditions | Valider une alternative | Prendre une décision |
| Se combine avec | ET, OU, SI, ESTVIDE | NON, OU, SI | NON, ET, SI | Toutes les fonctions |
Questions fréquentes
NON inverse une valeur logique (VRAI devient FAUX), tandis que <> compare deux valeurs. Par exemple, =NON(A1=5) et =A1<>5 donnent le même résultat pour les comparaisons simples.
Mais NON est indispensable pour inverser une fonction : tu ne peux pas écrire =ESTVIDE(A1)<>VRAI de façon lisible, alors que =NON(ESTVIDE(A1)) est immédiat. Utilise <> pour les comparaisons directes, NON pour les inversions de fonctions.
Oui. Excel convertit automatiquement les valeurs numériques : les nombres non nuls deviennent VRAI (que NON transforme en FAUX), et 0 devient FAUX (que NON transforme en VRAI).
Par exemple, =NON(A1) avec A1=5 retourne FAUX. C'est un comportement à connaître pour ne pas être surpris quand tu travailles avec des cellules contenant des nombres.
Oui, c'est même l'un de ses usages les plus courants. =NON(ESTVIDE(A1)) vérifie qu'une cellule n'est pas vide, et =NON(ESTNUM(A1)) vérifie qu'une cellule ne contient pas un nombre.
Ces combinaisons sont plus naturelles à lire que leurs équivalents positifs. Elles correspondent à la façon dont on formule souvent les conditions dans la réalité.
Oui, mais c'est rarement utile. =NON(NON(A1)) revient simplement à A1, car deux inversions s'annulent. Si tu vois plusieurs NON imbriqués dans une formule, c'est probablement le signe d'une erreur de conception.
En pratique, un seul niveau de NON suffit dans la grande majorité des cas. Si tu as besoin de plus, restructure ta logique.
Pour les comparaisons simples, oui : au lieu de =NON(A1=5), tu peux écrire =A1<>5. Plus généralement, tu peux souvent éviter NON en inversant l'opérateur de comparaison.
Mais pour inverser des fonctions comme ESTVIDE, ESTNUM ou le résultat d'un ET complexe, NON reste indispensable. En VBA, l'opérateur Not joue le même rôle.
Pour aller plus loin
Continue sur ta lancée après la fonction NON : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.
Tout voir



