Fonction SI en Excel – tout ce que vous devez savoir 6


La fonction SI d'Excel est l'une des fonctions Excel les plus utilisées au quotidien. Elle permet d’évaluer une valeur (habituellement la valeur d’une cellule) selon une condition et de renvoyer une valeur différente selon si la condition est remplie ou pas.

La syntaxe de la fonction Excel SI

La syntaxe est relativement simple et se compose de trois parties

=SI(Condition; Valeur si condition est remplie; Valeur si condition n’est pas remplie)
  • Condition – la condition compare deux valeurs (valeurs en dur, valeurs de cellule ou résultats de fonction) l’une par rapport à l’autre grâce à un des opérateurs logiques de Excel:
    • est égal à (=)
    • est différent de (<>)
    • est supérieur à (>)
    • est supérieur ou égal à (>=)
    • est inférieur à (<)
    • est inférieur ou égal à (<=)
  • Valeur si condition est remplie – c'est la valeur (ou formule) que la fonction SI va renvoyer au cas où la condition est vraie
  • Valeur si condition n’est pas remplie – valeur (ou formule) renvoyé par la fonction SI dans le cas où la condition n'est pas remplie
Utilisation de la fonction SI dans Excel

Utilisation de la fonction SI dans Excel

Les valeurs renvoyés comme réponse peuvent contenir un texte (comme par exemple "Oui" ou "Non"), un chiffre, le contenu d’une cellule spécifique ou même une autre formule (qui peut, par exemple être une autre fonction SI – voir la section "Fonctions SI imbriquées" plus loin). Voici quelques exemples:

  • =SI(A3>6, "Oui", "Non")
  • =SI(A3>6, A3, 0)
  • =SI(A3>6, B3*C3, B3*D3-2)

La valeur que l’on veut « tester » provient habituellement d’une cellule mais il peut s’agir de n’importe quelle valeur.

Exemple:

On peut tester si le jour d’aujourd’hui est un lundi et, selon le résultat, renvoyer une réponse approprié. Cet exemple exprimé en tant que formule Excel nous donne ceci:

=SI(JOURSEM(AUJOURDHUI();2) =1;"7 rapports à exécuter";"2 rapports à exécuter")

Vous pouvez constater que l'on teste le résultat d’une formule et non une valeur de cellule.

Maintenant que l'on s'est familiarisé avec la syntaxe de la fonction SI, on peut regarder de plus près son utilisation pratique.

Fonctions SI imbriquées

Vous avez probablement déjà rencontré la situation qui exigeait de "mettre plusieurs fonctions SI les unes dans les autres". Il s'agit même de d'une situation tout à fait courante. Voici quelques informations et astuces pour vous permettre de gérer une telle situation (formule) de manière efficace et efficiente.

1. Utilisation des paliers

Pour faire simple, commençons par un exemple pratique:

Vous voulez grouper les problèmes d'après leur score pour pouvoir leur attribuer une priorité. Les groupes sont les suivants:

  • score inférieur à 5 = "priorité faible"
  • score entre 5 et 10 = "priorité moyenne"
  • score entre 10 et 15 = "priorité haute"
  • et score supérieur à 15 = "priorité absolue"

Si on suit ce raisonnement à la lettre, on va se retrouver avec une formule qui ressemblera à celle-ci:

=SI(A1<5;"priorité faible";SI(ET(A1>=5;A1<10)=VRAI;"priorité moyenne";SI(ET(A1>=10;A1<15)=VRAI;"priorité haute";SI(ET(A1>=15;A1<=20)=VRAI;"priorité absolue";""))))

Heureusement, la logique nous permettra de simplifier une telle formule.

Explication: Excel évalue les fonctions SI de manière séquentielle – c'est à dire une à la fois et dans l'ordre. Dans notre exemple, il passera à la seconde condition (score entre 5 et 10) seulement après avoir éliminé la première condition (score inférieur à 5). Cela implique que si Excel passe à la deuxième condition, il est sûr que le score est supérieur à 5 (sinon, Excel se serait arrêté à la première condition). Il en découle donc qu'il n'est pas nécessaire de mentionner A1>=5 dans la seconde condition. Il en va de même pour les conditions suivantes. En court: il suffit de déclarer "un seul côté" de chaque palier (à condition que les paliers soient dans le bon ordre).

