Eviter les effacement de lignes par les collègues

il me reste à traiter des modifications de plage de cellules, car ici seule la première est traitée

il reste peut-être la protection de ligne d'écriture de chacun ?

au oui bien sûr, mais je pensais que tu avais aussi mis en place le script

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 faut que la page couvre les colonnes A à AX (tu peux masque de Y à AX)

il me reste à traiter des modifications de plage de cellules, car ici seule la première est traitée

En effet je l'avais mis en place mais je pensais que tu avais encore des réglages à faire.

Finalement je viens de tester et tout le monde peut effacer ou modifier des cellules de tout le monde.

et sur le mien, est-ce que tu peux modifier les premières lignes ? on verra ensuite ce qui cloche !

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

Modif interdite, vous n'êtes pas le proprio

Arffff

ok, donc cela fonctionne

Si tu vas avec ton propre fichier sur outils > macros ... est-ce que tu vois autoriser comme ici

capture d ecran 279

Sur ma feuille j'ai des lignes de A2:A6, alors que sur ta feuille il apparait ton adresse mail à chaque ligne sur ma feuille je n'ai que Y1 - Y9 - Y22

A terme il faut cacher l'email, cacher les colonnes Y à AX

Je reviens sur ma question ... sur TON application, est-ce que vois la macro autoriser comme je l'ai indiquée ci-dessus (sans passer par l'éditeur de script) ?

Si tu vas avec ton propre fichier sur outils > macros ... est-ce que tu vois autoriser comme ici

non

Je pense qu'il faut que tu fasses "importer la fonction" autoriser que tu avais saisie dans l'éditeur de script. Toujours via la feuille et non via l'éditeur de script.

Je reviens sur ma question ... sur TON application, est-ce que vois la macro autoriser comme je l'ai indiquée ci-dessus (sans passer par l'éditeur de script) ?

non , je n'ai que :

"enregistrer une macro"

"Importer"

J'ai fais mais ça ne fonctionne et toujours pas de mail à chaque ligne d'écriture

sans titre5

ok, donc maintenant il faut ajouter un déclencheur en allant sur l'éditeur de script

comme indiqué dans la deuxième partie du message https://forum.excel-pratique.com/sheets/entrer-une-valeur-sans-supprimer-la-formule-148983#p918672

J'ai compris, étant donné que ce matin tu m'as mis ton message en 2 morceaux j'ai cru que c'était 2 choses différentes et donc j'ai créé 2 scripts.

Comme quoi !!!

"Je comprends vite, mais il faut m'expliquer longtemps.

Alors imaginez si je n'ais pas compris ?"

je modifie tout ça et te recontacte.

Ca ne fonctionne pas. je sèche complètement;

il n'y a que la fonction "supprimer" qui fonctionne par la protection de plage (Z)

Comme toi j'ai bien dans= Outil > macro > autoriser et bloquer.

voici mon nouveau lien de test.

https://docs.google.com/spreadsheets/d/1D6bxENk3Hq1AjxZlPFjo_jTiH5vghXhJ3FBM_muvujw/edit?usp=sharing

il faut ajouter un déclencheur comme ceci

capture d ecran 280

Peux-tu m'indiquer la marche à suivre ?

Regarde ici, sinon je la ferai de façon littérale !

trigger

Eventuellement je peux te proposer une macro pour faire cela si tu n'y arrives pas !

Il faut lancer myTriggerSetup

function myTriggerSetup() {
     if(!isTrigger('autoriser')) {
       ScriptApp.newTrigger('autoriser').forSpreadsheet('____mettre ici ID du fichier____').onChange().create();  
     }
}

function myTriggerDelete(){
     deleteTriggersByName('autoriser');
}

function deleteTriggersByName(name){
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++){ 
    if (triggers[i].getHandlerFunction().indexOf(name) != -1) 
    {
      ScriptApp.deleteTrigger(triggers[i]);
    }
}}

function isTrigger(funcName) {
     var r=false;
     if(funcName) {
       var allTriggers=ScriptApp.getProjectTriggers();
       var allHandlers=[];
       for(var i=0;i<allTriggers.length;i++) {
         allHandlers.push(allTriggers[i].getHandlerFunction());
       }
       if(allHandlers.indexOf(funcName)>-1) {
         r=true;
       }
     }
     return r;
}

edit : comme le beaujolais nouveau avec quelques jours de retard, nouvelle fonction page suivante !

Rechercher des sujets similaires à "eviter effacement lignes collegues"