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.
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é