Dans un script, J'ai déjà ton travail précédent. Peux-tu placer ta formule "menu" à l'intérieur de ce script ?
/** @OnlyCurrentDoc */
function onEdit(event){
var doc = SpreadsheetApp.getActiveSpreadsheet();
var fsource = event.source.getActiveSheet();
var feuille = fsource.getName().toString();
var param = doc.getSheetByName('BDD');
var banques = param.getRange('K:K').getValues().join().split(",");
var r = event.source.getActiveRange();
if (banques.indexOf(feuille) != -1){
// changement point en virgule
if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){
var nombre = event.value;
if (isNaN(nombre)){}else{
var res = nombre.replace(".", ",");
r.setValue(res);
}
}
// changement destinataire si virement interdit
if (columnToLetter(r.getColumn()) == 'D'){
if (fsource.getRange('Q' + r.getRow()).getValue() != ''){
r.setValue(fsource.getRange('Q' + r.getRow()).getValue());
Browser.msgBox('modif interdite pour transfert déjà enregistré !');
}
}
// virement inter banque
if (columnToLetter(r.getColumn()) == 'J' || columnToLetter(r.getColumn()) == 'K'){
var dest = fsource.getRange('D'+r.getRow()).getValue().toString();
if (banques.indexOf(dest) != -1){
var fdest = doc.getSheetByName(dest);
var dest = fdest.getName().toString();
var virement = fsource.getRange('P' + r.getRow()).getValue();
// nouveau virement
if (virement == '') {
var values = fdest.getRange('A:A').getValues().join().split(",");
var i = values.indexOf("") + 1;
var numV = param.getRange('M2').getValue() + 1;
fdest.getRange('P' + i).setValue('Virement ' + numV);
fsource.getRange('P' + r.getRow()).setValue('Virement ' + numV);
fdest.getRange('Q' + i).setValue(feuille);
fsource.getRange('Q' + r.getRow()).setValue(dest);
param.getRange('M2').setValue(numV);
var plage = fsource.getRange('A' + r.getRow() + ':C' + r.getRow());
plage.copyTo(fdest.getRange('A' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
var plage = fsource.getRange('E' + r.getRow() + ':I' + r.getRow());
plage.copyTo(fdest.getRange('E' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
if (columnToLetter(r.getColumn()) == 'J'){
r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
if (columnToLetter(r.getColumn()) == 'K'){
r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
fdest.getRange('D' + i).setValue(feuille);
Browser.msgBox('ok virement ' + numV + ' !');
// virement déjà existant
} else {
var values = fdest.getRange('P:P').getValues().join().split(",");
var i = values.indexOf(virement) + 1;
if (i != 0) {
if (columnToLetter(r.getColumn()) == 'J'){
r.copyTo(fdest.getRange('K' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
if (columnToLetter(r.getColumn()) == 'K'){
r.copyTo(fdest.getRange('J' + i), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
Browser.msgBox('ok modification ' + virement + ' !');
}else{
Browser.msgBox(virement + ' non détecté - incohérence de données !');
}
}
}
}
}
}
function columnToLetter(column) {
var temp, letter = '';
while (column > 0) {
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
}
Merci.