Copier des cellules vers une autre feuille de manière incrémentée

Bonjour,

Je suis débutant je souhaiterais créer une macro qui récupère les données d'une feuille mise à jour quotidiennement pour alimenter une seconde feuille en ajoutant ces données sur une nouvelle ligne pour chaque jour.

J'ai crée cette macro qui récupère correctement les données et les recopie dans la seconde feuille mais comment intégrer l'incrémentation ?

/** @OnlyCurrentDoc */

function Macrosanstitretest() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B2:C2').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Suivi_cours'), true);
  spreadsheet.getRange('A1').activate();
  spreadsheet.getRange('Fixing!B2:C2').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C4').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Suivi_cours'), true);
  spreadsheet.getRange('B1').activate();
  spreadsheet.getRange('Fixing!C4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C6').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Suivi_cours'), true);
  spreadsheet.getRange('C1').activate();
  spreadsheet.getRange('Fixing!C6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C8').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Suivi_cours'), true);
  spreadsheet.getRange('D1').activate();
  spreadsheet.getRange('Fixing!C8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('C10').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Suivi_cours'), true);
  spreadsheet.getRange('E1').activate();
  spreadsheet.getRange('Fixing!C10').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, true);
};
image

(Sur la ligne 2 il faudrait que les infos de la journée suivante apparaissent et ainsi de suite.

En vous remerciant par avance de votre aide.

Bonjour,

peux-tu mettre un lien vers un fichier anonymisé ? cela permettrait de mieux s'y retrouver ... merci

pour pratager https://www.sheets-pratique.com/fr/cours/partage

ou alors donner plus clairement

  • feuille origine des données
  • liste des cases origine
  • feuille destination des données
  • liste des cases de destination

parce que on s'y perd dans ton code (dont il faudra supprimer tous les activate() inutiles)

une version plus courte

à noter que j'utilise

var ligneVide = dest.getLastRow()+1

pour connaître la première ligne vide

function reporter(){
  var dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Suivi_val')
  var source = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('fix_test')
  var cells = ['B2','C4','C6','C8','C10']
  var data = source.getRangeList(cells).getRanges().map(range => range.getValues()).flat();
  var ligneVide = dest.getLastRow()+1
  data.forEach((v,i) => dest.getRange(ligneVide,i+1).setValue(v) )
}

C'est parfait. Merci beaucoup pour votre aide.

Rechercher des sujets similaires à "copier feuille maniere incrementee"