Sélectionner une ligne visible après utilisation d'un filtre

Bonjour,

Après avoir réalisé un filtre sur ma feuille, je voudrais faire une boucle sur les lignes qui ne sont pas masquées par les filtres. Mais je ne sais pas comment faire pour appeler uniquement les lignes visibles dans ma boucle.

Voilà ce que j'ai réalisé:

for ( i = 2; i <= q; i++)  {
 if (sheet1.isRowHiddenByFilter(i))
   {var p = sheet1.getRange(i,k).getValue();
    var r = sheet1.getRange(i,l).getValue();
    var s = p.concat(r);
    }
  }
//q est la dernière ligne de la feuille sheet1

Mais ça ne marche pas parce que

sheet1.isRowHiddenByFilter(i)

ne sélectionne que les lignes masquées par le filtre, et non les lignes visibles, et je ne trouve pas comment inverser la condition.

Quelqu'un aurait-il une idée de solution svp ?

En vous remerciant par avance.

Salut,

La solution est très simple, en JS et donc en GAS, pour inverser une condition il faut ajouter un "!"

donc pour que la condition if ne pass que les lignes visibles, il faut faire :

    if (!sheet1.isRowHiddenByFilter(i)){

"si la ligne i n'est pas masqué, alors : "

2 petits conseils :

  • Utilises des noms de variables qui ont un sens.
  • Attention avec isRowHiddenByFilter() c'est lent car tu es obligé d'itéré sur toute les lignes, il est bien souvent plus optimisé de refaire le filtre dans GAS.

Salut PierreLepinay,

Merci pour les conseils, c'est bien noté.

Je viens d'essayer ta solution:

 if (!sheet1.isRowHiddenByFilter(i)){

mais ça ne fonctionne toujours pas...

Par ailleurs, est-ce que tu pourrais me dire comment refaire le filtre dans GAS stp ?

Merci par avance,

Salut PierreLEpinay,

Finalement ça marche très bien merci.

Rechercher des sujets similaires à "selectionner ligne visible utilisation filtre"