Page 1 sur 1

Masquer lignes si date en colonne C < date jour

Publié : 18 déc. 2024 09:45
par Thierry64
Bonjour,j'ai récupéré une petite macro afin de masquer/démasquer des lignes via une case à cocher. J'ai testé ça marche très bien sauf que pour l'instant je masque toutes les lignes (1000). Je voudrais masquer uniquement les lignes si la date en colonne B de ma feuille est inférieure à la date du jour et afficher toutes les lignes lorsque je démasque. Ci dessous la macro.Pourriez vous m'aider svp. Merci. Thierry///////////////////////////////////////////////////////////////////////////////////////////////// // Fonction masquer les lignes définies en cochant/décochant une case à cocher.// ///////////////////////////////////////////////////////////////////////////////////////////////// function onEdit(e) { // Masquer/démasquer lignes en fonction de la case à cocher K1. //////// if (e.range.getA1Notation() != "K1") return; if (e.value == "TRUE") { //masquer les lignes à partir de la ligne numéro 2 et les 1000 lignes suivantes. SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().hideRows(2, 1000); } else if (e.value == "FALSE") { //démasquer les lignes à partir de la ligne numéro 2 et les 1000 lignes suivantes. SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().showRows(2, 1000); } }

Re: Masquer lignes si date en colonne C < date jour

Publié : 18 déc. 2024 12:07
par Patrick_Té
Bonjour,

Le script va être beaucoup plus lent :  actuellement tu traites les 999 lignes en une fois  hide/showRows(2,1000)    ; pour tenir compte de la date en colonne B il va falloir faire une boucle et traiter les lignes une à une :

SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().hideRows(2, 1000); 

REMPLACÉ PAR :

const ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ICI NOM DE LA FEUILLE');
let table = ss.getRange(2,2,1000,1).getValues();
for (let i = 2; i < 1000; i++) {
if (table[i-2][0] <new Date()){
ss.hideRows(i,1);
}
}
}