Création d'une macro

Bonjour,

J'ai crée une macro (en suivant les étapes sur une vidéo sur youtube), elle fonctionne bien quand je la lance depuis Extensions-Macros, mais ne fonctionne pas quand je la lance depuis le bouton.

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

Merci pour votre aide les amis :)

Bonjour,

Pouvez-vous copier / coller le script ici ? (il faut aller dans Extensions > Apps script)

il y a 859 lignes dedans..., j'ai fait plusieurs essais et j'ai comme l'impression qu'ils sont tous enregistrés

J'avoue que je n'y comprends rien du tout :(

D'accord

Quand vous lancez la macro (qui fonctionne) elle a un nom, vous devez pouvoir retrouver ce nom parmi les 859 lignes :

ex : macro "jesuislamacro"

function jesuislamacro () {
...
}

Sinon, expliquez ce que fait cette macro ?

@PierreLepinay

J'explique :

sur une feuille de googlesheet (que j'ai partagé), il y a un formulaire avec un bouton save.
Quand le formulaire est rempli et que tu appuies sur le bouton, les données du formulaire sont saisies sur un tableau qui est sur une autre feuille, pour permettre une autre saisie sur le formualire, le tout est "stocké" dans la tableau.

La macro est très simple, je ne saurai pas de toutes les manières faire une compliquée :D !, du copier coller

Le souci : La macro s'exécute, cad que les données sont copiées sur le tableau quand je le fais directement depuis Extensions-Macro, mais me sort un message "Exception : arguement non valide" quand je le fais depuis le bouton

La fonction.

function SAVE() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('B18:C18').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('2:2').activate(); spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1); spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B3').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('A2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B4').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('B2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B5').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('C2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B6').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('D2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B7').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('E2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B7').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B8').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('F2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B8').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B9').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('G2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B11:C11').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('H2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B11:C11').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B12:C12').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('I2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B12:C12').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B13:C13').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('J2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B13:C13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B14:C14').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('K2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B14:C14').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true); spreadsheet.getRange('B15:C15').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RECAP BRIEFE'), true); spreadsheet.getRange('L2').activate(); spreadsheet.getRange('\'CREER UN BRIEFE\'!B15:C15').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('CREER UN BRIEFE'), true);};

Bonjour,

Voici un script fonctionnel, copiez-le et attribuez-le à votre bouton :

function save() {
  // Récupérer la feuille active
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // Récupérer les feuilles par leur nom
  const feuille_creation = ss.getSheetByName('Créer un briefe'); // Vérifiez le nom de votre feuille
  const feuille_recap = ss.getSheetByName('Récap briefe'); // Vérifiez le nom de votre feuille

  let data = feuille_creation.getRange('C4:C20').getValues();
  data.splice(7,1)
  let nbData = 0;
  for (let i = 0; i < data.length; i++) {
    if (data[i][0] !== "" && data[i][0].length > 0) {
      nbData++;}}
  if (nbData > 0){ // il est aussi possible de rendre des champs obligatoire.
    feuille_creation.getRange('C4:C20').clearContent();
    let transposedData = transposeArray(data);
    feuille_recap.insertRowAfter(1);
    feuille_recap.getRange(2, 1, 1, transposedData[0].length).setValues(transposedData);
  }
  else {SpreadsheetApp.getUi().alert("Le formulaire n'est pas complet.")}
}

function transposeArray(array) {
  return array[0].map(function(col, i) { 
    return array.map(function(row) { 
      return row[i]; 
    });
  });
}
Rechercher des sujets similaires à "creation macro"