Trouver la cellule sur modification

Bonjour à tous,

Je me permet de poster ici car je suis en train de préparer un fichier sheet et je souhaiterai que celui-ci sur changement de valeur (dans mon cas des cases à cocher) actionne sur évènement remplisse une autre cellule dans une couleur rouge par exemple.

Voici mes premières ligne de code chez google sheet.

Merci d'avance pour votre aide et vos retours.

function macrored() {

  var spreadsheet = SpreadsheetApp.getActive();
  var e = onEdit.range

  console.log(e)

  spreadsheet.getRange('E'+e).activate();
  spreadsheet.getCurrentCell().setValue('TRUE');
  spreadsheet.getRange('B'+e).activate();
  spreadsheet.getActiveRangeList().setBackground('#ff0000');
};

Bonjour,

hum ... voici un script qui fonctionne

function onEdit(e) {
  var cel = e.source.getActiveRange();
  cel.setNote('Last modified: ' + new Date());
  cel.setBackground('#ff0000');
};

ceci mettra un commentaire sur la cellule modifiée et la mettra en rouge (enfin j'espère je n'ai pas testé pour la couleur !)

mais où se trouve cette "autre" cellule ?

mets un lien vers un fichier test https://www.sheets-pratique.com/fr/cours/partage

Bonjour un grand merci ton code fonctionne,

Maintenant j'aimerai rajouter une condition à cette fonction, j'aimerai que quand la case a cocher est active la cellule se colorie en rouge et quand elle est decoche elle se colorie en blanc j'ai modifier comme suivant mais ca me renvoi toujours sur le esle, la condition n'est pas bonne.

Peux tu me dire comment récupérer la valeur de la cellule (true ou false ?

function onEdit(e) {
  var cel = e.source.getActiveRange();
  if (cel == true){
  cel.setBackground('#ff0000');
  }
  else{
    cel.setBackground('#ffffff');
  }
};

merci de votre aide.

Cordialement

Maintenant j'aimerai rajouter une condition à cette fonction, j'aimerai que quand la case a cocher est active la cellule se colorie en rouge et quand elle est decoche elle se colorie en blanc j'ai modifier comme suivant mais ca me renvoi toujours sur le esle, la condition n'est pas bonne.

Cordialement

je te propose de le faire plutôt par mise en forme conditionnelle sans toucher au script, c'est plus simple

Je comprend et j'ai réalisé le la condition et ca fonctionne bien mais je souhaite aller un peu plus loin dans mon automatisation à savoir si la case à cocher es true en A5 la case à cocher en A6 est décoché et passe en fond blanc. j'avance étape par étape, c'est pour moi une application pour me familiariser avec sheet.

Merci de ton aide.

ok

GSheets n'a pas la fonction "bouton radio", voici un script que j'avais fait pour cela

function onEdit(e) {
  // parametres
  var de = 1;
  var a = 3;
  var c = 1;
  // script
  var r = e.range;
  var f = SpreadsheetApp.getActiveSheet();
  var val = r.getValue();
  var row = r.getRow();
  var col = r.getColumn();
  if (col == c || row >= de || row <= a) {
    if (val) {
      for (var i = de; i <= a; i++){
        if (i != row){
          f.getRange(i,1).setValue('FALSE'); 
        }
      }
    }
  }
}

je te laisse adapter ? (c'est une excellente formation si toutefois tu en avais vraiment besoin !), sinon je suis à ta disposition mais je suis pas mal pris aujourd'hui

Bonjour,

j'ai tenter d'adapter mais je rensontre des problèmes pour sélectionner une cellule spécifique avec ma variable cell.
Le but état de sélectionner une cellule spécifique et de modifier sa valeur et sa couleur de fond.

Merci d'avance pour votre aide.
function onEdit(e) {

  var cel = e.source.getActiveRange();
  var r = e.range;
  var val = r.getValue();
  var row = r.getRow();
  var col = r.getColumn();

  if(col == 5){
      if (val == true){
        cel.setBackground('#ff0000');
      }
      else{
        cel.setBackground('#ffff');
      }   

      var cell = SpreadsheetApp.getActiveSpreadsheet().getRange('B5');

  }
  cel.setNote(col);
  //cel.setNote(row);
};

Bjr,

Bonjour, j'ai tenter d'adapter mais je rensontre des problèmes pour sélectionner une cellule spécifique avec ma variable cell. Le but état de sélectionner une cellule spécifique et de modifier sa valeur et sa couleur de fond.

si tu veux sélectionner une cellule en particulier, tu as 2 choix pour par exemple au hasard C8

if(r.getColumn() == 5 && r.getRow() == 8){

soit

if(r.getA1Notation() == 'C8'){

Je ne comprends pas ton code ressemble à une comparaison et pas à une sélection de cellule.

ok, je vais développer

1- je suis parti comme demandé sur un événement, ce qui m'a amené à proposer onEdit(e) et généralement dans ce cadre on teste la cellule actionnée, c'est ce que j'ai proposé

2- pour sélectionner une cellule, on écrira

SpreadsheetApp.getActiveSheet().setActiveRange("la_cellule")

https://developers.google.com/apps-script/reference/spreadsheet/sheet#setactiverangerange

3- pour renseigner une cellule sans la sélectionner

SpreadsheetApp.getActiveSheet().getRange("la_cellule").setValue("la_valeur")

4- pour changer le format (par exemple la couleur rouge) sans la sélectionner

SpreadsheetApp.getActiveSheet().getRange("la_cellule").setBackground("red")

n'hésite pas à mettre un lien vers ton projet (épuré) comme je le mentionnais plus haut

MAIS, est-ce que dans ton cas, une mise en forme conditionnelle n'est-elle pas suffisante ?

Bonjour,

merci pour tes explication tres détaille.

Du coup j'ai modifier et ca marche:

Voici le code:

function onEdit(e) {

  var cel = e.source.getActiveRange();
  var r = e.range;
  var val = r.getValue();
  var row = r.getRow();
  var col = r.getColumn();

  //---------------- oui/non ---------------------
  if(col == 5){
      if (val == true){
        cel.setBackground('#ff0000');
        SpreadsheetApp.getActiveSpreadsheet().getRange('B'+row).setBackground('#ff0000')
        var cell = SpreadsheetApp.getActiveSpreadsheet().getRange('D'+row).setValue(false);
        cell.setBackground('#ffff')
      }
      else{
        cel.setBackground('#ffff');
      }   
  }
  if(col == 4){
    if (val == true){
      cel.setBackground('#008000');
      SpreadsheetApp.getActiveSpreadsheet().getRange('B'+row).setBackground('#008000')
      var cell = SpreadsheetApp.getActiveSpreadsheet().getRange('E'+row).setValue(false);
      cell.setBackground('#ffff')
    }
    else{
      cel.setBackground('#ffff');
    }   
  }
  if(val == false){
    SpreadsheetApp.getActiveSpreadsheet().getRange('B'+row).setBackground('#ffff')
  }

  //---------------- Pastille ---------------------  

  if(col == 7 && row == 8){
      cel.setNote(row)
  }
  //cel.setNote(col);
  //cel.setNote(row);
};

Parfait !

N'oublie pas de clore ce fil de discussion en cliquant sur

Rechercher des sujets similaires à "trouver modification"