Une cellule = bouton-poussoir à deux états + affichage changeant

Bonjour.
L’application Calc que j’utilise est de LibreOffice et de version 7.5.2.2 (X86_64)

Quelqu’un pourrait-il me dire si et où il aurait trouvé la fonction suivante, ou me donner quelques conseils de recherche :
But : Une cellule (p.ex. Q3) sert de bouton recelant une variable binaire. Suivant qu’on ait répétitivement cliqué dessus, le libellé du bouton (ou de la cellule) indique “le plus bas” ou “0”.
De plus la variable binaire de cette cellule est rendue accessible à des formules (de formatage conditionnel) d’autres cellules. Celles-ci s’adaptent (la couleur de fond) à la valeur ‘true’ ou ‘false’ de la cellule Q3.

Le formatage conditionnel fonctionne déjà : D’après la valeur de cellules (p.ex. N4 à N10), la couleur de fond d’autres cellules (Q4 à Q10) devient rouge pâle ou rouge vif.
Dans la fenêtre “Formatage conditionnel pour Q4:Q10”,

  • “La formule est” est “$Y4<$K4+($R4-$K4)*$N4”
    (En réalité, la formule est un peu plus complexe : “ET($Y4>=…;$Y4<…)”)
  • “Appliquer le style” est “cf_rouge_pâle” (sinon “cf_rouge_vif”)

Ce que je voudrais à présent est que si l’état de la variable de la cellule-bouton Q4 est ‘false’, comme $K4 devient 0 et comme la formule à appliquer devient “$Y4<$R4*$N4”, alors
“La formule est” devient donc “if Q3=‘true’ then $Y4<$K4+($R4-$K4)$N4 else $Y4<$R4$N4”.

Ma question : Comment programmer la cellule Q3 en bouton afin qu’elle affiche “le plus bas” ou “0” ? Le “if Q3 then … else …” du formatage conditionel fonctionnera aussi simplement ?

Merci d’avance aux répondeurs.

Vous pouvez utiliser un contrôle de formulaire de type “option” ou case à cocher".

Merci Valioud pour votre début de réponse,
mais ni "un contrôle de formulaire de type ‘option’ ou ‘case à cocher’ " ne me permet pas de démarrer.
Insertion > Contrôle de formulaire > une liste des options. Y figure ‘bouton’. Mais toute la liste est en grisé. Télécharger quelque chose pour disposer de ces options ?

Et je n’ai vraiment pas beaucoup de temps pour chercher.
Je croyais que l’usage de la fonctionnalité telle que je l’ai décrite aurait été banal, car il me semble qu’elle soulève l’intérêt de pas mas d’utilisateurs de Calc …

Quelqu’un aurait une réponse un peu plus détaillée ?

Si tel est le cas, il y aurait eu d’autres questions sur ce forum. Or, vous semblez être le 1er.

Ce serait plutôt à vous de fournir un document sur lequel on pourrait s’appuyer.

Bonjour @Chavadam,

Je ne pense pas qu’un bouton (et son état) puisse être lié à une cellule. En revanche, il est possible de créer une checkbox qui se comportera comme vous le souhaitez:
image
image

J’utilise la version anglaise de LibreOffice, donc mes noms de menu et options seront sans doute différents en français…

  1. Pour pouvoir ajouter une checkbox, il faut d’abord que la barre d’outil “Form Design” soit visible. Pour cela, il faut aller dans le menu “View > Toolbars > Form Design” pour la rendre visible.
  2. Ensuite, il faut cliquer sur l’icône “équerre” qui va passer en mode dessin de forme.
  3. Maintenant, dans le menu “Insertion > Contrôle de formulaire”, tous les contrôles devraient être sélectionables.
  4. Choisir le contrôle “Checkbox” et le placer dans la cellule Q4.
  5. Cliquer dans la barre d’outil l’icône à droite de l’équerre (elle s’appelle “Control Properties” en anglais).
  6. Dans le premier onglet “General”, effacer le texte dans “Label” (deuxième de la liste), ainsi seule la checkbox sera visible.
  7. Remplir le deuxième onglet comme suit:
  8. image
  9. Fermer la fenêtre et cliquer sur l’ancre (première icône de la barre d’outil) afin que si vous changez la taille des colonnes, la checkbox reste bien dans la cellule Q4.
  10. Cliquer sur l’icône “Equerre” pour sortir du mode “edition de formulaire”. Maintenant, si vous cliquez la checkbox, le contenu de la cellule devrait changer.
  11. Pour repositionner la checkbox, il faut cliquer sur “l’Equerre”, sélectionner le contrôle, le déplacer et sortir du mode édition en recliquant sur “l’Equerre”,

