Filtrer une colonne sur plusieurs critères

Bonjour,

Est-il possible de filtrer une colonne dans App script sur plusieurs critères svp ?

Pour filtrer une colonne sur un critère, j'applique ce code qui marche bien.

let filter = range.createFilter().setColumnFilterCriteria(c, critere1,)

Mais pour le coup, j'ai deux critères à appliquer dans la colonne.

J'ai essayé ceci:

let filter = range.createFilter().setColumnFilterCriteria(c, critere1, critere2,)

ou encore:

let filter = range.createFilter().setColumnFilterCriteria(c, critere1,).setColumnFilterCriteria(c, critere2,);

mais les 2 codes ne fonctionnent pas

quelqu'un aurait-il une idée de comment faire svp ?

Merci,

Bonjour,

Je n'ai pas l'impression que tu puisses utiliser 2 critères de même type ...

Par contre tu peux utiliser une formule, et dans une formule tu peux ajouter plusieurs critères, par exemple :

.whenFormulaSatisfied('=OR(LEFT(A2)="R";LEFT(A2)="V")')

Bonjour,

Une alternative serait de filtrer les données directement dans le script, plutôt que d'insérer un filtre dans la page.

Bonjour,

Merci pour vos propositions.

@Sébastien, pourrais-tu m'éclairer plus sur l'utilisation de ta formule avec la méthode Filter stp ?

voici mon script en plus détaillé:

var sheet1 = SpreadsheetApp.getActive().getSheetByName("sheet1");
var a = sheet1.getLastRow();
var b = sheet1.getLastColumn();
const monTableau = sheet1.getRange(1, 1, 1, b).getValues()[0];
const c = monTableau.indexOf('Evênement')+1;
const j = monTableau.indexOf('Sexe')+1;
var range =sheet1.getRange(1,1,a,b)
let critere1 = SpreadsheetApp.newFilterCriteria()
                             .whenTextEqualTo("Achat")
                             .build();
let critere2 = SpreadsheetApp.newFilterCriteria()
                             .whenTextEqualTo("Vente")
                             .build();
let filter = range.createFilter().setColumnFilterCriteria(c,critere1,critere2);

Merci d'avance,

@Sébastien, pourrais-tu m'éclairer plus sur l'utilisation de ta formule avec la méthode Filter stp ?

Remplace dans un critère :

.whenTextEqualTo("Achat")

Par :

.whenFormulaSatisfied('=OR(A2="Achat";A2="Vente")')

Bonjour à tous,

Merci Sébastien, ta formule

.whenFormulaSatisfied('=OR(A2="Achat";A2="Vente")')

fonctionne bien, mais y'a t'il moyen d'y remplacer la référence des cellules A2 par une référence dynamique ? car la cellule exploitée varie lors de l'exécution du code.

j'ai essayé

.whenFormulaSatisfied('=OR(sheet1.getRange(2, c).getValues()="Achat Porcs";sheet1.getRange(2, c).getValues()="Sevrage Porcs")')
//(c renvoie le numéro de la colonne à filtrer)

Mais n'a pas marché.

mais y'a t'il moyen d'y remplacer la référence des cellules A2 par une référence dynamique ?

Si c contient la lettre de la colonne, tu peux essayer ça :

.whenFormulaSatisfied('=OR(' + c + '2="Achat";' + c + '2="Vente")')

Bonjour à tous

Nickel Sébastien ta formule marche

En l'appliquant à mon contexte ça donne:

.whenFormulaSatisfied('=OR('+z+'="Achat";'+z+' ="Vente")')

avec:

z = sheet1.getRange(2,c).getA1Notation()

Merci beaucoup,

Rechercher des sujets similaires à "filtrer colonne criteres"