Monsieur Excel
Pour tout savoir faire sur Excel !

24 décembre 2016

Booléens vs. SI() imbriqués

Une particularité d’Excel est sa gestion des variables booléennes. Une variable booléenne peut prendre les valeurs VRAI ou FAUX. Quand ces valeurs sont utilisées dans des calculs, VRAI est équivalent à 1 et FAUX à 0.

Prenons un exemple tout simple où un commercial reçoit une prime de 75 € pour une commande de 1.000 € ou plus, de 125 € pour une commande de 2.000 € ou plus, et enfin de 250 € pour une commande supérieure à 5.000 €.

Une solution simple (colonne G) consiste à créer une table de recherche en B1:C4 dans laquelle on ira chercher le résultat grâce à la fonction recherche().

Supposons maintenant que l’on ne souhaite pas créer cette table de recherche. On peut alors utiliser (colonne H) trois fonctions si() imbriquées l’une dans l’autre.

Mais une troisième solution (colonne I) revient à remplacer cela par une formule avec des conditions résultant dans des valeurs booléennes.


Remarque – L’utilisation de valeurs booléennes permet d’éviter à l’utilisateur d’imbriquer des fonctions si(), ce qui n’est jamais souhaitable pour la lisibilité des modèles.

En tant que consultant, quand je construis des modèles pour mes clients, je suis souvent confronté à ce genre de dilemme. La solution booléenne est plus simple et logique que la solution avec les si(), mais elle est plus difficile à comprendre pour les utilisateurs. Quand j’ai ainsi le choix entre une solution plus directe et/ou compacte, mais moins compréhensible, je choisis en général pour mes clients la solution la plus compréhensible et auditable.

Pour la même raison, je ne mets du VBA dans mes modèles que lorsque c’est indispensable. Les clients ont en effet plus de mal à s’approprier un modèle s’il contient du code VBA…

2 Commentaire(s):

  • Ce commentaire a été supprimé par l'auteur.

    By Blogger jhbf, sur 10:23 AM  

  • Bonjour
    - L'utilisation de fonctions SI imbriquées est sans doute définitivement à proscrire pour son manque de lisibilité (aussi bien pour l'utilisateur du modèle que pour le créateur lui-même)...
    ...en tout cas tant que les développeurs de Microsoft n'auront pas doté Excel d'un petit éditeur de formules permettant de "mettre en page" les formules à la manière d'un éditeur de programmation, en remplacement de la barre de formule jamais modernisée au fil des versions d'Excel.

    - l'approche booléenne est vraiment intéressante pour sa lisibilité, mais elle transforme la formulation du problème :
    la prime de base est 75, le commercial reçoit une prime complémentaire de 50 à partir d'un certain montant de commande
    Ce qui ajoute un degré de complexité complémentaire si le créateur du modèle n'est pas l'utilisateur... Il faudra donc documenter ce changement de perspective
    La documentation des modèles est également un point sur lequel on pourrait imaginer quelques améliorations, comme la création automatique d'un tableau ou d'un onglet regroupant les commentaires saisis dans les cellules...

    - l'utilisation d'une fonction SI.CONDITIONS est une bonne alternative à l'approche booléenne : la formulation du problème n'est pas modifiée et la formule reste très lisible, même si elle implique de nombreuses conditions...
    ...mais j'anticipe certainement sur la publication suivante.

    - L'approche RECHERCHEV dans une table (mieux : dans un tableau de données avec utilisation de plages nommées pour une formule plus proche du langage naturel) me semble toutefois rester l'approche la plus simple à comprendre, à mettre en oeuvre et à documenter.

    PS :
    Une petite question
    Découvrir des utilisations subtiles des fonctions et fonctionnalités d'Excel est un des grands plaisirs de la lecture de vos publications.
    Vous abordez toutefois très peu le thème de la méthodologie de conception d'une solution tableur : savoir organiser clairement un modèle pour séparer données, calculs, présentation des résultats documentation... et construire ainsi des solutions Excel logiques, faciles à comprendre et à maintenir dans la longue durée.
    J'ai pourtant l'impression que c'est une faiblesse de nombreux utilisateurs qui construisent leurs modèles à partir du résultat à présenter, et non à partir des informations disponibles pour y parvenir... ce qui se traduit souvent par une plus grande complexité de construction du modèle.
    J'aimerais bien connaître votre approche de la question. Peut-être en 2017 ?

    By Blogger jhbf, sur 10:28 AM  

Enregistrer un commentaire

<< Accueil