N’imbriquer pas les fonctions SI() sur Excel !
Dans une vidéo précédente, nous eut l’occasion de découvrir l’une des fonctions les plus utiles d’Excel qui est la fonction SI(). Aujourd’hui, nous allons voir comment aller beaucoup plus loin dans son utilisation en découvrant le principe d’imbrication.
Nous verrons également à la fin de ce tutoriel, que l’un des meilleurs usage que nous pouvons avoir de cette fonction SI(), sera parfois de ne simplement pas l’utiliser !
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
Si vous vous avez l’habitude d’utiliser Excel, vous connaissez très probablement la fonction SI() qui permet de retourner dans une cellule un résultat différent en fonction d’un test.
Dans le cas contraire, vous trouverez plusieurs tutoriels sur le blog :
- Comment effectuer un test sur Excel : la fonction SI() (ainsi que ET() et OU())
- Découvrir la fonction SI() par l’exemple sur Excel (5 exemples à la difficulté progressive)
Pour rappel, cette fonction s’utilise de la manière suivante :
=SI(Test_logique;[Valeur_si_vrai];[Valeur_si_faux])
Où :
- Test_logique est le test qu’Excel effectue afin de déterminer la valeur à retourner. Ce test retourne soit la valeur « VRAI », soit la valeur « FAUX ». Il peut s’agir soit d’un test effectué à l’aide d’un opérateur logique (exemples : « 1=2 » retourne « FAUX », alors que « 1<2 » retourne « VRAI »), soit d’un test effectué à l’aide d’une fonction prévue pour retourner l’une de ces deux valeurs (exemple : « ESTERREUR(#N/A) » retourne « VRAI », « ESTVIDE(A1) » retourne « VRAI » ou « FAUX » en fonction de la cellule A1).
- Valeur_si_vrai est la valeur qui doit être retournée par Excel lorsque le premier paramètre de la fonction (Test_logique) est « VRAI »
- Valeur_si_faux est la valeur qui doit être retournée par Excel lorsque le premier paramètre de la fonction (Test_logique) est « FAUX »
Pour illustrer le fonctionnement de cette fonction SI(), nous allons partir du tableau suivant dans lequel nous retrouvons les ventes effectuées par des commerciaux d’une entreprise au cours de l’année 2021 :
Ici, nous allons chercher à savoir à identifier les ventes pour lesquelles le montant est supérieur à 15000€.
Nous utiliserons donc la fonction suivante :
=SI(C9>15000;"Oui";"Non")
2. L’imbrication des fonctions SI()
Comme nous venons de le voir, la fonction SI() permet d’effectuer un test pour retourner une valeur donnée en fonction du résultat de ce test.
Mais parfois, ce test unique ne sera pas suffisant pour répondre à une problématique donnée.
Heureusement, il est possible de démultiplier les scénarios possibles en imbriquant des tests en tant qu’argument Valeur_si_vrai et Valeur_si_faux.
Imbriquer une fonction consiste à l’intégrer en tant qu’argument à l’intérieur même d’une autre fonction.
Revenons sur notre exemple.
Dans la colonne E, nous retrouvons le numéro correspondant au jour de la semaine, obtenu avec la fonction JOURSEM() que nous avons déjà eu l’occasion d’utiliser lors d’un tutoriel précédent :
=JOURSEM(B9;2)
Pour obtenir le jour correspondant en toutes lettres, nous pouvons utiliser cette imbrication de fonction SI() de la manière suivante :
=SI(E9=1;"Lundi";SI(E9=2;"Mardi";SI(E9=3;"Mercredi";SI(E9=4;"Jeudi";SI(E9=5;"Vendredi";SI(E9=6;"Samedi";SI(E9=7;"Dimanche";"Jour inconnu")))))))
Nous commençons par effectuer le premier test, lequel consiste à regarder si la valeur de la cellule E9 est égale à 1. Lorsque c’est le cas, nous renvoyons le mot « Lundi », et dans le cas contraire, nous effectuons le deuxième test.
Nous répétons cette opération jusqu’à avoir analysé tous les jours de la semaine.
3. La limite de 7 sept imbrication SI()
Sur les anciennes versions d’Excel, le nombre de fonction SI() que nous pouvions imbriquer les unes dans les autres était de 7.
Impossible donc d’envisager de gérer un huitième jour de la semaine !
Maintenant, ce nombre est passé à 64 imbrications possibles… J’aurai presque envie de dire malheureusement !
En effet, comme le montre l’exemple précédent, imbriquer trop de formules les unes dans les autres présente un certain nombre d’inconvénients et doit être réservé uniquement aux situations pour lesquelles il n’existe pas d’alternative :
- Une fonction trop imbriquée est difficilement lisible et interprétable,
- Le risque d’erreur est également plus important,
- Il faut bien gérer les parenthèses pour espérer valider la formule,
- Les besoins en ressources sont également plus importants, et peuvent générer des ralentissements sur le fichier…
4. Les fonctions SI() évoluées
Depuis la version 2016 (ainsi la version 365 et Online), Excel propose deux fonctions directement déclinées de la fonction SI() qui permettent également de combler cette limitation du nombre d’imbrications maximum.
Il s’agit des fonctions des fonctions SI.CONDITIONS() et SI.MULTIPLE().
Tout d’abord, la fonction SI.CONDITIONS() se rapproche énormément de l’exemple que nous venons de voir, étant donné que celle-ci consiste à réaliser des tests successifs pour retourner un résultat donnée lorsque l’un de ces tests est égal à VRAI.
Nous pourrons donc modifier la fonction précédente de la manière suivante :
=SI.CONDITIONS(E10=1;"Lundi";E10=2;"Mardi";E10=3;"Mercredi";E10=4;"Jeudi";E10=5;"Vendredi";E10=6;"Samedi";E10=7;"Dimanche")
Cette fonction permet donc de supprimer les références à la fonction SI() et ne pas risquer d’erreurs liées aux parenthèses.
Ensuite, la fonction SI.MULTIPLE() permet quant à elle d’accéder directement à la bonne valeur sans avoir besoin d’effectuer les tests successifs.
Nous commençons en effet par donner la référence de la cellule sur laquelle nous souhaitons effectuer le test, puis les couples d’arguments suivants seront constitués des valeurs possibles que la cellule peut prendre et du résultat à retourner :
=SI.MULTIPLE(E9;1;"Lundi";2;"Mardi";3;"Mercredi";4;"Jeudi";5;"Vendredi";6;"Samedi";7;"Dimanche")
Mais, parfois, lorsque la fonction SI() devient trop complexe, alors cela voudra simplement dire que celle-ci n’est pas adaptée pour répondre à la problématique donnée, et nous devrons alors chercher une meilleure solution.
Si nous reprenons l’exemple présenté au-dessus, nous pouvons en effet simplifier grandement le déroulement du calcul en utilisant un tableau de saisie des correspondances au sein duquel nous irons récupérer les données avec une fonction de recherche :
Ici, nous utiliserons les deux fonctions INDEX() et EQUIV() qui permettent comme l’avons vu dans le tutoriel de présentation d’effectuer des recherches complexes et qui restent fonctionnelles, même sur les anciennes versions d’Excel :
=INDEX($I$9:$I$15;EQUIV(E9;$H$9:$H$15;))