Page 2 sur 2

Re: Appendrow qui ne se fait pas

Publié : 31 oct. 2023 18:02
par NC-Ahmet
Dans la logique c'est ça, dans la pratique ton code ne fonctionnera pas ainsi car il faut que tu renseignes ce que tu "push" dans ton tableau et que tu corriges les erreurs de syntaxe.

Mais j'imagine que tu as écrit ça sur ton téléphone, ce qui explique les erreurs 😉

Pour savoir si ça marche il n'y a qu'un seule solution : tester. Je t'inviter à essayer et tu nous diras !

Re: Appendrow qui ne se fait pas

Publié : 31 oct. 2023 21:50
par TheZig
J'ai bien peur malheureusement qu'il n'y ait pas que le smartphone qui soit responsable des erreurs ;-)
j'ai toujours des problèmes avec la syntaxe :car je manque de bases: j'essaie de me cultiver, mais c'est souvent au coup par coup :-((
où puis-je apprendre ça ?

quand à "push" peut-être quelque chose du genre
 tableau.push(paiements[li]) ?

Re: Appendrow qui ne se fait pas

Publié : 03 nov. 2023 14:44
par TheZig
Bonjour,

Pour celles et ceux que ça intéresseraient, voici ma solution, qui n'utilise ni boucle, ni push, mais tout simplement la fonction filter:
(merci à MC_Ahmet pour m'avoir donné le lien de la doc  JavaScript officielle : c'est une mine d'or 😂)

j'ai remplacé cette partie de mon code
// met dans une variable les données source de la ligne li, colonne 1 (A) jusqu'à la colonne 7 (G)
const paiements = FeuillCH.getRange(5,1,nbLignesSource,7).getValues();

// boucle pour parcourir les lignes de la feuille
  for (var li = 5; li <= nbLignesSource; li++)
    {
      cc = formCH_Source.getRange('G'+li).getValue();   // valeur des cases à cocher en col G  
 
      if (cc  == true)
      {

      // insère la ligne li

      listeCH_Cible.appendRow(paiements[li]);
       }
par ceci:
// met dans une variable les données source de la ligne li, colonne 1 (A) jusqu'à la colonne 7 (G)
const paiements = FeuillCH.getRange(5,1,nbLignesSource,7).getValues();

//création d'un nouveau tableau résultant du filtre du premier avec le critère  case  cochée (donc true)
  const paiemtsTrue = paiements.filter(dataRow => dataRow[6] === true);

  const nbLiTrue = paiemtsTrue.length; //nb de lignes du nouveau tableau

 if  (nbLiTrue>0) 
   {
//trouve la première ligne libre de la feuille cible
    const liCible = listeCH_Cible.getLastRow()+1; 

//collage des données de la 1ère col, de la ligne cible, à la dernière ligne de données, colonne G
    listeCH_Cible.getRange(liCible,1,nbLiTrue,7).setValues(paiemtsTrue);
   }