Pour mettre au point, surtout avec onEdit, n'hésite pas à mettre
Browser.msgBox('ici')
et à le déplacer petit à petit pour voir où cela coince. C'est rustique mais efficace.
Tu as mis
(feuille.getName() == pro)
c'est quoi la valeur de pro ? ou bien il faut mettre
(feuille.getName() == 'pro')
Je suppose que c'est pour les test ..
if (feuille.getName() != 'test') { return }
mais dans ce cas cela va à l'oppose de
(feuille.getName() == 'pro')
et rien ne se passe !
In fine, en mettant le nom de la feuille à pro, ceci fonctionne
function onEdit(event) {
var pro = "test";
var feuille = event.source.getActiveSheet();
var cellule = event.source.getActiveRange();
if ((cellule.getColumn() == 3) && (feuille.getName() == 'pro') && (cellule.getRow() > 1)) {
if ((cellule.offset(0, -2).getValue() == '') && (cellule.offset(0, -1).getValue() == '')) {
cellule.offset(0, -2).setValue(Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy"));
cellule.offset(0, -1).setValue(Utilities.formatDate(new Date(), "GMT+2", "hh:mm"));
}
}
// if (feuille.getName() != 'test') { return }
if (cellule.getColumn() > 6) { return }
var data = feuille.getRange('A2:G' + feuille.getLastRow()).getValues()
var somme = 0
var nombre = 0
var ladate = ''
var ref = ''
for (var i = 0; i < data.length; i++) {
if (data[i][0] != ladate) { // pas compris !
somme = 0
nombre = 0
ladate = data[i][0]
}
if (data[i][2] != ref) {
somme = 0
nombre = 0
ref = data[i][2]
}
somme += data[i][3]
nombre += 1
data[i][4] = nombre
data[i][5] = somme
data[i][6] = somme / nombre
}
feuille.getRange('A2:G' + feuille.getLastRow()).setValues(data)
feuille.getRange('J2').setValue(somme / nombre)
SpreadsheetApp.getActive().toast('Données mises à jour !')
}
par habitude j'ai changé date en ladate car Date est un nom réservé ... on ne sait jamais !