Création plage de cellules

Bonjour

Je débute avec google sheet (pas bien compliqué quand on connait Excel) et surtout avec Apps Script.

Je ne connais pas ce langage et je butte sur quelque chose qui est certainement évident mais pas pour moi.

Je veux modifier un plage de données qui est différente d'une fois sur l'autre suivant le nombre de lignes. J'arrive à faire ma sélection, si je crée ou modifie ma plage manuellement, ça marche, si je veux automatiser la chose, je n'y arrive pas.

Je vous mets ci-dessous mon bout de script

if (spreadsheet.getRange('A1').getValue()==1){
   spreadsheet.setNamedRange('Test', spreadsheet.getRange('A2'));
    }
else {
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getRange('A2').activate();
  var currentCell = spreadsheet.getCurrentCell();
  spreadsheet.getSelection().getNextDataRange(SpreadsheetApp.Direction.DOWN).activate();
  spreadsheet.setNamedRange('Test',                                           )

Je commence par mettre une condition. Le A1 est issu d'une formule et m'inscrit le nombre de lignes. S'il n'y a qu'une ligne A2 de complétée, ma plage Test ne contient que cette cellule et ça fonctionne.

Sinon

ma plage commence toujours par la cellule A2

ma plage se finit par la dernière cellule de la colonne A sachant qu'il n'y a jamais de cellule vide entre deux cellules pleines dans ma colonne A.

je voudrai donc modifier les coordonnées de ma plage en fonction de ma dernière cellule pleine.
Si je lance un enregistrement de macro le script ne tient pas compte du côté relatif de la zone. Si les cellules définies lors de l'enregistrement vont jusqu'à A50, quand je crée le script, il m'écrit ('A2:A50') alors que le A50 va changer à chaque fois.

J'ai besoin de cette plage de données pour copier les informations à un autre endroit de mon tableur. Si la zone ne va pas jusqu'à A50, ce n'est pas bien grave, il me copiera des cellules vides mais si elle va au delà de A50, elle ne copiera que les 50 premières lignes et je perds les informations suivantes.

J'ai tenté des getRange, des getSelection, et encore bien d'autres mais je n'arrive pas à faire fonctionner le bidule.

En gros j'ai besoin de savoir ce que je dois mettre après 'Test', située sur ma dernière ligne de script. Je tourne en rond alors que ce doit être tout simple mais je ne sais pas quelle fonction utiliser.

Merci pour l'aide que vous pouvez m'apporter

Coloc

Bonjour,

function test() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
  if (sheet.getRange('A1').getValue() == 1) {
    SpreadsheetApp.getActiveSpreadsheet().setNamedRange('Test', sheet.getRange('A2'));
  }
  else {
    var debut = sheet.getRange('A2')
    var fin = sheet.getRange('A2').getNextDataCell(SpreadsheetApp.Direction.DOWN)
    var plage = sheet.getRange(debut.getRow(), debut.getColumn(), fin.getRow() - debut.getRow() + 1, 1)
    SpreadsheetApp.getActiveSpreadsheet().setNamedRange('Test', plage)
  }
}

Merci Steelson, ça fonctionne parfaitement.

Rechercher des sujets similaires à "creation plage"