Il est possible de copier la cellule Q4 vers Q5:Q10 mais attention, il faudra aller éditer individuellement chaque contrôle car ils pointent tous vers la cellule Q4 (Equerre > sélection du contrôle > icône d’édition des propriétés > Onglet Data).

Merci Steph1 pour ta réponse détaillée. Elle m’évitera bien des recherches. Mais un problème apparaît à l’étape 5 :

Blockquote
Cliquer dans la barre d’outil l’icône à droite de l’équerre (elle s’appelle “Control Properties” en anglais) > /Blockquote

L’icône ‘Propriétés du contrôle’ est bloqué en grisé. Je ne trouve pas le moyen de le rendre actif (= colorié). Je n’arrive donc pas à afficher le Dialog Box ‘Propriétés: Case à cocher’ ni donc l’onglet ‘Général’.

Bien à toi

Il faut que le contrôle soit sélectionné pour que l’icône des propriétés soit active.

Steph1,
Qqch ne va tjrs pas à ton point #4.

J’ai la règle des icônes de choix de type de ‘contrôle’. Toutes les icônes sont en couleur (aucune grisée).
L’icône ‘équerre’ est sélectionnée : Son arrière-plan est bleuté .
La cellule Q3 est sélectionnée : Cadre bleu.
Dans la règle des ‘contôles’, je sélectionne la ‘Case à cocher’, je tiens le bouton gauche de la souris appuyé et je glisse de l’icône ‘Case à cocher’ vers la cellule Q3. Rien n’y apparaît.
Ce n’est que quand je relâche le bouton gauche qu’une petite croix et un petit rectangle apparaissent à l’endoit du pointeur de la souris.
Mais aucune manoeuvre ne fait apparaître une case à cocher dans la cellule Q3.
Et le dialog box n’apparaît bien sûr pas non plus.

Aucune variante de manipulation n’aide. Comment faire ?
Merci d’avance.

Voici plus en détail le point 4:
Cliquer l’icône Checkbox dans la barre d’outil.
Le pointeur de la souris se change en une petite croix et un rectangle.
Déplacer ce curseur (sans cliquer de bouton de la souris) vers le coin haut gauche de la case Q3.
Presser le bouton gauche et déplacer la souris vers le coin droit bas de Q3, ce qui dessine un rectangle qui représente la taille du contrôle.
Relacher le bouton gauche de la souris, le contrôle apparaît.

Bonjour @Steph1
et merci pour ta réponse d’hier concernant le détail du point 4.

Je n’avais pas deviné que la petite croix et le petit rectangle m’invitaient à étaler le ‘contrôle’ à la grandeur désirée dans la cellule car aucune mini-icône n’apparaissait. Je m’étais attendu à traîner une mini-icône dans la cellule Q3 et en modifier la grandeur ensuite. Erreur de débutant.

À présent, je suis enfin arrivé à placer l’icône d’un ‘case à cocher’ dans les cellules Q3 et X3. Merci.
image

Mais c’est maintenant que nous en venons à ma question originelle.
Tant le contenu affiché d’une des cellules de Q4 à Q15 que leur formatage conditionnel ont besoin de calculer soit $Y4<$K4+($R4-$K4)x$N4, soit $Y4<0+($R4-0)x$N4, suivant que la case à cocher Q3 est activée ou non.
Quelle est la valeur binaire de la case à cocher, qui me permettrait d’utiliser p. ex. la formule (simplifiée)
if Q3=‘true’ then $Y4<$K4+($R4-$K4)x$N4 else $Y4<$R4x$N4
, tant pour le contenu affiché de chaque cellule de Q4 à Q15 que pour leur formatage conditionnel ?
Et que la cellule Q3 affiche “le plus bas” ou “0” plutôt que ‘Valeur infér’ ?
Dans mon exemple, K17 contient ‘=Q3’. Comment faire pour obtenir plutôt ‘VRAI’ ou ‘FAUX’ ?

J’observe aussi, dans le ‘dialog box’ ‘Propriétés : Case à cocher’ > Données > Cellule liée
que le champs d’entrée ne permet d’y indiquer qu’une seule cellule, pas ‘Q4:Q15’ par exemple. Or c’est indispensable … À l’aide de ‘Champ de données’ ? Il est bloqué à grisé.
‘Données’ : Comment employer les deux ‘Valeur référentielle’ ?

Merci d’avance.

