Monsieur Excel
Pour tout savoir faire sur Excel !

24 novembre 2013

Un peu plus sur agregat()...

Le vide est-il nul ?

Eh oui, pour une fois, nous nous posons une question métaphysique ! 

Pour faire suite aux commentaires de l’article précédent, nous voyons aujourd’hui ce que donne la formule matricielle – donc validée avec [Ctrl]-[Maj]-[Entrée] – utilisée dans les colonnes E et F pour émuler le travail de la fonction agregat().

La formule en E2 est, comme dans l'article précédent : =moyenne(si(esterreur($A$1:$A$9);"";$A$1:$A$9))
En F2, nous avons entré : =moyenne(si(esterreur($A$1:$A$10);"";$A$1:$A$10))

La colonne E nous donne les mêmes résultats que la fonction agregat() en colonne D. Pour la colonne F, les résultats sont différents car la formule matricielle compte la cellule vide en A10 comme un « 0 », alors qu’elle est ignorée par la fonction agregat().


En conclusion, le vide est un « 0 » pour la formule matricielle, mais il n’est pas nul pour agregat()…

Pourquoi utiliser la fonction agregat() ?

Une utilisation notable de la fonction agregat() peut être trouvée dans la définition de formats conditionnels. 

En effet, quand un format de ce type dépend de valeurs constatées sur un ensemble de cellules, il peut être utile que ce format ne « disparaisse » pas dès que l’une des cellules concernées affiche un message d’erreur ou ne puisse être faussé si l’une des cellules concernées est vide.

Le très mauvais choix de Microsoft

J’ai été très déçu par la façon totalement idiote dont Microsoft a défini l’argument « option » de la fonction agregat() – cf. article du 13 novembre. Ce choix d’option est un véritable fouillis.

Il aurait été bien plus intelligent d’utiliser, à l’instar de la fonction InputBox du VBA, un argument additif à partir de puissances de 2 avec par exemple :
  • 1 pour ignorer les fonctions Sous.Total et Agregat imbriquées
  • 2 pour ignorer les lignes masquées
  • 4 pour ignorer les valeurs d’erreur
Un « 6 », donc 2 + 4, indiquerait alors que l’on ne veut ignorer que les lignes masquées et les valeurs d’erreur.

Cela aurait été tellement plus clair !