Masquer colonnes grâce case à cocher

Bonjour,

Je suis une débutante sur Google sheet voir dans les macros je débute.

Je fais un calendrier mais j'aimerais masqué les mois (colonnes dédiées) pour avoir que les mois qui m'intéresse.

Quand la case à cocher est "Faux" le mois est masqué.

Je créé un script qui est une boucle qui lit la valeur de la colonne E si la valeur est vrai ou faux.

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("E5:E16");
  var values = range.getValues();

  for (var i = 0; i < values.length; i++) {
   // Browser.msgBox(values[i][0]);

       if (values[i][0] === "Vrai") {
         sheet.showColumns(7,5); //Janvier
     //break;
    } else
    {
       sheet.hideColumns(7,5);
    }

       if (values[i][0] === "Vrai") {
         sheet.showColumns(13,5); //Février
     // break;
    } else
    {
       sheet.hideColumns(13,5);
    }

 /* //  if (sheet.getRange('E7').activate()){
       if (values[i][0] === "Vrai") {
         sheet.showColumns(19,5); // Mars
     // break;
    } else
    {
       sheet.hideColumns(19,5);
    }
   // }

   // if (sheet.getRange('E8').activate()){
       if (values[i][0] === "Vrai") {
         sheet.showColumns(25,5); //Avril
     // break;
    } else
    {
       sheet.hideColumns(25,5);
    }

      if (values[i][0] === "Vrai") {
         sheet.showColumns(31,5); //Mai
     // break;
    } else
    {
       sheet.hideColumns(31,5);
    }

      if (values[i][0] === "Vrai") {
         sheet.showColumns(37,5); //Juin
     // break;
    } else
    {
       sheet.hideColumns(37,5);
    }

      if (values[i][0] === "Vrai") {
         sheet.showColumns(43,5); //Juillet
     // break;
    } else
    {
       sheet.hideColumns(43,5);
    }
     if (values[i][0] === "Vrai") {
         sheet.showColumns(49,5); //Aout
     // break;
    } else
    {
       sheet.hideColumns(49,5);
    }
     if (values[i][0] === "Vrai") {
         sheet.showColumns(55,5); //Septembre
     // break;
    } else
    {
       sheet.hideColumns(55,5);
    }

     if (values[i][0] === "Vrai") {
         sheet.showColumns(61,5); //Octobre
     // break;
    } else
    {
       sheet.hideColumns(61,5);
    }
     if (values[i][0] === "Vrai") {
         sheet.showColumns(67,5); //Novembre
     // break;
    } else
    {
       sheet.hideColumns(67,5);
    }
     if (values[i][0] === "Vrai") {
         sheet.showColumns(73,5); //Decembre
     // break;
    } else
    {
       sheet.hideColumns(73,5);
    }
 //   }
  }
}

Le souci c'est que la boucle lis i en une fois et pas à chaque case.

A la fin de ma boucle le résultat prend la case du décembre pour tous les "if". Sauf que moi je cherche à lire chaque ligne de la colonne E.

capture d ecran 2023 04 28 143424

Je ne sais pas si je suis claire mais je sais que ma boucle est fausse et je n'arrive pas à faire que i = i+1 = une case.

Dès que je coche une case de la colonne E, le mois apparait.

Merci de votre attention

Bonjour,

Solution, pour les 6 premiers mois, il vous faut changer la range + dans la liste des mois ajouter les 6 derniers mois :

function onEdit() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("E5:E10");
  var values = range.getValues();
  var mois = [['janvier',7,5],['fevrier',13,5],['mars',19,5],['avril',25,5],['mai',31,5],['juin',37,5]];
  for (var i=0; i<values.length;i++) {
    if (values[i][0]==true){sheet.showColumns(mois[i][1],mois[i][2])}
    else {sheet.hideColumns(mois[i][1],mois[i][2])}
  }
}

+ Le fait d'avoir une fonction onEdit fait qu'à n'importe quelle modif elle s'active, si j'étais vous je mettrai un bouton sous les mois "actualiser" qui lancerai le script sur commande.

Bonjour,

Merci pour votre réponse très rapide.

Votre script fonctionne merci.

Je comprends votre conseil, je l'avais pensé mais malheureusement sur ma demande ils veulent instantané ....
Rechercher des sujets similaires à "masquer colonnes case cocher"