Protection des formules dans les cellules liées au contrôle (Microsoft Excel)
Michael a un contrôle de formulaire (une case à cocher) lié à la cellule A1. Il peut placer une formule dans la cellule A1 qui se résout à True ou False, et la case à cocher reflète ce résultat. Toutefois, si quelqu’un clique sur la case à cocher pour le modifier, la formule de la cellule A1 est remplacée par un Vrai ou un Faux explicite. Michael a besoin de la formule dans la cellule A1 pour contrôler la case à cocher, mais il a également besoin que l’utilisateur puisse activer la case à cocher sans écraser la formule. Il se demande si cela est possible.
Bref, ce n’est pas possible. Microsoft a prévu des cases à cocher pour contrôler la valeur dans une cellule, puis vous pouvez référencer cette cellule dans d’autres formules. Ils n’ont jamais prévu que les cellules liées contiennent des formules.
Une chose que vous pouvez essayer, si vous le souhaitez, est de créer une macro qui surveille une cellule et, si elle change, de mettre à jour une autre cellule. Par exemple, vous pouvez lier votre case à cocher à une autre cellule (telle que la cellule B1), afin que la formule de la cellule A1 ne soit pas affectée lorsque la case à cocher est utilisée. Vous créez ensuite une macro de gestionnaire d’événements qui examine tout ce qui se trouve dans la cellule A1, et si elle change, la macro modifie ce qui se trouve dans la cellule B1. Cette modification dans la cellule B1 déclenchera alors la modification de la case à cocher.
Une autre approche macro-basée consiste à utiliser une macro pour écrire une formule dans la cellule A1. Voici un exemple simple d’une telle macro:
Sub CheckBoxState() Range("A1").Formula = "=IF(" & Range("A1") & _ ",""CHECKED"",""NOT CHECKED"")" End Sub
Si vous affectez cette macro au contrôle de case à cocher, deux choses se produisent lorsqu’une personne clique sur la case à cocher. Tout d’abord, l’état de la case à cocher est écrit dans la cellule A1, écrasant tout ce qui s’y trouve. Deuxièmement, la macro est exécutée et réécrit la formule dans la cellule A1. Notez que la formule (telle que définie dans cette macro) prend en compte la valeur qui vient d’être stockée dans la cellule A1. Ainsi, si le contrôle de case à cocher écrit True dans la cellule A1, la macro insère ce qui suit dans la cellule:
=IF(TRUE,"CHECKED","NOT CHECKED")
Cliquez à nouveau sur la case à cocher, la valeur insérée dans la cellule devient False et la formule placée dans la cellule change. Bien sûr, vous devrez modifier la macro afin que la formule qu’elle force dans la cellule A1 reflète la formule que vous voulez vraiment.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (113) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.