AUTO FILTRER UNE FEUILLE

 Le but est de filtrer la base de données en entrant les noms requis sans avoir à manipuler les conditions manuellement.

Vous avez une feuille de données de ce type :


Pour filtrer, il suffit juste de donner un nom en A1 et/ou en A2

Script :

function onEdit(e) { var col = 1 // colonne où se trouvent les noms var row = 3 // ligne à partir de laquelle se trouve le tableau (en-têtes) var sh = e.source.getActiveSheet() if (sh.getName() != "Sheet1") return; if (e.range.columnStart > col || e.range.columnEnd < col) return; if (e.range.rowStart > row - 1) return; var names = sh.getRange(1, col, row - 1, 1).getValues().flat() var range = sh.getRange(row, col, sh.getLastRow() - row + 1, sh.getLastColumn() - col + 1); var filter = sh.getFilter(); if (filter !== null) filter.remove(); if (countNotOccurrences(names, '') == 0) return; var hiddenNames = range.getValues().slice(1).map(row => row[0]).filter(who => names.indexOf(who) == -1); range.createFilter(); var criteria = SpreadsheetApp.newFilterCriteria().setHiddenValues([...new Set(hiddenNames)]).build(); sh.getFilter().setColumnFilterCriteria(col, criteria); } const countNotOccurrences = (arr, val) => arr.reduce((a, v) => (v !== val ? a + 1 : a), 0);

Commentaires

Posts les plus consultés de ce blog

INSÉRER UN TABLEAU PROVENANT D'UNE FEUILLE DANS UN COURRIEL

NAVIGUER AU SEIN D'UN FICHIER À L'AIDE D'UN MENU DÉROULANT

METTRE À DISPOSITION DES INFORMATIONS SANS ACCÈS AU FICHIER COMPLET