Masquer lignes si date en colonne C < date jour

Avatar de l’utilisateur
Thierry64

Membre tout neuf
Messages : 1
Inscription : 18 déc. 2024 09:43

Masquer lignes si date en colonne C < date jour

Message 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); } }
Avatar de l’utilisateur
Patrick_Té
Messages : 18
Inscription : 15 janv. 2023 10:47
Remercié : 4 fois

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

Message 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);
}
}
}
Répondre

Rejoignez la discussion 💬

Vous devez être enregistré pour participer à la discussion et échanger avec les différents membres

Inscrivez-vous dès aujourd'hui

Vous n'êtes pas encore membre ? Rejoignez-nous gratuitement dès aujourd'hui et contribuer en postant votre réponse ou question sur tous les forums disponibles

Inscription

Connectez-vous