La formule suivante donnera, tout en étant plus simple et plus rapide, exactement le même résultat que la précédente:

=SI(A1<5;"priorité faible";SI(A1<10;"priorité moyenne";SI(A1<15;"priorité haute";SI(A1<=20;"priorité absolue";""))))

Attention: quand vous allez déterminer vos paliers numériques, n'oubliez pas d'inclure/exclure les valeurs extrêmes des paliers pour que ces valeurs se retrouvent dans le palier correct (donc attention à la différence entre < et <= ainsi que entre > et >=). Dans l'exemple qui suit, la valeur "5" se retrouvera dans les paliers différents (dans le premier cas dans le premier palier, dans l'autre cas dans le deuxième palier):

  • =SI(A1<=5;"priorité faible";SI(A1<=10;"priorité moyenne";SI(A1<=15;"priorité haute";SI(A1<=20;"priorité absolue";""))))
  • =SI(A1<5;"priorité faible";SI(A1<10;"priorité moyenne";SI(A1<15;"priorité haute";SI(A1<=20;"priorité absolue";""))))

2. Ordre des conditions selon la probabilité

L'utilisation des fonctions SI est relativement gourmande en ce qui concerne les ressources de votre machine. Si vous utilisez un grande nombre de ce type de formules, ce qui suit pourrait vous intéresser.

Dans le cas des fonctions SI imbriquées, Excel évalue la première condition et si elle n'est pas remplie, il continue avec la deuxième, puis la troisième et ainsi de suite. Excel arrête le calcul seulement au moment ou une condition est remplie et un résultat peut être affiché. La règle qui en découle est la suivante:

Si vous le pouvez, veuillez à ce que la condition "VRAI" ait lieu le plus tôt possible. Autrement dit, commencez d'abord avec les conditions qui ont le plus de chances à être vraies. Ainsi, vous limitez le temps qu'Excel doit passer à calculer le résultat de la formule.

Un conseil donc: commencez avez une condition générale et gardez les exceptions pour la fin de votre formule imbriquée.

Exemple pratique: Si vous avez un commerce local à Lyon et vous voulez déterminer la nationalité de vos clients, vous avez tout intérêt à ne pas utiliser cette formule-ci:

=SI(PrenomClient="John";"Américain";SI(PrenomClient="Ivan";"Russe";SI(PrenomClient="Luigi";"Italien";SI(PrenomClient="Jean";"Français";""))))

mais à utiliser celle-ci:

=SI(PrenomClient="Jean";"Français";SI(PrenomClient="Luigi";"Italien";SI(PrenomClient="John";"Américain";SI(PrenomClient="Ivan";"Russe";""))))

La seconde formule sera nettement plus rapide que la première (en assumant que la plupart de clients sont Français)…

3. Limitation du nombre des fonctions SI imbriqués

Vous l'avez peut-être constaté par vous-mêmes mais les développeurs de Microsoft ont limité le nombre des fonctions SI que vous pouvez imbriquer. Jusqu'à la version Excel 2003, ce maximum était de 7. À partir de Excel 2007, cette limite a été relevée à 64 mais, soyons réalistes, ce chiffre est purement théorique car en pratique une telle formule serait inutilisable! Même si on considère uniquement la limite de 7 fonctions (pour garantir la compatibilité avec Excel 2003), ce chiffre est, à mon avis, plus suffisant pour la grande majorité d'utilisateurs d'Excel.

Si vous voulez vraiment utiliser plus de 7 imbrication de la fonction SI, vous trouverez le mode d'emploi ici. Cependant, je le déconseille vivement pour deux raisons:

  1. une telle fonction aura un impact considérable sur la performance (surtout si la formule est utilisée x-fois)
  2. cette fonction sera presque illisible et très difficilement modifiable. Il y a de fortes chances que vous allez vous perdre dans toutes ces parenthèses…

