Problème pour cacher des colonnes

Bonjour, voici mon script dans la cellule C3 il y a le mois en chiffre ex: 1 pour janvier tout fonctionne sauf pour le mois de janvier. les colonne ne s'affiche pas :

function joursDansMois(mois) {
  var date = new Date(new Date().getFullYear(), mois, 0); 
  return date.getDate();
}

function masquerColonnes() {
  var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cellule = feuille.getRange('C3');

  if (feuille.getName() == 'Planning' && cellule.getValue() != "") {
    var mois = cellule.getValue();
    var totalColonnesAMasquer = 0;

    // Additionner les mois précédents au mois actuel
    for (var i = 1; i < mois; i++) { 
      totalColonnesAMasquer += joursDansMois(i) * 2; // Chaque jour équivaut à deux colonnes
    }
    if (totalColonnesAMasquer > 0) {
      feuille.unhideColumn(feuille.getRange('D4:ADW4'));
      feuille.hideColumns(4, totalColonnesAMasquer);
    }
  }
}

Vous pouvez me dire ou est l'erreur ? merci d'avance

Bonjour, dans les scripts le mois de Janvier= 0, Février= 1 etc.

mets un 0 dans cette ligne à la place du 1

for (var i = 0; i < mois; i++)

Bonjour, j'avais déjà essayé, ça fonctionne pas, ça me décale d'un mois alors que le script que j'ai mis fonctionne pour touts les mois sauf janvier

image

voici le fichier : https://docs.google.com/spreadsheets/d/1HjF7smhdd1NHeoNlBlssZtCiGQX_JJBlIg3vfQ30K2M/edit?usp=sharing

Bonjour,

Plutôt inf ou égal tel que :

for (var i = 1; i <= mois; i++) {

Je vais regarder ça.

ça fonctionne avec

for (var i = 1; i <= mois; i++) {

@Smaily avait la bonne formule.

Désolé mais pas chez moi pourquoi ça décale d'un mois

Bonjour,

Voici un script qui :

- masque la colonne et colonne +1 des dates des mois + années passés.

en fonction de l'année en B2 du mois en C3 et des dates ligne 5.

function masquerColonnes() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Planning');
  const referenceMonth = sheet.getRange('C3').getValue();
  const referenceYear = sheet.getRange('B2').getValue();
  const dateRange = sheet.getRange(5, 4, 1, sheet.getLastColumn() - 5);
  const dateValues = dateRange.getValues()[0];
  let colToHide = [];
  for (let i = 0; i < dateValues.length; i += 2) { 
    const cellDate = new Date(dateValues[i]);
    const cellMonth = cellDate.getMonth() + 1;
    const cellYear = cellDate.getFullYear();
    if (cellYear === referenceYear && cellMonth < referenceMonth) {
      colToHide.push(4 + i); 
      colToHide.push(4 + i + 1);
    }
  }

  if (colToHide.length > 0) {
    sheet.unhideColumn(sheet.getRange('D4:ADW4'));
    sheet.hideColumns(colToHide[0], colToHide.length);
  }
}

bonjour, super merci mais ça fonctionne pas pour le mois de janvier

Bonjour à tous, j'ai réadapté le script.

Je t'ai ajouté dans la barre de menu un "Menu Personnalisé" afin que tu puisse te balader de mois en mois.

https://docs.google.com/spreadsheets/d/14OSb-hImeFr6WnmH9ihkPLEA02FTHJi47zjNeGcCzuc/edit#gid=3041336

Bonjour, Alexander

Super merci ça fonctionne

Pas de souci, c'est un plaisir !

bonjour, pour continuer mon projet j'aimerais pouvoir répéter des jours saisie voici le script et ça fonctionne pas :

function repeteDates(planning, ligne, colonne, motif, debut, fin, frequence) {
 var currentDate = new Date(debut);
 var endDate = new Date(fin);
 var intervalle = { '1W': 7, '2W': 14, '3W': 21, '4W': 28 }; 
 var jours = intervalle[frequence];
 while (currentDate <= endDate) {
   planning.getRange(ligne, colonne).setValue(motif);
   currentDate.setDate(currentDate.getDate() + jours);

voici le fichier sheet https://docs.google.com/spreadsheets/d/14OSb-hImeFr6WnmH9ihkPLEA02FTHJi47zjNeGcCzuc/edit#gid=3041336

c'est celui que tu as déjà modifier avec le nouveau code, merci d'avance

Bonjour, j'ai modifié le script.

function repeteDates(planning, ligne, colonne, motif, debut, fin, frequence) {
 var currentDate = new Date(debut);
 var endDate = new Date(fin);
 var intervalle = { '1W': 7, '2W': 14, '3W': 21, '4W': 28 }; 
 var jours = intervalle[frequence];
 while (currentDate <= endDate) {
   planning.getRange(ligne, colonne).setValue(motif);
   currentDate.setDate(currentDate.getDate() + jours);

Bonjour, où ça pour les mois décalées super ça fonctionne mais là c'est pour répéter des jours saisie dans le formulaire voici le script et ça fonctionne pas :

Rechercher des sujets similaires à "probleme cacher colonnes"