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

Fonctions AND et OR dans Excel — Combiner des conditions correctement (et pourquoi Excel n'évalue jamais en court-circuit)

|

Fonctions AND et OR dans Excel — Combiner des conditions correctement (et pourquoi Excel n'évalue jamais en court-circuit)

L'essentielAND et OR prennent plusieurs tests TRUE/FALSE et renvoient un seul verdict. AND(…) est TRUE uniquement quand chaque test passe ; OR(…) est TRUE dès qu'au moins un passe. Ils ne décident rien par eux-mêmes — leur rôle est d'alimenter le premier argument d'un IF, une règle de mise en forme conditionnelle ou un filtre. Placez-les à l'intérieur du test, pas autour de IF séparés : =IF(AND(B2>=60, C2="Yes"), "Pass", "Fail"). Deux choses mordent : un =AND(...) isolé dans une cellule n'affiche que le mot TRUE, et Excel n'évalue pas en court-circuit — il calcule chaque argument, si bien que AND(A2<>0, B2/A2>1) peut quand même lever #DIV/0!. Fonctionne dans toutes les versions.

=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")   ' les deux doivent être vrais
=IF(OR(B2>=90, C2="VIP"), "Priority", "Normal")   ' l'un ou l'autre suffit

AND et OR ressemblent aux fonctions les plus élémentaires d'Excel, et prises isolément elles le sont. Mais presque tous les vrais bugs qu'on rencontre avec elles viennent d'un seul malentendu : les gens les traitent comme si elles prenaient une décision, alors qu'elles se contentent de compter les voix et de rendre une seule réponse. Ancrez ce modèle mental et l'imbrication, le TRUE égaré et le #DIV/0! surprise cessent tous de se produire.

Remarque : dans une interface Excel en français, les fonctions s'appellent ET (AND) et OU (OR). Apparentées : IF = SI, IFERROR = SIERREUR, EXACT = EXACT, SUMPRODUCT = SOMMEPROD, SUMIFS = SOMME.SI.ENS, 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 : AND/OR sont des compteurs de voix, pas des décideurs
  • Pourquoi ils se logent à l'intérieur du premier argument de IF, et non autour de IF imbriqués
  • Lequel signifie « entre » et lequel signifie « l'un ou l'autre » — et pourquoi on les intervertit
  • La surprise de la formule isolée : une cellule qui affiche juste TRUE
  • Le piège du programmeur : Excel n'évalue pas en court-circuit, il peut donc encore erreur
  • La puissance matricielle — tester toute une colonne — et le mur où AND/OR ne peuvent pas aller

Le modèle mental : un compteur de voix, pas un décideur

Imaginez AND et OR en train de dépouiller un vote à main levée. Chaque argument est un votant qui lève la main pour TRUE ou la laisse baissée pour FALSE. AND rapporte « unanimité ? » — TRUE seulement si personne n'a gardé la main baissée. OR rapporte « qui que ce soit ? » — TRUE dès qu'au moins une main s'est levée.

=AND(B2>=60, C2="Yes", D2<100)   ' TRUE seulement si les trois passent
=OR(B2>=90, C2="VIP")            ' TRUE si l'un ou l'autre passe

C'est toute la fonction. Elle prend une salle entière de conditions et les réduit à un seul TRUE/FALSE. Elle ne choisit pas de résultat, n'affiche pas de libellé et n'entreprend aucune action — elle remet son unique verdict à qui le lui a demandé. Gardez cette image et la règle suivante devient évidente : si AND/OR ne produisent qu'un verdict, il faut bien que quelque chose d'autre l'utilise.

La règle n° 1 : ils vivent dans le test de IF, pas autour

La forme la plus courante vers laquelle les gens tendent la main est une tour de IF imbriqués, alors qu'il ne leur fallait qu'un seul AND à l'intérieur d'un seul IF :

' La pyramide imbriquée — ça marche, mais c'est plus dur à lire et à modifier
=IF(B2>=60, IF(C2="Yes", "Pass", "Fail"), "Fail")

' AND à l'intérieur du test — un seul embranchement bien net
=IF(AND(B2>=60, C2="Yes"), "Pass", "Fail")

Les deux donnent la même réponse, mais la seconde dit exactement ce que vous pensez — « les deux doivent être vrais pour réussir » — en une seule ligne lisible. C'est là la division du travail qui compte : AND/OR calculent la condition ; IF calcule le résultat. Chaque fois que vous vous surprenez à imbriquer un IF uniquement parce que vous avez « deux choses qui doivent toutes deux être vraies », vous n'avez pas besoin d'un IF plus gros — vous avez besoin d'un AND dans son premier argument. Le même test combiné se glisse tel quel dans une règle de mise en forme conditionnelle ou dans les critères d'un FILTER, sans aucun IF.

« Entre », c'est AND ; « l'un ou l'autre », c'est OR (celui qu'on intervertit)

L'erreur de logique la plus fréquente, et de loin, c'est de tendre la main vers le mauvais connecteur pour un test d'intervalle. « La valeur est-elle entre 10 et 20 » est constitué de deux conditions qui doivent toutes deux tenir — c'est AND, pas OR :

=IF(AND(A2>=10, A2<=20), "In range", "Out")   ' JUSTE — entre
=IF(OR(A2>=10, A2<=20), "In range", "Out")     ' FAUX — toujours TRUE

La version OR est toujours TRUE : tout nombre est soit ≥ 10, soit ≤ 20 (la plupart sont les deux). Réservez OR à « appartient à l'un quelconque de ces groupes » — OR(Region="EU", Region="UK") — où les conditions sont réellement des alternatives. Un test rapide de bon sens : si vos deux tests pointent dans des directions opposées sur la même valeur, c'est presque à coup sûr AND qu'il vous faut.

La surprise de la formule isolée : une cellule qui affiche juste TRUE

Tapez =AND(B2>=60, C2="Yes") seul dans une cellule et Excel fait exactement ce que la fonction promet — il vous montre le verdict, le mot littéral TRUE ou FALSE :

=AND(B2>=60, C2="Yes")     ' la cellule affiche  TRUE  (ou FALSE)

Ce n'est pas un bug ; c'est la fonction qui travaille comme prévu. C'est le signe que vous avez oublié l'étape de décision. Un TRUE brut dans une colonne de résultats signifie presque toujours « je voulais l'envelopper dans un IF (ou une règle) et je ne l'ai pas fait ». Le remède n'est pas de changer AND — c'est de donner un consommateur à son verdict.

Le piège du programmeur : Excel n'évalue pas en court-circuit

Si vous venez de VBA, Python ou C, vous vous attendez à ce que AND s'arrête au premier FALSEA2<>0 AND B2/A2>1 ne devrait jamais diviser quand A2 vaut 0. Excel ne fonctionne pas ainsi. AND et OR évaluent chaque argument avant de les combiner, donc la division s'exécute quand même et lève quand même l'erreur :

=IF(AND(A2<>0, B2/A2>1), "OK", "No")   ' A2=0 -> calcule quand même B2/0 -> #DIV/0!

Il n'y a pas de garde AndAlso/&& ici. Pour protéger un calcul risqué, vous devez imbriquer — placez la garde dans un IF externe pour que la partie dangereuse ne soit jamais atteinte :

=IF(A2=0, "No", IF(B2/A2>1, "OK", "No"))   ' A2=0 court-circuite avant la division

C'est l'unique cas où l'imbrication est correcte et où AND a tort. Si un argument peut errer lorsqu'un autre est faux, AND/OR ne peuvent pas vous protéger — un IF externe (ou un enveloppement IFERROR en dernier recours) le peut.

La puissance matricielle — et le mur où AND/OR butent

Les deux fonctions acceptent des plages, et AND(A2:A100>0) teste si la colonne entière est positive d'un seul coup — un geste réellement utile et sous-exploité pour un unique contrôle « tout est-il valide ? » qui se déverse dans l'Excel moderne.

Mais c'est aussi là que leur nature mord. Parce que AND/OR réduisent tout à un seul verdict, vous ne pouvez pas les utiliser pour construire un masque ligne par ligne. Ceci a l'air raisonnable et pourtant c'est faux :

=SUMPRODUCT((Region="EU") * AND(Amount>0))   ' FAUX — AND écrase la matrice en une seule valeur

Quand il vous faut un TRUE/FALSE pour chaque ligne — le moteur derrière SUMPRODUCT, SUMIFS et FILTER — vous abandonnez AND/OR et faites de l'arithmétique sur les matrices booléennes à la place : * pour AND, + pour OR.

=SUMPRODUCT((Region="EU") * (Amount>0), Amount)   ' * = AND ligne par ligne
=FILTER(Data, (Region="EU") + (Region="UK"))      ' + = OR ligne par ligne

La règle empirique : AND/OR quand vous voulez une seule réponse sur un ensemble de conditions ; */+ quand vous voulez une réponse par ligne. Confondre les deux est à l'origine de la moitié des questions « ma formule matricielle ne renvoie qu'un seul nombre ».

La surprise de l'insensibilité à la casse, comme pour IF

Les comparaisons à l'intérieur de AND/OR utilisent le = habituel d'Excel, qui ignore la casseC2="yes" correspond aussi bien à "Yes", "YES" qu'à "yes". Généralement utile ; parfois non. Pour un test sensible à la casse (distinguer un code comme ID de id), enveloppez la comparaison dans EXACT :

=IF(AND(EXACT(C2,"Yes"), B2>=60), "Pass", "Fail")   ' "Yes" uniquement, pas "yes"

Le jugement : AND/OR, IF imbriqué ou masques +/*

Trois formes, une seule décision :

  • AND/OR à l'intérieur d'un IF — le choix par défaut pour « N conditions, un résultat ». Lisible, modifiable, correct dans presque tous les cas.
  • IF imbriqué — seulement quand un test ultérieur peut errer si un test antérieur est faux (le cas du court-circuit), ou quand les branches posent des questions réellement différentes.
  • + / * sur des matrices booléennes — quand il vous faut un verdict par ligne pour alimenter SUMPRODUCT, SUMIFS, FILTER ou un résultat déversé.

Le savoir-faire, ce n'est pas de mémoriser les fonctions — c'est de reconnaître, à la forme du problème, laquelle de ces trois vous tenez réellement entre les mains.

Comment ExcelMaster aide

Les règles métier arrivent sous forme de phrases — signaler toute commande UE ou UK de plus de 1 000 $ qui n'est pas déjà approuvée — un mélange de AND et de OR qu'il est facile de câbler à l'envers. ExcelMaster transforme cette phrase en la bonne structure : un AND/OR à l'intérieur d'un IF quand vous voulez un seul drapeau, ou un masque matriciel */+ quand la même logique doit piloter un SUMIFS ou un FILTER. Vous décrivez la condition en termes simples ; il choisit la forme qui ne renverra pas en silence « toujours TRUE » ni un #DIV/0! égaré.

Questions fréquentes

Quelle est la différence entre AND et OR dans Excel ?

AND renvoie TRUE uniquement quand chaque condition est vraie ; OR renvoie TRUE dès qu'au moins une l'est. Utilisez AND pour « toutes ces conditions doivent tenir » (y compris « entre X et Y ») et OR pour « l'une quelconque de ces conditions suffit ».

Comment utiliser AND avec IF dans Excel ?

Placez AND dans le premier argument de IF : =IF(AND(B2>=60, C2="Yes"), "Pass", "Fail"). AND produit un seul verdict TRUE/FALSE et IF le transforme en vos deux résultats. N'imbriquez pas un IF distinct pour chaque condition.

Pourquoi ma formule AND n'affiche-t-elle que TRUE ou FALSE ?

Parce que c'est tout ce que AND renvoie — un verdict. Vous avez oublié de l'envelopper dans quelque chose qui agit sur ce verdict. Placez-le dans un IF (=IF(AND(...), "Yes", "No")) ou utilisez-le comme règle de mise en forme conditionnelle / de validation des données.

La fonction AND d'Excel évalue-t-elle en court-circuit comme les autres langages ?

Non. Excel évalue chaque argument, donc AND(A2<>0, B2/A2>1) divise quand même par A2 même lorsque A2 vaut 0, produisant #DIV/0!. Pour protéger un calcul risqué, imbriquez-le dans un IF externe plutôt que de compter sur AND.

Comment combiner AND et OR pour une condition ligne par ligne ?

À l'intérieur de IF, vous pouvez les imbriquer — AND(x, OR(y, z)). Mais quand il vous faut un résultat pour chaque ligne (pour SUMPRODUCT, SUMIFS ou FILTER), utilisez de l'arithmétique sur les matrices booléennes : * pour AND et + pour OR, par exemple (Region="EU") * (Amount>0).

Testé dans

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

Guides associés : Excel IF · Excel IFS & SWITCH · Excel IFERROR · Excel SUMPRODUCT · Excel FILTER