Bonjour,
Voici un code fonctionnel :
function transfert() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const activSheet = ss.getSheetByName("Actif");
const archivSheet = ss.getSheetByName("Archive");
var activData = activSheet.getDataRange().getValues();
var archivData = archivSheet.getDataRange().getValues();
const nbLigneEnTete = 1;
for (var i = activData.length - nbLigneEnTete; i >= 0; i--) {
if (activData[i][6] === 'OUI') {
archivSheet.appendRow(activData[i]);
activSheet.deleteRow(i + 1);}}
for (var j = archivData.length - nbLigneEnTete; j >= 0; j--) {
if (archivData[j][6] === 'NON') {
activSheet.appendRow(archivData[j]);
archivSheet.deleteRow(j + 1);}}
}
Voici l'explicaiton étape par étape
1- on déclare les variables, constantes :
Le fichier et les 2 feuilles
const ss = SpreadsheetApp.getActiveSpreadsheet();
const activSheet = ss.getSheetByName("Actif");
const archivSheet = ss.getSheetByName("Archive")
Les 2 plages de données et le nombre de lignes d'en tête :
var activData = activSheet.getDataRange().getValues();
var archivData = archivSheet.getDataRange().getValues();
const nbLigneEnTete = 1;
2- Première boucle, qui dure le nombre de données présente dans la feuille active - ligne d'en-tête
for (var i = activData.length - nbLigneEnTete; i >= 0; i--) {
on vérifie si en position 6 il est indiqué OUI (c'est en colonne 7, mais on commence à 0)
if (activData[i][6] === 'OUI') {
Si oui, on insere dans la feuille archive la ligne, puis, on la supprime de la feuille active :
archivSheet.appendRow(activData[i]);
activSheet.deleteRow(i + 1);}}
3- IDEM dans la feuille archive mais avec NON et les feuilles inversées :
for (var j = archivData.length - nbLigneEnTete; j >= 0; j--) {
if (archivData[j][6] === 'NON') {
activSheet.appendRow(archivData[j]);
archivSheet.deleteRow(j + 1);}}