La bonne nouvelle est qu'il existe des alternatives. Vous les trouverez un peu plus loin sur cette page.

4. Astuces pour l'utilisation des fonctions SI imbriquées

Heureusement, il existent certaines astuces pour rendre le travail avec des fonctions SI imbriquées plus facile. En voici deux:

4.1. Utilisation du retour à la ligne dans la "Barre de formule"

Normalement, une formule s'affiche en "sans interruption" dans la "Barre de formule" vous pouvez donc y voir ce type de formule:

=SI(C2<2;"très bas";SI(C2<5;"bas";SI(C2<9;"moyenne inférieure";SI(C2<12;"moyenne supérieure";SI(C2<15;"élevé";"très élevé")))))

Ce qui donne donc ceci:

Fonctions SI imbriquées sans retour à la ligne

Fonctions SI imbriquées sans retour à la ligne

Comme vous pouvez le constater, une telle formule est difficilement lisible.

Mais on peut profiter du fait que les formules dans Excel sont insensibles aux espaces et aux retours à la ligne entre différents arguments. En plaçant des retours à la ligne aux bons endroits, nous pouvons rendre la formule beaucoup plus lisible. Un retour à la ligne s'effectue en appuyant sur les touches Alt et Entrée.

Pour exactement la même formule, on peut donc avoir ceci dans la "Barre de formule":
=SI(C2<2;"très bas";
SI(C2<5;"bas";
SI(C2<9;"moyenne inférieure";
SI(C2<12;"moyenne supérieure";
SI(C2<15;"élevé";"très élevé")))))

N'est-ce pas bien plus lisible et plus simple à modifier?

Fonctions SI imbriquées avec retour à la ligne

Fonctions SI imbriquées avec retour à la ligne

4.2. Couleurs de parenthèses pour retrouver plus facilement les paires

Le problème que tout le monde a déjà probablement rencontré dans Excel est l'utilisation des parenthèses dans des formules complexes. Ce n'est pas toujours facile d'avoir le bon nombre de parenthèses aux bons endroits. Et dans les formules avec des fonctions SI imbriquées, ce problème a lieu régulièrement.

Heureusement, il y a une aide pour cela. Quand vous cliquez dans la "Barre de formule" qui contient votre formule, Excel va vous afficher, avec des couleurs diverses, les cellules utilisées dans votre formule. Mais pas seulement! Il affiche également les paires des parenthèses correspondantes avec les couleurs différentes pour chaque paire. Il est donc plus facile de s'y retrouver. Et ceci est valable également pour d'autres formules complexes en Excel.

Fonction SI avec des couleurs des parenthèses

Fonction SI avec des couleurs des parenthèses

 

Fonction SI avec des couleurs des parenthèses et des retours à la ligne

Fonction SI avec des couleurs des parenthèses et des retours à la ligne

5. Alternatives aux fonctions SI imbriquées

Si vous cherchez une alternative pour éviter la lourdeur des fonctions SI imbriquées, je vous propose les deux suivantes.

  • Excel 2016 nous apporte, parmi ses nouveautés, la fonction SI.CONDITIONS qui peut remplacer la structure des fonctions SI imbriquées. Cette fonction vous permet de lister des conditions et des résultats à afficher au cas où la condition est remplie. Un exemple:

    Si on utilisait la fonction SI.CONDITIONS à la place de la fonction SI dans notre exemple de la nationalité des clients d'un commerce local, on obtiendrait la formule:

    =SI.CONDITIONS(PrenomClient="Jean";"Français";PrenomClient="Luigi";"Italien";PrenomClient="John";"Américain";PrenomClient="Ivan";"Russe";"")

    La différence n'est pas énorme mais au moins on est débarrassés de la galère que représentent les parenthèses et de la répétition des "SI(" …

  • Une autre alternative consiste en la création d'une fonction VBA (une UDF – "User Defined Function") qui utiliserait la structure Select Case. Si vous avez la possibilité d'utiliser les macros, songez à cette alternative car elle vous donne une grande flexibilité et n'est pas difficile à mettre en place (surtout grâce à notre tutoriel sur la structure Select Case en VBA)

