Masquer lignes si date en colonne C < date jour
Masquer lignes si date en colonne C < date jour
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); } }
- Patrick_Té
- Messages : 18
- Inscription : 15 janv. 2023 10:47
- Remercié : 4 fois
Re: Masquer lignes si date en colonne C < date jour
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);
}
}
}
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);
}
}
}
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