c'est surtout gourmand en ressource et lent, honnêtement je ne me sers que très peu de isRowHiddenByFilter() en gros, tu passes ton numéro de ligne et ça te renvoi un bool true/false, donc, on est obligé d'itérer dessus, que ce soit avec une boucle for, while ou un forEach.
Pour rendre plus rapide, le plus simple est de juste filtrer dans le script, et pas se servir du script pour insérer une formule de filtre.
Mais si tu veux continuer avec la logique actuelle, tu peux aussi tester les éléments dans ta colonne C et déduire ce nombre de lastrow :
var dataColEnvement = sheet1.getRange(2,c,lastRow,1).getValues();
var countRow = 0;
dataColEnvement.forEach(function(item) {
if (item[0] === 'Achat' || item[0] === 'Sevrage') {
nbLcountRowigne++;
}
});
var countHiddenRows = a - countRow