re SouVB,
Difficile d'expliquer quand on a des lacunes en formule comme moi
Dans cette ligne,
x = Filter(Evaluate("transpose(if(" & .Columns(3).Address & ">18,row(1:" & .Rows.Count & "),char(2)))"), Chr(2), 0)
on retrouve le test suivant
if(" & .Columns(3).Address & ">18
qui renvoie le n° de ligne si vrai
row(1:" & .Rows.Count & ")
et le caractère suivant si faux
char(2)
Sur la base de l'exemple précédent, on peut ainsi cumuler 2 conditions :
x = Filter(Evaluate("transpose(if((" & .Columns(3).Address & ">18)*(" & .Columns(3).Address & "<50),row(1:" & .Rows.Count & "),char(2)))"), Chr(2), 0)
Pour le fun, on pourrait aussi affecter x comme ceci, on renvoie si vrai la valeur des cellules et non plus le n° de ligne.
x = Filter(Evaluate("transpose(if(" & .Columns(3).Address & ">18," & .Columns(3).Address & ",char(2)))"), Chr(2), 0)
Pour filtrer à l'aide d'une formule plus complexe, appelle un formuliste
klin89