Il en existe d'autres mais cela fera partie d'un autre tutoriel…

Fonction SI avec plusieurs conditions

Il est parfois nécessaires de vérifier plusieurs conditions en même temps pour pouvoir déterminer le résultat. De manière générale, on utilise deux types de vérifications:

  • si toutes les conditions sont remplies  – dans ce cas, on utilisera une formule qui combine les fonctions SI et ET
  • si au moins une des conditions est remplie – ici, la fonction SI sera combinée avec la fonction OU

Ces deux combinaisons élargissent grandement le champ d'application, la flexibilité et l'efficience de la fonction SI.

Fonction SI en combinaison avec fonction ET

Si l'on veut vérifier si plusieurs conditions sont remplies en même temps, il serait naturel de tester la premier condition avec une fonction SI et si elle est remplie, tester la condition suivante avec la fonction SI suivante etc. Ce qui, par exemple, dans le cas de trois conditions, pourrait nous mener à la formule suivante:

=SI(A1="ok";SI(A2="ok";SI(A3="ok";"tout est ok";"tout n'est pas ok");"tout n'est pas ok");"tout n'est pas ok")

Il est possible de simplifier cela. Le principe est de d'abord tester avec la fonction ET si toutes les fonctions sont remplies et ensuite utiliser une seule fonction SI pour déterminer le résultat à renvoyer. Pour rappel, la fonction ET renvoie VRAI si toutes les conditions sont remplies et FAUX si au moins une condition n'est pas remplie. Ainsi, notre formule n'utilise que deux fonctions (1x SI et 1x ET) – ce qui rend la formule finale plus lisible et plus rapide.

En pratique, cela change la formule citée plus haut en la formule suivante:

=SI(ET(A1="ok";A2="ok";A3="ok")=VRAI;"tout est ok";"tout n'est pas ok")

Dans un cas plus complexe, on peut voir par exemple ceci:

Fonction SI en combinaison avec fonction ET

Vous pouvez voir la formule complète dans la "Barre de formule". Remarquez la fonction ET (comprenant 3 conditions) qui est surlignée en tant que condition de la fonction SI.

Fonction SI en combinaison avec fonction OU

Tout comme dans le cas précédent, le principe reste le même: vérifier grâce à la fonction OU si au moins une condition est remplie et utiliser ensuite la fonction SI pour renvoyer le résultat souhaité.

La formule suivante peut servir d'exemple:

=SI(OU(A1="ok";A2="ok";A3="ok")=VRAI;"au moins une valeur est ok";"rien n'est ok")

Pour rappel, la fonction OU renvoie VRAI si au moins une conditions est vraie et renvoie FAUX si aucune condition n'est remplie.

À nouveau, grâce à cette combinaison, vous pouvez traiter par exemple 10 conditions différentes avec une formule composée de seulement deux fonctions

Encore un exemple plus pratique:

Fonction SI en combinaison avec fonction OU

