Eviter les effacement de lignes par les collègues

Bonjour, je travail dans une association avec des enfants qui ont de l'argent de poche, chacun à sur son PC un tableau Google Sheets (partagé) et créait sa propre ligne d'écriture, mais il est arrivé que certains effacent par inadvertance une ligne d'autres collègues . comment peut-on faire pour protéger nos propres lignes d'écritures ? D'avance je vous remercie pour votre réponse.

Cdlt

Bonjour et bienvenue,

Google Sheet est assez bien fait pour le travail collaboratif ... mais ce cas peut être très complexe ou très simple

  • complexe : créer un trigger qui lors d'un changement va mettre l'utilisateur dans une cellule de la ligne (si cellule vierge) ou au contraire comparer l'utilisateur avec cette cellule pour autoriser ou non, j'y ai réfléchi mais je n'en suis pas encore sorti indemne !
  • simple : demander à chacun de protéger sa ligne avec comme restriction "moi seul" https://support.google.com/docs/answer/1218656?co=GENIE.Platform%3DDesktop&hl=fr

Merci Steelson, je vais éplucher ça !

Bonjour Steelson, ça fonctionne bien, mais chaque personne doit protéger chaque plage écrit récemment et avant de quitter, (je suis pas sûr que certains n'oublieront pas)

Un grand merci pour ton aide !

Une solution sans protection serait d'enregistrer le propriétaire d'une ligne sur la ligne elle-même et de n'autoriser par "trigger" sa modification par ledit propriétaire. En l'occurrence, ce propriétaire est identifié par

var email = Session.getActiveUser().getEmail();

que l'on peut indiquer colonne y sur la ligne x comme ceci

var doc = SpreadsheetApp.getActiveSpreadsheet();
var feuille = doc.getActiveSheet();
feuille.getRange(x,y).setValue(email);

Bonjour Steelson, comme tu peux voir j'ai changé de pseudo afin de pouvoir modeler et laisser à tous un visu sur les différents tableaux.

Alors pour celui-là j'ai un beug complet, je sais pas si je dois créer un script (à mon avis c'est dans un script puisque l'autorisation ne se ferait que par un déclencheur) le soucis c'est pour voir si ça fonctionne je dois me connecter à un autre compte et lorsque je le fais je n'est plus accès au script de la formule.

Je te laisse le lien, si tu peux me l'appliquer avec explication ça serait cool de ta part.

https://docs.google.com/spreadsheets/d/1cmQzmukJTqFsd-ONKu2lfR3EQmmT7xzZDTxqdKTfJe8/edit#gid=0

CDLT

Hello,

je n'ai rien compris ! désolé ...

  • de quel bogue / bug s'agit-il ?
  • quel serait le but du script ? pour contrôler qui a accès à quelle ligne ?
  • en fait de déclencheur, il s'agit plutôt de la gestion d'un événement qui serait la modification dans une ligne ... je n'ai pas l'expérience du partage mais on pourrait faire une essai
  • pour le moment il n'y a pas de script, c'est bien cela ?

je regarderai plus à fond demain

Hello.

pour celui-là j'ai un beug complet

Il ne s'agit pas d'un beug informatique mais un beug dans ma tête,

quel serait le but du script ? pour contrôler qui a accès à quelle ligne ?

Le but recherché est qu'un collègue ne puissent pas effacer la ligne d'un autre. (je pensais, en utilisant le nom du collègue) puisque chacun aura un compte Google et ne pourra avoir accès à sa feuille (argent de poche) que par le partage du fichier via son adresse mail.

pour le moment il n'y a pas de script, c'est bien cela ?

Il y en a un, j'ai fais un copier/coller de tes formules pensant qu'elles devaient aller dans un script et non dans une cellule.

mais si il doit y avoir un script je suis incapable de faire des tests car si j'ouvre un autre compte Google je n'ai plus accès au script en question.

Une solution sans protection serait d'enregistrer le propriétaire d'une ligne sur la ligne elle-même et de n'autoriser par "trigger" sa modification par ledit propriétaire. En l'occurrence, ce propriétaire est identifié par

var email = Session.getActiveUser().getEmail();

que l'on peut indiquer colonne y sur la ligne x comme ceci

var doc = SpreadsheetApp.getActiveSpreadsheet();

var feuille = doc.getActiveSheet();

feuille.getRange(x,y).setValue(email);

CDLT

Il faut y aller étape par étape et tester avec un cobaye (que je peux être mais je préfère que ce soit toi le "pilote".

Il y a 2 choses à faire

  • - se prémunir contre la suppression d'une ligne
  • - se prémunir contre la modification d'une ligne

Commençons par le premier point ... peux-tu par exemple créer un script comme suit

function proteger() {
  var f = SpreadsheetApp.getActive();
  var r = f.getRange('Z1:Z');
  var protection = r.protect();
}

et exécuter une fois cette fonction.

Normalement, seul celui qui a protégé peut alors intervenir sur cette colonne, et cela doit aussi bloquer une suppression de ligne du coup.

C'est fait.

pour l'instant le partage est :

Avec ce lien, tous les internautes peuvent modifier l'élément

ça y est le partage est :

Seules les personnes ajoutées peuvent ouvrir le document avec ce lien

Ah ben je viens de comprendre,

Avec ton script chacun créait sa ligne d'écriture mais ne peut pas modifier celle des autres, sans pour autant être dans la fenêtre partage (Ajoutez des personnes et des groupes)

donc je viens de changer le partage.

Avec ce lien, tous les internautes peuvent modifier l'élément

Alors que je pensait que seul les personnes ajoutaient dans la fenêtre partage, pouvais créer une ligne d'écriture et ne pas modifier celle des autres. Ce qui est pareil sauf que je peux ajouter ou supprimer des personnes dans la fenêtre de partage.

As-tu fait tourner la macro sur la feuille active (et du bloqué la colonne Z) ?

Je me suis connecté avec un autre compte, créé une ligne d'écriture de Audrey qui a pu modifier un des montants d'Alexandre.

Pour le moment c'est normal, nous n'avons pas encore bloqué les données

Il s'agit du premier point comme je mentionnais ... peux-tu supprimer une ligne ? ou en ajouter une avec un autre compte ?

Il y a 2 choses à faire

  • - se prémunir contre la suppression d'une ligne
  • - se prémunir contre la modification d'une ligne

Commençons par le premier point ... peux-tu par exemple créer un script comme suit

Avec ceci

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

  • peux-tu écrier ? je pense que oui
  • peux-tu supprimer une des premières lignes ?

As-tu fait tourner la macro sur la feuille active (et du bloqué la colonne Z) ?

Oui j'ai fait enregistrer, puis exécuter puis il m'a mis l'option (bloquer) et j'ai cliqué dessus.

Pourquoi la colonne Z, je n'ai rien dans cette colonne ? ma feuille est A:J

Avec ceci

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

peux-tu écrier ? je pense que oui

peux-tu supprimer une des premières lignes ?

Non je suis en lecture seule

Pourquoi la colonne Z, parce que justement il n'y a rien. L'idée est de bloquer une colonne inutile. Comme le fait de supprimer une ligne touche toutes les cases de cette ligne, de A à Z, il devrait bloquer.

Rechercher des sujets similaires à "eviter effacement lignes collegues"