Monsieur Excel
Pour tout savoir faire sur Excel !

26 septembre 2018

Modèle de facturation (d)

Je vous ai laissés à la fin de l’article précédent avec la formule suivante pour la cellule I5 :
=rept("*";(H5-F5)/5)

Nous avons constaté qu’il y avait une erreur quand le stock disponible était supérieur au stock mini. Nous apprenons ainsi une chose de plus sur la fonction rept() : on ne peut pas répéter quoi que ce soit un nombre négatif de fois.

La première formule sérieuse pour I5 est donc la formule suivante :
=si(H5>F5;rept("*";(H5-F5)/5);"")

Les erreurs ont disparu, mais il reste un problème car le nombre d’étoiles n’est pas toujours le bon, il y a parfois une étoile manquante. Cela tient à ce que la fonction rept() prend la partie entière de l’argument. Il faut donc utiliser la formule suivante pour résoudre le problème :
=si(H5>F5;rept("*";(H5-F5+4)/5);"")

Voilà un cas intéressant ! Nous avons parfaitement bien résolu le problème en ajoutant 4/5, ce qui fait qu’une unité d’écart nous donnant 1/5, la somme des deux fera 1 (une étoile). Cette solution, parfaite sur le plan mathématique, nous pose un nouveau problème : que vous en penser les utilisateurs moins compétents qui ne comprendront pas l’astuce de cette solution ?

C’est un problème auquel, en tant que consultant, je suis souvent confronté. Il faut parfois choisir une solution moins efficace, et/ou moins jolie, mais que les utilisateurs auront plus de chance à comprendre. Voici donc une telle solution :
=si(H5>F5;rept("*";arrondi.sup((H5-F5)/5;0)); "")

Peut-on encore améliorer cette solution ? Certes, en remplaçant le si() par un max() : =rept("*";max(0; arrondi.sup((H5-F5)/5;0)))

Remarque – Quand j’audite les modèles de mes clients, j’ai souvent l’occasion d’améliorer leurs formules en remplaçant des si() par d’autres fonctions. Le record que j’ai vu, c’est un client qui utilisait une formule du genre =si(a>b;a;b), a et b étant des formules complexes. Alors qu’il suffisait d’écrire =max(a;b) …

En, conclusion, vous venons de voir quatre formules consécutives améliorant la formule originale qui, de plus, donnait parfois un résultat manquant d’une étoile... J’ai représenté en commentaire, sur la copie d’écran, les trois formules qui donnent le résultat attendu.