Case à chocher qui décoche d'autres cases

Bonjour,

J'ai déjà solicité l'aide de ce merveilleux forum, et donc je fais encore appel à vous car je n'ai pas les connaissances nécessaires.
J'ai fais quelques recherches mais bien entendu non fructueuses.
On me parle de "bouton-option" mais je ne pense pas que cela réponde à ma demande et je n'ai rien trouvé, ils doivent parler
de la mise en forme conditionnelle qui ne permet que de changer des couleurs ou je ne comprends pas ce dont ils parlent.

J'ai un tableau: https://docs.google.com/spreadsheets/d/11SdB3x50yMpVClugNfluwFofvoeZgpgV3LFnwOGa-Hk/edit?usp=sharing
(tableau d'exemple)(me demander l'accès si besoin est)

61213914 4c13 45c5 aee8 bf5cacfb1ffd

Et donc c'est assez simple, je souhaite la chose suivante:
Si je coche la case
blanche, tout en bas (en dessous de la ligne valeur25), celle de gauche, cela me décoche toutes les autres cases du dessus
(pour la même et unique colonne) et qu'elle se décoche derrière par la même occasion,
et donc idem pour la case blanche tout en bas, mais cette fois ci celle de droite,
pour être plus clair, case C28 et D28.

Cela m'aiderai beaucoup, et je ne pense pas que ce soit un truc de fou, mais cela serait très cool d'utilisation,
et je pourrais utiliser cela dans d'autre page ce qui pourrait être vraiment très sympa
Merci d'avance à la communauté forum.excel-pratique.com

Bonjour,

Voici un rapide script répondant à votre besoin :

function onEdit(e) {
  var range = e.range;
  var sheet = range.getSheet();

  // Liste des cellules à surveiller
  var cellulesASurveiller = ["C28", "D28"];

  if (cellulesASurveiller.includes(range.getA1Notation())) {
    if (range.isChecked()) {
      var checkOff = sheet.getRange(range.getRow() - 25, range.getColumn(), 25, 1);
      checkOff.uncheck();
      range.uncheck();
    }
  }
}

Voici une explication sur son fonctionnement, à chaque modification le script est lancé.

On a une liste de cellule à surveiller, dans votre exemple, C28 et D28 mais il est possible d'en rajouter.

Si la modification à lieu dans les cellules à surveiller et que la modification est de cocher une case alors, décoche les 25 cases au dessus.

Au mon dieu merci! Ca à l'air si simple quand on voit les lignes de codes, mais c'est d'un complexe.

Je pense qu'un jour je finirai par m'y mettre car c'est de la magie pour moi 🔥

En tout cas il marche bien, je t'en remercie beaucoup. Et vive les magiciens de Google Sheet 🐸😘

Ce n'est pas si complexe , voici une explication + détaillée :

function onEdit(e) {

> le nom de la fonction qui se lance à chaque édition du fichier, "e" représente la modification.

var range = e.range;

> on stocke l'endroit où a eu lieu la modification dans une variable appelée "range"

var sheet = range.getSheet();

> on stocke la feuille où à eu lieu la modification dans une variable appelée "sheet"

// Liste des cellules à surveiller
var cellulesASurveiller = ["C28", "D28"];

> on stocke les adresses des cellules à surveiller dans une liste appelée "cellulesASurveiller"

if (cellulesASurveiller.includes(range.getA1Notation())) {

> si le lieu où a eu lieu la modification, donc range (au format A1, A2, etc.) est contenue dans la liste cellulesASurveiller alors on exécute ce qui est noté ci-dessous, sinon rien ne se passe

if (range.isChecked()) {

> si le lieu de la modification est une case cochée alors on exécute ce qui est noté ci-dessous, sinon rien ne se passe

var checkOff = sheet.getRange(range.getRow() - 25, range.getColumn(), 25, 1);

> on créer une plage, issue de la feuille où a eu lieu le modification et ayant pour adresse qui débute 25 lignes avant la case cochée, à la même colonne, qui fait 25 lignes de hauteur et une seule colonne de largeur.

checkOff.uncheck();

> on décoche toutes les cases de la plage checkOff

range.uncheck();}}}

> on décoche la cellule cochée.

J'ai carrément le droit à un cours très détaillés gratuitement 🐸🐸🐸

Bon bin dès que j'ai un peu de temps, je me penche sur ton explication.
Même si je ne pense pas tout saisir à 100%, mais ton travail ne sera pas inutile, je vais m'y mettre, les tableurs c'est un bon moyen de se mettre
à la programmation d'autant plus que c'est super utile pour tellement de chose, surtout pour moi gamer qui aime bien avoir des databases.

Merci encore pour la qualité de tes réponses. Encore un noobie sauvé!

Je me suis fait un exercice qui peut d'ailleurs s'avérer utile, je pense ne pas être loin d'avoir réussi mais il semblerait quelle a un problème

