OnEdit sur une cellule, efface la ligne

Bonjour à tous,

Voilà ce que je voudrais faire, sur une feuille: si la cellule A3 change, j'efface toute la ligne de D3 à AD3.

Le script ci-dessous fonctionne bien. Mais je voudrais étendre le changement à toutes la plage A3:A50.

J'ai essayé différentes solutions aucune ne marche..

function onEdit(e) {
const celluleModifiee = e.range;
// Si la cellule A3
if (celluleModifiee.getA1Notation() == "A3") {
// Effacer la ligne
var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('D3:AD3').activate(); spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});}}

Bonjour,

Voici une solution :

function onEdit(e) {
  var sheet = e.source.getActiveSheet(); // met dans une variable la feuille modifiée
  var range = e.range;/ / met dans une variable la range modifiée

  if (range.getColumn() === 1 && range.getRow() >= 3 && range.getRow() <= 50) { // vérifie si la modif est en colonne A et entre les lignes 3 et 50
    var lingeAsuppr = range.getRow();
    var colMax= sheet.getLastColumn();

    sheet.getRange(lingeAsuppr, 4, 1, colMax - 3).clearContent(); // selectionne la ligne à supprimer, à partir de la 4ème colonne, d'une ligne de haut, jusquà la dernière colonne et la supprime
  }
}

MERCI, PIERRE C'EST EXACTEMENT CE QUE JE VOULAIS FAIRE.

Juste une question pour voir si j'ai bien compris la logique du script, dans les "var" tu mets un commentaire

"met dans une variable la feuille ( et la range ) modifiée" Moi je comprendrais "met dans une variable la feuille ( et la range ) A MODIFIER".., Non?

Bonjour, voici une explication ligne par ligne :

function onEdit(e) {

nom de la fonction, onEdit(e) indique que c'est une fonction qui se lance lorsqu'une modification est apportée

  var sheet = e.source.getActiveSheet();

la feuille Google sheet où la modification a été faite est stockée dans la variable "sheet"

  var range = e.range;

La cellule où a eu lieu la modification a été stockée dans la variable "range"

  if (range.getColumn() === 1 && range.getRow() >= 3 && range.getRow() <= 50) 

Si la colonne où a eu lieu la modification est la 1ère et la ligne est supérieure ou égale 3 ET inférieure ou égale à 50 alors on exécute le script suivant.

    var lingeAsuppr = range.getRow();

On met l'adresse de la ligne où a eu lieu la modification dans une variable

    var colMax= sheet.getLastColumn();

On met le nombre de colonnes de la feuille dans une variable

    sheet.getRange(lingeAsuppr, 4, 1, colMax - 3).clearContent();

On sélectionne la plage qui se situe dans la ligne où a eu lieu la modification (lingeAsuppr), 4ème colonne, on ne sélectionne qu'une ligne de haut, et jusqu'au nombre max de colonne -3 (-3 car colMax contient le nombre total de colonnes, il faut donc exclure les 3 colonnes qu'on ne va pas supprimer).

Puis on supprimer le contenu de cette plage.

OUI! Bien sur. Je fonctionnais à l'envers..

Merci beaucoup pour cette aide très efficace et instructive. J'en apprend chaque jour in peu plus.

bonne journée.

Rechercher des sujets similaires à "onedit efface ligne"