script très lent
Publié : 30 oct. 2023 23:06
Bonjour,
J'ai 2 onglets: un appelé Donnees, et un autre appelé CH qui contient un query de la feuille Données ce qui donne une liste sur laquelle je rajoute une case à cocher à chaque bout de ligne.
Voici la macro que j'ai écrite:
J'ai 2 onglets: un appelé Donnees, et un autre appelé CH qui contient un query de la feuille Données ce qui donne une liste sur laquelle je rajoute une case à cocher à chaque bout de ligne.
Voici la macro que j'ai écrite:
Le traitement est très lent, y aurait-il moyen de modifier le code pour le rendre plus rapide ?function majCH() {
const LastRow = FeuillCH.getLastRow(); // on trouve la dernière ligne
const cellDateEch = FeuillCH.getRange("E2").getValues();
for (li=5; li<=LastRow; li++) //parcours des lignes 5 à dernière non vide
{
let idAdherent = FeuillCH.getRange('A'+li).getValue();
const numeroLigne = trouverAdherentParSonId(idAdherent);
Logger.log('numeroLigne: '+numeroLigne)
if (numeroLigne > 0)
//si on trouve l'adhérent
{
//on va chercher la valeur de la case sur la ligne col G
let rapproch = FeuillCH.getRange('G'+li).getValue();
if (rapproch == true)
// si la case est sur True
{
//on va dans la feuille Données sur la cellule de la colonne qui est indiquée en E2 sur CH (ex:Z pour Ech1)
cellCol = FeuilleDonnees.getRange(cellDateEch+numeroLigne);
//on y insère la date du jour
cellCol.setValue(new Date());
FeuilleDonnees.getRange('AL' +numeroLigne).setValue(new Date()); //on ajoute la date du jour de modif
FeuillCH.deleteRow(li); // on supprime toute la ligne traitée, mais en fait on ne supprime réellement que la case puisque la liste est issue d'un query
}
}
}