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);
}