function onEdit(e) {
  var range = e.range;
  var sheet = range.getSheet();

  // Liste des cellules à surveiller
  var cellulesASurveiller = ["C28", "D28"];

  if (cellulesASurveiller.includes(range.getA1Notation())) {
    if (range.isChecked()) {
      var checkOff = sheet.getRange(range.getRow() - 25, range.getColumn(), 25, 1);
      checkOff.uncheck();
      range.uncheck();
    }
  }
    // Liste des cellules à surveiller 2
  var cellulesASurveiller2 = ["C3", "C4", "C5", "C6","C7", "C8","C9", "C10", "C11", "C12", "C13", "C14", "C15", "C16", "C17", "C18", "C19", "C20", "C21", "C22", "C23", "C24", "C25", "C26", "C27"];

  if (cellulesASurveiller2.includes(range.getA1Notation())) {
    if (range.isChecked()) {
      var checkOn = sheet.getRange(range.getRow() 0, range.getColumn(), 1, 2);
      checkOn.check();
      range.check();
    }
  }
}

Le problème semble venir d'ici:

var checkOn = sheet.getRange(range.getRow() 0

Il semblerait que je n'ai pas le droit de faire 0, je peux faire -1 ou +1 mais pas 0.
Le but du script/de l'opération est que si je check C3 par exemple, ca me Check D3
Là aussi ca parait simple, je pensais qu'en modifiant le joli script que tu m'a fais j'y arriverai,
mais même ça, j'ai pas réussi.
Quelque chose m'échappe assurément 🤔

Merci encore si tu prendre la peine de poursuivre ce petit cours ^^

Bonjour,

Il y a 2 manière de définir une plage dans Apps Script, comme sur Sheets :

A21 , B2:B20 par exemple

ou bien en indiquant les numéros de lignes colonne, l'ordre est le suivant : numéro de ligne, numéro de colonne, nombre de lignes, nombre de colonne.

Voici ce que ça donne avec mon exemple précédent :

A21 = 21,1

B2:B20 = 2,1,18,1

Donc, dans le script initial :

var checkOff = sheet.getRange(range.getRow() - 25, range.getColumn(), 25, 1);

on définie la variable checkOff qui est une plage, sur la feuille sheet (donc la feuille active) qui débute au lieu de la modification -25 ligne, à la colonne où a eu lieu la modification, qui fait 25 lignes de haut et 1 colonne de large.

Ainsi, tu ne peux pas mettre range.getRow() 0 à la limite tu peux faire range.getRow() +0 ou range.getRow() -0

Mais tu peux aussi laisser : var checkOn = sheet.getRange(range.getRow(), range.getColumn(), 1, 2);

Cela signifie que la plage checkOn, débute à la cellule de la modification, la colonne de la modification, fait une ligne de haut et 2 colonne de large, en gros, si la modif a lieu en C4, la plage checkOn sera sur C4:D4

EDIT : si tu veux check faire un offset de +1 à droite fait comme ceci :

var checkOn = sheet.getRange(range.getRow(), range.getColumn()+1, 1, 1);

Ca marche nickel chrome! 🥰

Bon, il va falloir que je relise plusieurs fois tout ce que tu m'a dis pour bien assimiler parce que même un ami à moi
qui est programmeur et qui m'a dit "c'est du javascript" "ah bin c'est facile"
il a commencer à lire ton code et tes explications "ah nan finalement il est fort PierreLepinay" 🤭

Comme quoi, ces 2 petites fonctionnalités n'ont l'air de rien, mais sont bien magique pour certains.

Merci encore et encore 🐸😘

D'ailleurs, en parlant de Javascript, et peut être que tu ne connais pas le youtubeur sysAdmin qui s'appelle Cocadmin,
un français parti au Quebec, mais je pense que cette vidéo te fera un peu rigoler (enfin j'espère)(c'était ma petite contribution
pour t'offrir un petit cadeau qui pourrait te faire plaisir) 😘

Je ne peux pas link la vidéo alors il faudra taper : "Ce langage me donne envie de vomir ! - Histoire de Javascript" (de Cocadmin)

Salut,

Alors Google Apps Script est en effet un dérivé de javascript

Il y a toutefois d'importantes différences, mais la logique reste similaire, si jamais tu souhaites t'y pencher, un cours gratuit est disponible ici même :

https://www.sheets-pratique.com/fr/apps-script/introduction

PS : j'irai jeter un coup d’œil à ta vidéo

J'irai regarder 😏

D'ailleurs je t'ai conseillé cette vidéo de Cocadmin, mais je te conseille toutes ses vidéos, il y a beaucoup de choses intéressantes sur la programmation.
Alors certes il fait de la vulgarisation pour les newbies, mais je pense que même pour les personnes qui sont d'un niveau élevé, ses vidéos restent intéressantes avec un peu d'humour ici et là 😎

Rechercher des sujets similaires à "case chocher qui decoche cases"