Copie de cellule dans une ligne inséré

Bonsoir,

Débutant tout juste sur Sheets, je n’utilise que de l'enregistreur de script pour réaliser mes "macros".

À l'aide de celui-ci, je voudrais insérer une ligne au dessus de la ligne numéro 2 de la page "BASE".

Une fois ceci fait, j'aimerai copier certaines cellules de la feuille SAISIE dans la ligne et insérer les formules des cellules déjà existantes sur la ligne supérieur.

Voici le code enregistré :

function TEST() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B6:C6').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('BASE'), true);
  spreadsheet.getRange('2:2').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('J2').activate();
  spreadsheet.getRange('SAISIE!B6:C6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('SAISIE'), true);
  spreadsheet.getRange('A6').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('BASE'), true);
  spreadsheet.getRange('F2').activate();
  spreadsheet.getRange('SAISIE!A6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('L2').activate();
  spreadsheet.getRange('G2').activate();
  spreadsheet.getRange('G3:I3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getRange('B2').activate();
  spreadsheet.getRange('B3:E3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getRange('A2').activate();
  spreadsheet.getCurrentCell().setFormula('=SI(A1="";""; SI(A1="INDEX";NB(A2:A);A1-1))');
  spreadsheet.getRange('A3:A717').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getActiveRange().setFormula('=IF(A2="";""; IF(A2="INDEX";COUNT(A3:A);A2-1))');
  spreadsheet.getRange('A3:A717').activate();
  spreadsheet.getRange('A3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('SAISIE'), true);
  spreadsheet.getRange('C6').activate();
};

En vous remerciant par avance

Salut quenmar et

et c'est quoi le problème? le script ne fonctionne pas? si oui qu'est ce qui fonctionne pas exactement?

Bonne nuit

Bonjour m3ellem1,

Le script n’exécutait pas l'entièreté de mon enregistrement car je n'avais pas réalisé l'entièreté de ma demande.....

Maintenant ma seule problématique c'est d'exécuter le script sans voir les changements, je m'explique :

Il me semble que l'équivalent de ma demande en VBA est : application.screenupdating

Est-ce que cette commande ou son équivalente existe sur un script ?

Merci

Autant pour moi, le résultat de la ligne :

spreadsheet.getCurrentCell().setFormula('=SI(A1="";"";SI(A1="INDEX";NB(A2:A);A1-1))');

Le résultat de la ligne A2 est : #NOM?. L'erreur : Fonction inconnue : SI.

Salut quenmar,

remplace cette ligne

spreadsheet.getCurrentCell().setFormula('=SI(A1="";"";SI(A1="INDEX";NB(A2:A);A1-1))');

avec celle-là

spreadsheet.getActiveRange().setFormula('=IF(A1="";""; IF(A1="INDEX";COUNT(A2:A);A1-1))');

Bonne nuit

m3ellem1,

Effectivement cela a fonctionné je te remercie !

Comment puis-je faire en sorte que la macro se déroule sans l'affichage des événements ?

merci d'avance

Comment puis-je faire en sorte que la macro se déroule sans l'affichage des événements ?

No

Et il n'y a pas sinon la possibilité d'une utilisation de la fonction with ?

Rechercher des sujets similaires à "copie ligne insere"