[Script] Copier Coller une feuille complète d'un fichier a un autre

Bonjour,

Le script sera lance a partir d'un fichier GS dans le DRIVE.

J'aimerais dupliquer une feuille de mon fichier B:

https://docs.google.com/spreadsheets/d/16SiFv-SRmxkBzen6UdkNI5_f4UEc1UV-ucQ9N07_NXk/edit?usp=sharing

vers mon fichier C juste avant la feuille M:

https://docs.google.com/spreadsheets/d/1jIu5_6kQQtAEhSHWEEuNf3MIbqn0xbf5t69IHhuaa9k/edit?usp=sharing

En gardant le même format et les mêmes formules ainsi que les mêmes valeurs.

En renommant la feuille dans le fichier C a la date J-1.

Si on prend aujourd'hui la feuille sera nommée "21".

nb. il y aura plusieurs date dans le mois (de 1 a 31 par exemple). Il faut toujours copier avant la feuille M.

Merci par avance

Jack

je regarderai quand 80% de tes sujets seront soldés https://forum.excel-pratique.com/membre/92120

il y en a trop "en cours"

C'est soldé.

Tu peux m'aider.

merci

je suis déjà en train d'y réfléchir

je pense qu'il faudra faire un "modèle" au sein du fichier C de destination avec la mise en page et les formules, le recopier sur le même fichier C, puis recopier juste les données de B ensuite

mais comme en plus il y a des formules, les données ne pourront être recopiées qu'en dehors de ces formules ...

bref c'est pas simple mais on va y arriver

bon, plus simple que je ne le pensais

essaie

function recopie() {
  // de B vers C avant fueille M
  var sheet = SpreadsheetApp.openById(getFileId('B')).getSheets()[0];
  var destination = SpreadsheetApp.openById(getFileId('C')); 
  var index = SpreadsheetApp.openById(getFileId('C')).getSheetByName('M').getIndex()
  var copie = sheet.copyTo(destination);
  copie.setName((new Date()).getDate()-1);
  copie.activate();
  destination.moveActiveSheet(index);
}
function getFileId(nomDuFicherRecherche) {
  var files = DriveApp.getFilesByName(nomDuFicherRecherche);
  while (files.hasNext()) {
    var file = files.next();
    return (file.getId())
  }
}

Merci de prendre le temps de m'aider.

Ton aide est précieuse.

on s'est croisé, a priori c'est bon

Bonjour Steelson,

J'ai essaye en debut de mois soit le 01/05/2022 mais quand je lance le script:

function recopie() {
  // de B vers C avant fueille M
  var sheet = SpreadsheetApp.openById(getFileId('B')).getSheets()[0];
  var destination = SpreadsheetApp.openById(getFileId('C')); 
  var index = SpreadsheetApp.openById(getFileId('C')).getSheetByName('M').getIndex()
  var copie = sheet.copyTo(destination);
  copie.setName((new Date()).getDate()-1);
  copie.activate();
  destination.moveActiveSheet(index);
}
function getFileId(nomDuFicherRecherche) {
  var files = DriveApp.getFilesByName(nomDuFicherRecherche);
  while (files.hasNext()) {
    var file = files.next();
    return (file.getId())
  }
}

la copie de la feuille s'appelle "0" au lieu de "30" a cause de cette ligne de code:

copie.setName((new Date()).getDate()-1);

Peut on avoir 30 quand le mois precedent finit par 30 et 31 quand le mois precedent finit par 31?

nb1. je voudrais qu'avec la meme ligne de code ou le meme script je puisse avoir les feuilles 1, 2, 3 .... jusqu'a 30 ou 31 et non 0.

nb2. Ca marche de 1 a 29 et apres ca ecrit 0.

Merci

ok, en fait je ne calcule plus la veille de cette façon, mais plutôt

  var d = new Date();
  var veille = new Date();
  veille.setDate(d.getDate() - 1)
  var d = Utilities.formatDate(veille, Session.getScriptTimeZone(), "yyyy-MM-dd");

donc tu peux remplacer

copie.setName((new Date()).getDate()-1);

par

  var d = new Date();
  var veille = new Date();
  veille.setDate(d.getDate() - 1)
  var d = Utilities.formatDate(veille, Session.getScriptTimeZone(), "dd");
copie.setName(d);

Parfait ca marche.

Rechercher des sujets similaires à "script copier coller feuille complete fichier"