Monsieur Excel
Pour tout savoir faire sur Excel !

25 juillet 2019

La fonction si.multiple()

La fonction si.multiple() est une fonction étrange. Son objectif annoncé est de permettre à l’utilisateur d’éviter, en recourant à elle, l’imbrication de plusieurs si() les uns dans les autres. Sa syntaxe annoncée est :
=si.multiple(expression;valeur1;résultat1;défaut_ou_valeur2;résultat2;...)

Quand on regarde les blogs ou les vidéos Excel, on voit à ce sujet de multiples exemples dans lesquels on a du mal à voir l’intérêt de la fonction, par exemple :
=si.multiple(B4;1;"lundi";2;"mardi";3;"mercredi";"autre")

Dans un tel cas, ou pourrait tout aussi bien utiliser la fonction recherche() ou la fonction choisir(), et ce serait bien plus léger… Ou même, jusqu’à un certain point, utiliser tout simplement un format comme jjjj

Je vais vous montrer une application plus créative de cette fonction, en reprenant notre base habituelle, que nous avons légèrement modifiée pour une troisième option de sexe.

Nous voulons obtenir en colonne H le prénom et le nom de la personne s’il s’agit d’un homme, et le prénom et le salaire s’il s’agit d’une femme, et un troisième message si le sexe n’est pas renseigné :


La formule de H6, reproduite vers le bas, est alors :
=B6&" "& si.multiple (A6;"M";C6;"F";" : "& texte (E6;"# ##0 €");"X";": sans sexe... ")
Avec cet exemple, je ne pense pas que vous puissiez trouver une formule plus légère qui engendre le même résultat…

Remarque 2 – Faites attention aux jokers « ? » et « * » qui ne se comportent pas comme l’on pourrait s’y attendre avec cette fonction. Supposons qu’une cellule contienne Alfred et que l’on écrive dans une autre cellule =substitue(cellule;"f?";"g?") ou =substitue(cellule;"f*";"g*") : le résultat restera « Alfred » –  et non « Algred » – dans les deux cas !

Lors de mes interventions sur les modèles de mes clients, j’ai constaté plus d’une fois que des solutions compliquées avaient été mises en œuvre là où de simples substitue() auraient résolu le problème de façon bien plus rapide et élégante.