Dans cet exemple, vous pouvez, à nouveau, voir que la condition de la fonction SI (ici il s'agit de la formule OU contenant trois conditions) est surlignée – c'est son résultat qui déterminera si la formule complète affichera "au moins une condition remplie" ou "aucune condition remplie".

Le cas "ultime": combinaison des fonctions SI, ET & OU dans une seule formule

Les fonctions ET et OU ont un avantage considérable: il est possible de les combiner de telle sorte que cela peux couvrir un large éventail de possibilités. On reprend les principes cités plus haut pour chacune de ces fonctions et on peut l'appliquer à une situation concrète.

Prenons l'exemple suivant: Nous avons 3 conditions –  A, B et C et nous voulons sélectionner tout les cas où la condition A est remplie ainsi qu'au moins une condition parmi les conditions B et C. C'est tout à fait faisable. Et pour illustrer cet exemple de manière plus concrète, on peut le transposer à une situation réelle de manière suivante:

Fonction SI en combinaison avec fonctions OU et ET

La formule finale à utiliser peut donc être la suivante:

=SI(ET(A2="janvier";OU(B2>10000;C2="Oui")=VRAI)=VRAI;"entre dans le calcul";"ne rentre pas dans le calcul")

Maintenant, il suffit d'utiliser ce principe en l'adaptant à vos besoins. Comme vous pouvez le constater, la fonction SI, en combinaison avec d'autres fonctions, peut résoudre des problèmes assez complexes…

Vous pouvez trouver et tester ces trois cas dans le fichier:

Démo de l'utilisation des fonctions SI, ET et OU

Autres utilisations de la fonction SI et les fonctions apparentées

Il existe en Excel d'autres fonctions bien pratiques qui fonctionnent sur le principe de la fonction SI. En voici la liste…

  • SIERREUR – une fonction très pratique grâce à laquelle vous éviterez que des erreurs tels que "#N/A", "#DIV/0!" ou encore "#VALEUR!" d'apparaître sur l'écran.
  • MAX.SI & MIN.SI – nouvelles fonctions (à partir de Excel 2016) qui permettent de déterminer la valeur maximale ou minimale parmi une liste des valeurs et qui remplissent une condition particulière.
  • MOYENNE.SI & SOMME.SI & NB.SI – fonctions permettant de calculer la moyenne, la somme ou le nombre de cellules qui correspondent à une condition / à un critère.
  • SI.CONDITIONS – fonction qui permet d'imbriquer plusieurs fonctions SI dans une seule fonction (disponible à partir de Excel 2016).

Pour aller plus loin…

Si vous n'en avez pas encore assez de la fonction SI en Excel, vous pouvez consulter la page Microsoft dédiée à cette fonction. Sinon je vous propose les articles suivants…

 

27 0

 



Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

6 commentaires sur “Fonction SI en Excel – tout ce que vous devez savoir

  • Jean-Louis

    Merci, c'est le tutoriel le plus complet que j'ai trouvé sur internet sur la fonction SI en Excel!
    Bonne continuation…
    J-L

  • Domino16

    Bonjour ; je veux bien que l'imbrication "SI et "OU" fonctionne, mais à condition que le seul mot (par exemple "ok") soit écrit dans la cellule.
    MAIS, s'il est écrit dans une chaîne de caractères dans la cellule à ausculter, ça ne marche pas.
    Pourrais-je avoir une solution, svp ? Cela fait 3 jours que je suis dessus, et là, je craque un peu.
    Merci
    Ma formule : si "restaurant" ou "hôtel" ou "camping" se trouve dans la cellule B5, la somme C5+E5 est écrite dans la cellule P5.
    Re-merci

    • excel-malin.com Auteur du billet

      Bonjour,
      ce n'est pas une question de nombre de mots mais de l'exactitude du contenu. Les fonctions ET et OU comparent le terme recherché avec le contenu complet et exact de la cellule. Donc si vous cherchez "restaurant A" et la cellule contient "restaurant A", cela va fonctionner.

      Pour résoudre votre problème, passez par la fonction TROUVE – elle vérifie si une chaine de caractères en contient une autre. Le tutoriel est ici: http://excel-malin.com/tutoriels/excel-fonctions/trouve-et-cherche/

      Donc dans votre cas, cela devrait donner ceci:
      =SI(OU(SIERREUR(TROUVE("hôtel";B5);0)>0;SIERREUR(TROUVE("restaurant";B5);0)>0;SIERREUR(TROUVE("camping";B5);0)>0)=VRAI;C5+E5;"")

      Cela marche pour vous? Je l'ai traduite de mémoire de l'anglais qui fonctionne:
      =IF(OR(IFERROR(FIND("hôtel";B5);0)>0;IFERROR(FIND("restaurant";B5);0)>0;IFERROR(FIND("camping";B5);0)>0)=TRUE;C5+E5;"") Donc j'espère que je n'ai pas fait une faute de frappe quelque part…

      Bàv, Martin