Bonjour,
avancement du projet
1- pour les effacements de ligne, c'est réglé, seul l' "administrateur" peut supprimer = celui qui a activé cette fonction
function bloquer() {
var f = SpreadsheetApp.getActive();
var r = f.getRange('Z1:Z');
var protection = r.protect();
}
2- pour les modifications de ligne
function autoriser() {
var email = Session.getActiveUser().getEmail();
var f = SpreadsheetApp.getActive();
var r = f.getActiveRange();
if (r.getColumn() <= 24){ // jusque X inclus
var col = columnToLetter(r.getColumn());
var lig = r.getRow();
var proprio = f.getRange('Y' + lig).getValue();
if (proprio != "" && email != proprio) {
Browser.msgBox("Modif interdite, vous n'êtes pas le proprio !");
var plage = f.getRange('AA' + lig + ':AX' + lig);
plage.copyTo(f.getRange('A' + lig), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
} else {
f.getRange("Y" + lig).setValue(email);
f.getRange('A' + col + lig).setValue(r.getValue());
}
}
}
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;
}
il me reste à traiter des modifications de plage de cellules, car ici seule la première est traitée
Tu peux tester, c'est dans mon fichier de test.
Les colonnes suivantes sont masquées
- Y pour le propriétaire de la ligne ... bien sûr, il y a une faiblesse ici car on peut changer soi-même le propriétaire, je vais aussi regarder ce point
- Z (blocage suppression ligne)
- AA à AX miroir de A à X