[Script] Selectionner derniere cellule vide d'une colonne et Somme

Bonjour,

Entre deux fichiers:

function suite1g() {
  var workSheet = SpreadsheetApp.openById(getFileId("C"));
  var autreWorkSheet = SpreadsheetApp.openById(getFileId("E"));
  var lastRow = workSheet.getLastDataRow('S');
  var columnToSearch = 19;
  var donnee = workSheet.getSheetByName('A').getRange(lastRow, columnToSearch).getValue()
 autreWorkSheet.getSheetByName('A').getRange(6, 7).setValue(donnee)
};

Ca ne marche pas voici l'erreur:

Erreur    
TypeError: workSheet.getLastDataRow is not a function

Tu sais pourquoi?

tu as la réponse dans l'un de tes messages https://forum.excel-pratique.com/sheets/script-selectionner-derniere-cellule-vide-d-une-colonne-et-s...

worksheet doit être une feuille comme ici

var workSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

et non un fichier comme ici

var workSheet = SpreadsheetApp.openById(getFileId("C"));

pour plus de clarté il faudrait adopter un vocabulaire plus clair genre

var fichier = SpreadsheetApp.openById(getFileId("C"));
var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

Je n'y arrive pas

function suite1g() {
  var fichier = SpreadsheetApp.openById(getFileId("C"));
  var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var autreWorkSheet = SpreadsheetApp.openById(getFileId("E"));
  var lastRow = feuille.getLastDataRow('S');
  var columnToSearch = 19;
  var donnee = feuille.getSheetByName('A').getRange(lastRow, columnToSearch).getValue()
 autreWorkSheet.getSheetByName('A').getRange(6, 7).setValue(donnee)
};

voici l'erreur

Erreur    
TypeError: Cannot read property 'getActiveSheet' of null

Peux tu m'ecrire le script complet stp je ne vois pas d ou vient l'erreur

nb. je debute sur sheet sorry.

explique ce que tu veux faire, je ne comprends pas pourquoi chercher la dernière ligne de la colonne S de la feuille active pour l'utiliser dans la feuille A, à moins que A soit la feuille active ... si c'est bien la première du fichier

Je veux juste copier coller la derniere cellule de la colonne S du fichier C dans le fichier E feuille A en G6.

Jack

pas essayé ...

function suite1g() {
  // copier coller la derniere cellule de la colonne S du fichier C dans le fichier E feuille A en G6
  var fichier = SpreadsheetApp.openById(getFileId("C")); // le fichier C
  var feuille = fichier.getSheetByName('A');             // la feuille A
  var lastRow = feuille.getLastDataRow('S');             // dernière ligne de la colonne S
  var columnToSearch = 19;
  var donnee = feuille.getRange(lastRow, columnToSearch).getValue()  // donnée

  var autreFichier = SpreadsheetApp.openById(getFileId("E"));      // le fichier E
  autreFichier.getSheetByName('A').getRange(6, 7).setValue(donnee) // feuille A cellule G6
};

toujours la meme erreur:

Erreur    
TypeError: feuille.getLastDataRow is not a function

j'ai déjà donné la fonction complémentaire, https://forum.excel-pratique.com/sheets/script-selectionner-derniere-cellule-vide-d-une-colonne-et-s...

Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastRow();
  if (col == null){col='A'}
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};

Au fait, ce n'est plus du tout le sujet de départ ...

Selectionner derniere cellule vide d'une colonne et Somme

Bonjour,

Toujours dans le fichier C je voudrais copier une valeur d un autre fichier a la premiere cellule vide de la colonne B:

function copyDataRCCompletion() {
 var ss1 = SpreadsheetApp.openById(getFileId("T"));
 var ss2 = SpreadsheetApp.openById(getFileId("1"));  
 var sh1=ss1.getSheetByName('X');   
 var sh2=ss2.getSheetByName('C');  
 sh2.getRange(sh2.getLastRow()+1,2).setValue(sh1.getRange(32,4).getValue()); };

La valeur se copie au mauvais endroit regarde la photo:

c

Peux tu m'aider a corriger ce script stp pour que l'execution se fasse correctement?

Merci

Bonjour,

Tu ajoutes cette fonction

Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastRow();
  if (col == null){col='A'}
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};

et tu changes

sh2.getRange(sh2.getLastRow()+1,2).setValue(sh1.getRange(32,4).getValue()); };

en

sh2.getRange(sh2.getLastDataRow('B')+1,2).setValue(sh1.getRange(32,4).getValue()); };

Merci ca marhe.

Comment faire pour mettre des 0 dans la colonne A entre A2 et A10 quand la cellule est vide? avec un script.

c1

Merci

Jack

Je voudrais aussi copier la "Feuille 1" du fichier "C" dans le fichier "A" mais avant la feuille "M" en la renommant a la date d'hier.

Par exemple comme nous somme le 19/03 je voudrais renommer la feuille 18 dans le fichier A seulement.

Fichier A:

https://docs.google.com/spreadsheets/d/1ag-jtd0EZaJLHS6I33_1FnS5YOEyRGjZ8hAorhJV49E/edit?usp=sharing

Sur Excel:

Sub Sauvem()

Workbooks.Open Filename:="G:\M\A.xlsm"
Workbooks("A.xlsm").Activate
Workbooks("C.xlsm").Sheets("Feuille 1").Copy Before:=Workbooks("A.xlsm").Sheets("M")
Worksheets("Feuille 1").Name = Format(Date - 1, "dd")
Workbooks("A.xlsm").Activate
Sheets("M").Activate
ActiveWorkbook.Save
Application.DisplayAlerts = False
ActiveWorkbook.Close

End Sub

Merci

que vient faire la macro excel ?

je te montre en Excel comment je l'avais fais.

Mais je voudrais le faire en script google.

Peux tu m'aider sur mes deux derniers posts?

Y a-t-il des formules en colonne A ?

Comment faire pour mettre des 0 dans la colonne A entre A2 et A10 quand la cellule est vide? avec un script.

function addZeros(){
  var sh=SpreadsheetApp.getActiveSheet()
  var rng = sh.getRange(1,1,sh.getLastDataRow('A'),1)
  var data = rng.getValues()
  data.forEach(r => r[0] = r[0]==''?0:r[0])
  rng.setValues(data)
}
Object.prototype.getLastDataRow = function(col){
  var lastRow = this.getLastRow();
  if (col == null){col='A'}
  var range = this.getRange(col + lastRow);
  if (range.getValue() !== "") {
    return lastRow;
  } else {
    return range.getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
  }  
};

question

Je voudrais aussi copier la "Feuille 1" du fichier "C" dans le fichier "A" mais avant la feuille "M" en la renommant a la date d'hier.

quelle est la feuille à renommer,

  • celle d'origine dans C
  • ou celle copiée dans A
  • ou la feuille dénommée M dans A ?

La feuille à renommer est la feuille copiée dans A.

car chaque jour qui avancera j'aurais une nouvelle feuille avec la date du jour d'avant.

exemple:

1, 2, 3, 4 jusqu'à 31 pour les mois de 31 jours.

et en fin de mois je voudrais supprimer toutes les feuilles dans le fichier A sauf la feuille M.

comment le faire en script?

Rechercher des sujets similaires à "script selectionner derniere vide colonne somme"