Le contenu de la case Q3 est défini par les propriétés du contrôle (ci-dessous, c’est le contenu de Q4 , cellule liée qui vaut 1 quand la case est cochée, “Le plus bas” quand la case est décochée):
image
Donc il est possible d’écrire une formule du genre:
`=SI($Q$3=1;$K4+($R4-$K4)x$N4;$R4x$N4)
qui va retourner une valeur, que l’on pourra ensuite comparer avec le contenu de $Y4 pour faire un formatage conditionnel de la cellule.

Merci Steph1 pour ta réponse.

Aïe ! C’est ce que je redoutais; que le contenu de la case Q3 est défini par les propriétés du contrôle (en l’occurence le contenu de Q4). Mais c’est l’inverse dont j’ai besoin, c à d que les deux formules de chaque cellule Q4:Q15 - valeur à afficher et condition du formatage conditionnel - testent la valeur binaire de Q3 : Cochée ou pas.

Dans mon cas, la formule de formatage conditionnel (de la couleur de fond de cellule) se trouve de surcroît dans une suite de plusieurs conditions. Chaque condition adopte une formule légèrement différente.
Exemple d’une des conditions du formatage conditionnel :
⦁ “La formule est” : SI($Q$3=0 ; $Y4<$K4+($R4-$K4)$N4 ; $Y4<$R4$N4)
(En réalité, la formule est un peu plus complexe : “ET($Y4>=…;$Y4<…)”)
⦁ “Appliquer le style” - cf_rouge_pâle -
Dans la cellule Q4 s’affiche la valeur de =SI($Q$3=0 ; ($Y4-$K4)/($R4-$K4) ; $Y4/$R4)
Donc deux formules bien distinctes.

La valeur binaire du contenu de Q3 ne ferait qu’apporter une nuance à chacune de ces deux formules : permettre simplement de déterminer si c’est la valeur se trouvant dans K4 qui doit être utilisée ou si cette valeur doit être remplacée par ‘0’.

La valeur d’affichage des cellules Q4 à Q15 aura beau être `=SI($Q$3=0 ; $Kn+($Rn-$Kn)x$Nn ; $Rnx$Nn) , aucun artifice ne permettra jamais d’associer une deuxième formule (de formatage conditionnel) spécifique, p. ex.
'SI($Q$3=0 ; $Yn<$Kn+($Rn-$Kn)$Nn ; $Yn<$Rn$Nn) .
Je pense qu’il est inévitable d’arriver à ce que les deux formules de chaque cellule Q4:Q15 - valeur à afficher et condition du formatage conditionnel - testent la valeur binaire de Q3 : Cochée ou pas , et non l’inverse.

Et je ne parle même plus
⦁ du label variable à afficher en Q3 ) côté de l’icône de la case à cocher.
⦁ du recalcul immédiat des conditions du formatage conditionnel et de la valeur à afficher en cellule Qn aussitôt qu’on a (dés)activé la case à cocher dans Q3.

Un peu de recherche me laisse penser que probablement, aucun ‘contrôle’ de Calc d’OpenOffice ne permettrait de tester une valeur (binaire) se trouvant dans une autre cellule, même pas le contrôle ‘bouton’. C’est difficile à croire.

Je dois probablement abandonner.
Merci pour tes efforts, Steph1.

Abandonner ? Jamais !

Voici un exemple qui reprend la plupart de tes souhaits:

  1. La case à cocher, en Q3, est liée à R3 et retourne les valeurs “0” ou “1”, définies dans les propriétés du contrôle.
  2. J’ai mis une formule dans Q3 qui, en fonction du texte que tu veux voir figurer dans la cellule, affiche “zéro” ou “un”.
    Il est possible de grouper les deux points précédents en mettant directement dans le contrôle les valeurs que tu souhaites afficher, mais alors dans les formules suivantes, il faudra bien sûr mettre SI($Q$3=“Mon texte si coché”, …, …)
  3. J’ai mis dans Q4-Q12 la formule demandée
  4. Dans Q4, j’ai mis plusieurs conditions de formatage. Il faut raisonner en booléen et donc utiliser ET et OU plutôt que SI. J’ai mis des formules bidons pour tester mais les formules exactes seront du genre (en utilisant la case R3):
    =OU(ET($R$3="0", $Y4<$K4+($R4-$K4)*$N4), ET($R$3<>"0", $Y4<$R4*$N4) → rouge pâle
  5. Le recalcul est bien entendu immédiat, contenu et formatage.

CaseACocher.ods (11.2 KB)

1 Like

Grand merci Steph1 pour ta réponse. Tu es arrivé au but. Ce n’est pas grave que ce soit en deux cellules de la table (Q3 et R3) plutôt qu’une.
Ainsi, cette discussion est close.