Masquer l'exécution d'une macro sous google Sheet

Bonjour,

Je suis bloqué sur ma macro, j'aimerais que lorsqu'elle s'exécute on ne voit pas tout ce qui se passe.

Avec Excel voici ce que j'utilise mais je ne trouve pas l'équivalence sur sheet :

Application.ScreenUpdating = False

'ici ma macro

Application.ScreenUpdating = True

Si besoin voici mon script :

image

Merci d'avance pour votre aide

Bonjour,

C'est à dire ne pas voir ce qui se passe ? Qu'est ce qu'il faut cacher ?

L'objectif est de masquer les opérations, notamment avec mes onglets Data qui sont de base masqué

Bonjour,

C'est dû aux multiples .activate

Pouvez-vous copier / coller votre script ici de manière lisible ? (pas une capture) je vais reformuler votre script pour qu'il s’exécute sans activer la moindre cellule.

Voici :

function Valider1() {

var spreadsheet = SpreadsheetApp.getActive();

spreadsheet.getRange('D5').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data S'), true);

spreadsheet.getRange('A1').activate();

spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).offset(1,0).activate();

spreadsheet.getRange('Formulaire!D5').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Formulaire'), true);

spreadsheet.getRange('D7').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data S'), true);

spreadsheet.getRange('B1').activate();

spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).offset(1,0).activate();

spreadsheet.getRange('Formulaire!D7').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Formulaire'), true);

spreadsheet.getRange('D9').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data S'), true);

spreadsheet.getRange('C1').activate();

spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).offset(1,0).activate();

spreadsheet.getRange('Formulaire!D9').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Formulaire'), true);

spreadsheet.getRange('D11').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data S'), true);

spreadsheet.getRange('D1').activate();

spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).offset(1,0).activate();

spreadsheet.getRange('Formulaire!D11').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Formulaire'), true);

spreadsheet.getRange('D13').activate();

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Data S'), true);

spreadsheet.getRange('E1').activate();

spreadsheet.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).offset(1,0).activate();

spreadsheet.getRange('Formulaire!D13').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Formulaire'), true);

spreadsheet.getRange('D5').activate();

};

Est ce que ce script produit le résultat escompté ?

function Valider1() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheetDataS = ss.getSheetByName('Data S');
  var sheetFormulaire = ss.getSheetByName('Formulaire');
  var valuesToCopy = [
    sheetFormulaire.getRange('D5').getValue(),
    sheetFormulaire.getRange('D7').getValue(),
    sheetFormulaire.getRange('D9').getValue(),
    sheetFormulaire.getRange('D11').getValue(),
    sheetFormulaire.getRange('D13').getValue()
  ];

var range = sheetDataS.getRange("A1:E" + sheetDataS.getLastRow());
  var data = range.getValues();
  var lastRows = [0, 0, 0, 0, 0];
  for (var i = 0; i < data.length; i++) {
    for (var j = 0; j < lastRows.length; j++) {
      if (data[i][j] !== "") {
        lastRows[j] = i + 1;
      }
    }
  }
  for (var k = 0; k < valuesToCopy.length; k++) {
    sheetDataS.getRange(lastRows[k] + 1, k + 1).setValue(valuesToCopy[k]);
  }
}

Parfaitement, merci beaucoup

Rechercher des sujets similaires à "masquer execution macro google sheet"