Additions de booléens...

Pourquoi {=SOMME(A1:A4=1)} donne 0 alors que {=SOMME((A1:A4=1)*1)} donne le résultat attendu ?

Et quand les deux Laurent répondent exactement à la même heure cela donne ça :
La fonction Somme accepte des paramètres numériques, booléen ou texte sans broncher, mais ça ne veux pas dire qu'elle en tient compte!
C'est ainsi que la somme des cellules A1:A3 suivantes donne 100:
bonjour
100
Vrai
Ce qui revient à dire que Vrai n'est pas converti en numérique! Par contre, si tu utilises l'opérateur d'addition "+", c'est différent, il s'opère une conversion de type implicite (basée sur Vrai=1 et faux=0).

La conversion de booléens en valeurs numériques n'est faite par Excel que s'ils sont inclus dans un calcul, donc combinés avec l'un des 4 opérateurs +, -, * ou /, ou alors par l'intermédiaire de la fonction N().
S'ils sont simplement utilisés tels quels comme paramètres de fonction, il n'y a pas de conversion. Il y a une logique dans ce choix. La fonction SOMME accepte tout type de paramètre, nombres, textes ou valeurs logiques, pour davantage de souplesse. Quand une plage comporte à la fois des nombres et du texte, par exemple, la fonction ignore tout simplement tout ce qui n'est pas numérique (y compris les VRAI) et fait la somme sur les nombres sans renvoyer d'erreur.
C'est la même chose pour les sommes de tableaux. Par exemple, =SOMME({VRAI;"Toto";4;5}) renvoie 9. Idem avec =SOMME({VRAI;"12";4;5}).
Dans ce cadre, elle ne fait aucune conversion implicite, et sélectionne uniquement les valeurs qui sont explicitement de type numérique. Si la matrice ne contient que des booléens, ils seront donc tous ignorés et la somme renverra 0. Les conversions ne sont faites que s'il y a opérations mathématiques entre les arguments (addition, multiplication etc). C'est un choix comme un autre, mais il est assez cohérent.

Auteurs : ,

Mots clefs associés à cette page : , ,