Masquer une ligne en fonction d'un critere
Bonjour à toutes et tous. J'ai un tableau partagé dans google drive assez long en lignes et colonnes. Je voudrais savoir si il existe une formule personnalisée ou autre qui permette de masquer une ligne quand un critère est renseignée. Exemple de mon tableau, quand dans la colonne G il y a OUI. La ligne se masque. Formule personnalisée ou macro avec cerise sur le gâteau un bouton qui puisse masquer ou démasquer.
1 2 9050 2 1 128 3 9050 2 2 130 4 306 3 1
| A | B | C | D | E | F | G | |
| G | B | A | L | TYPE TVX | COUT | TERMINES | |
| OUI | |||||||
| OUI |
Merci de vos réponses
Bonjour,
pour masquer une ligne, c'est assez simple; en revanche, si tu veux ensuite l'afficher c'est plus compliquée car on n'a plus un accès direct à la ligne
il y a en gros 3 solutions
- filtrer sur la colonne G, c'est simple, cela ne nécessite pas de script, et on peut retrouver la ligne masquée en affichant touts les lignes
- masquer automatiquement sur évènement avec la procédure onEdit, pour démasquer c'est un peu moins confortable
- transférer sur un autre onglet automatiquement les lignes cochées "terminées", cela permet de conserver un aperçu de toutes les lignes archivées; c'est le plus intéressant bien que si l'on veut faire des synthèses (un TCD par exemple), il faudra au préalable compiler les onglets
Choisis la solution et mets un lien vers une copie d ton fichier pour y travailler
Un exemple du 3
function transfert(){
var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var r = SpreadsheetApp.getActiveSpreadsheet().getActiveRange();
if (r.getColumn() == 7 && feuille.getName() == 'Actif'){
if(r.getValue() == 'OUI'){
var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archive");
destination.insertRowBefore(2);
var plage = feuille.getRange('A' + r.getRow() + ':G' + r.getRow());
plage.copyTo(destination.getRange('A2'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
Browser.msgBox("Ligne " + r.getRow() + " archivée !");
feuille.deleteRow(r.getRow());
}
}
if (r.getColumn() == 7 && feuille.getName() == 'Archive'){
if(r.getValue() != 'OUI'){
var destination = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Actif");
destination.insertRowBefore(2);
var plage = feuille.getRange('A' + r.getRow() + ':G' + r.getRow());
plage.copyTo(destination.getRange('A4'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
Browser.msgBox("Ligne " + r.getRow() + " ré-activée !");
feuille.deleteRow(r.getRow());
}
}
}Un exemple du 2
function onEdit(event){
var feuille = event.source.getActiveSheet();
var cel = event.source.getActiveRange();
if ((cel.getColumn() == 7) && (feuille.getName().toString() == 'XXXX')){
if (cel.getValue()=='OUI'){
activeSheet.hideRow(cel.getRow());
}
}
}