Colorier la moitié d'une cellule en fonction d'une case à cocher et exploration des mises en forme conditionnelles.

Allez, on sort la tête l'IA et on revisite quelques fondamentaux !

L'idée !

L'astuce est de passer par une mise en forme conditionnelle en barre de données

Processus pour des cas simples

Par exemple, on saisit 1 dans la cellule B5, puis on applique sur cette cellule une mise en forme conditionnelle avec des barres et ensuite on saisit 0 et 1 pour les limites. On notera aussi que "Afficher la barre uniquement" a été cochée pour ne pas afficher la valeur 1 de la cellule (demande initiale du client).

On obtient ceci :

Évidemment, dans la vraie vie, on veut avoir une valeur spécifique dans cette cellule, issue d'un calcul ou bien tapée à la main.

Donc, on peut modifier la solution pour prendre en compte cette valeur et soustraire 1 (par exemple) et ajouter 1 pour les calculs de limites. J'ai aussi décoché "Afficher la barre uniquement"

Il reste une petite subtilité à gérer, le cas des valeurs négatives.

Voici ce qui est retourné par défaut avec la valeur -20

Donc, on va donc cliquer sur le bouton "Valeur négative et axe..."

Et ensuite, on choisir les options suivantes :

Et qui ne va donc pas changer si on change la valeur de J5

Aller plus loin avec des cases à cocher.

On va compliquer un peu les choses en contrôlant avec des cases à cocher.

L'idée est toute simple, c'est de reprendre la même solution, mais en testant la valeur de la case à cocher avec une formule SI.

On a donc :

Et pour ne pas afficher le texte et gérer un contenu dynamique, on peut utiliser cette formule dans la mise en forme conditionnelle :

=SI($J$6;$K$6-1;NA())

et pour la limite haute

=SI($J$6;$K$6+1;NA())

N'hésitez pas à partager vos cas d'usage et vos expérimentations !

A très bientôt.

(1+1)=2=VRAI

Quand 1+1 = 2, et que 2 est considéré comme VRAI par Excel...
C'est un résultat parfaitement normal pour Excel, mais contre-intuitif et qui est détourné dans plusieurs situations.

Par exemple pour simuler un OU
=FILTRE(C7:C9;(D7:D9=1)+(E7:E9=1))

ou bien pour créer des matrices vides
=(SI(SEQUENCE(2;3);"")
des alternatives plus explicites existent aussi, comme MAKEARRAY ou ETENDRE:
=MAKEARRAY(2;3;LAMBDA(_l;_c;""))
=ETENDRE("";2;3;"")

Le petit fichier de démonstration :

Un peu de VBA avancé : identifier le dernier élément entré dans une listbox

Bonjour à tous,

J'adore le VBA et je pense que ce post fait peut être partie des derniers sur ce sujet... ou pas...

Explications :

En fait, vous allez trouver ci-dessous une approche assez intéressante pour identifier le dernier élément entré dans une listbox. Mais, 95% du code a été généré par ChatGPT, pas immédiatement, et pas du premier coup, mais tout de même. Comme ca n'arrête pas d'évoluer, d'ici quelques mois, je pense que ca sera encore plus facile.

De fait, est ce vraiment utile de continuer de proposer du code VBA tout fait ? Je pense, de moins en moins, l'IA générative a remplacé cette fonction. Top ! Je vais pouvoir me consacrer à d'autres aspects.

Une invitation à relire et ré-écouter M. Serres sur "le corps perd". Que perdons-nous comme faculté avec l'IA et que gagnions-nous ?

Un concept très intéressant : "Exodarwinisme : externalisation des fonctions du corps dans un objet donné"

Le fichier (à dézipper et débloquer) :

La vidéo :