Copie vers autre feuille

Bonjour à tout le monde

J'aimerais copier une feuille google sheet vers une autre feuille google sheet chaque jour à la meme heure et en écrasant les anciennes données

Exemple j'ai 4 feuilles google sheets je souhaiterais copier la troisième feuille vers la première feuille chaque jour à 02 heures du matin et supprimer les anciennes données si il y a su cette première feuille

d''avance merçi à tous

Voici une macro pour copier toutes les lignes de la feuille1 vers la feuille2 à la suite (1ère ligne non vide)

function copie() {
  var feuille1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Feuille1");
  var feuille2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Feuille2");

  var dernierRange1 = feuille1.getLastRow();
  var dernierRange2 = feuille2.getLastRow();

  var range1 = feuille1.getRange(1, 1, dernierRange1, feuille1.getLastColumn());
  var valeursRange1 = range1.getValues();

  var range2 = feuille2.getRange(dernierRange2 + 1, 1, dernierRange1, feuille1.getLastColumn());
  range2.setValues(valeursRange1);

  feuille1.deleteRows(1, dernierRange1);
}

Ensuite il faut faire un déclencheur automatique

image

merçi pour votre aide

je vais tester ça

Bonjour et encore merçi

dans le même ordre des choses, j'aimerais copier une feuille du classeur "pronos_28/11/22, feuille"pronos_gratuits" vers un autre classeur nommé " AppliMobileGlide" ,feuille "PMU" chaque jour à la même heure

d'avance merçi

Jacques

Bonjour

A mettre dans le fichier source ""pronos_28/11/22"

function copie() {
var classeurSource = SpreadsheetApp.getActiveSpreadsheet();
var feuilleSource = classeurSource.getSheetByName("pronos_gratuits");

var classeurCible = SpreadsheetApp.openByUrl("URL_DU_CLASSEUR_CIBLE"); 
var feuilleCible = classeurCible.getSheetByName("PMU");

var dernierRange1 = feuilleSource.getLastRow();
var range1 = feuilleSource.getRange(1, 1, dernierRange1, feuilleSource.getLastColumn());
var valeursRange1 = range1.getValues();
var dernierRange2 = feuilleCible.getLastRow();

var range2 = feuilleCible.getRange(dernierRange2 + 1, 1, dernierRange1, feuilleSource.getLastColumn());
range2.setValues(valeursRange1);

feuilleSource.deleteRows(1, dernierRange1); // Supprime les lignes copiées de la feuille source

}

Attention dans le code bien penser à remplacer "URL_DU_CLASSEUR_CIBLE" par l'URL du classeur cible AppliMobileGlide

Bonjour et Merçi Evolm après je peux mettre un déclencheur pour une heure précise ou il me le fait à chaque changement dans la feuille source?

j'ai supprimé la dernière ligne du code car je ne désire pas effacer les données de la feuille source

merçi

je te tiens au courant si ça fonctionne bien

Re je reviens vers toi

pour te dire que ça fonctionne bien j'ai mis un déclencheur à chaque évènement mais le seul problème, c'est que dans la feuille cible il me copie à la suite au lieu d'écraser les anciennes données

Jacques

function copie() {
  var classeurSource = SpreadsheetApp.getActiveSpreadsheet();
  var feuilleSource = classeurSource.getSheetByName("pronos_gratuits");

  var classeurCible = SpreadsheetApp.openByUrl("URL_DU_CLASSEUR_CIBLE"); 
  var feuilleCible = classeurCible.getSheetByName("PMU");

  var dernierRange1 = feuilleSource.getLastRow();
  var range1 = feuilleSource.getRange(1, 1, dernierRange1, feuilleSource.getLastColumn());
  var valeursRange1 = range1.getValues();
  var dernierRange2 = feuilleCible.getLastRow();

  feuilleCible.deleteRows(1, dernierRange2 - 1);

  var range2 = feuilleCible.getRange(dernierRange2 + 1, 1, dernierRange1, feuilleSource.getLastColumn());
  range2.setValues(valeursRange1);

  feuilleSource.deleteRows(1, dernierRange1); 
}

bon là il ne me copie que la dernière ligne !!!

Pardon, comme je ne peux pas tester la macro, j'ai fait des petites erreurs

function copie() {
  var classeurSource = SpreadsheetApp.getActiveSpreadsheet();
  var feuilleSource = classeurSource.getSheetByName("pronos_gratuits");

  var classeurCible = SpreadsheetApp.openByUrl("URL_DU_CLASSEUR_CIBLE"); 
  var feuilleCible = classeurCible.getSheetByName("PMU");

  var dernierRange1 = feuilleSource.getLastRow();
  var dernierRange2 = feuilleCible.getLastRow();
  var dernierCol = feuilleSource.getLastColumn();

  var range1 = feuilleSource.getRange(1, 1, dernierRange1, dernierCol);
  var valeursRange1 = range1.getValues();

  feuilleCible.clearContents();

  var range2 = feuilleCible.getRange(1, 1, dernierRange1, dernierCol);
  range2.setValues(valeursRange1);

  feuilleSource.clearContents();
}

merçi Evolm

Rechercher des sujets similaires à "copie feuille"