Masque automatiquement tous les ligne de la Colonne de a9 à G31

Bonjour,
j'ai crée un code pour masque automatiquement tous les ligne de la Colonne de a9 à G31 si la cellule de la colonne H8 est vide.
mais je n'arrive pas a le faire fonctionner, il me mais l'erreur suivent ErreurTypeError: Cannot read properties of undefined (reading 'range')onEdit@ Code.gs:2, lors de l'exécution manuel et lors que je fait une modification dans la feuille rien ne se passe .

function onEdit(e) {
  var sheet = e.range.getSheet();
  var range = e.range;

  var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Inventaire LOTS DE RELEVAGE LREL");
  var targetRange = targetSheet.getRange("H8");

  if (
    sheet.getName() === targetSheet.getName() &&
    range.getRow() >= 9 &&
    range.getRow() <= 31 &&
    range.getColumn() === targetRange.getColumn()
  ) {
    var targetValue = targetRange.getValue();

    if (targetValue === "") {
      sheet.hideRows(9, 23); // Masque les lignes de la ligne 9 à la ligne 31 (23 lignes au total)
    } else {
      sheet.showRows(9, 23); // Affiche les lignes de la ligne 9 à la ligne 31 (23 lignes au total)
    }
  }
}

ci joint le lien du fichier https://docs.google.com/spreadsheets/d/1ctOFOY8r57oT0hVO2dmnDD3M4HKgAhafVbrJEo1kP00/edit?usp=sharing

Merci par avance pour votre.

Bonjour,

Voila une version simplifiée qui fonctionne :

function onEdit(e) {

  const sheet = e.range.getSheet();

  if (sheet.getName() === 'Inventaire LOTS DE RELEVAGE LREL') {
    if (sheet.getRange('H8').getValue() === '') {
       sheet.hideRows(9, 23);
    } else {
       sheet.showRows(9, 23);
    }
  }
}

Ou une version plus courte qui fait exactement la même chose :

function onEdit(e) {
  const s = e.range.getSheet();
  s.getName() === 'Inventaire LOTS DE RELEVAGE LREL' && (s.getRange('H8').getValue() === '' ? s.hideRows : s.showRows)(9, 23);
}

Cordialement,

Ou une version plus optimisée qui affiche ou masque uniquement après un changement de H8 :

function onEdit(e) {

  const sheet = e.range.getSheet();

  if (sheet.getName() === 'Inventaire LOTS DE RELEVAGE LREL' && e.range.getA1Notation() == 'H8') {
    if (e.value === undefined) {
       sheet.hideRows(9, 23);
    } else {
       sheet.showRows(9, 23);
    }
  }
}

Ou :

function onEdit(e) {
  const s = e.range.getSheet();
  s.getName() === 'Inventaire LOTS DE RELEVAGE LREL' && e.range.getA1Notation() == 'H8' && (e.value ? s.showRows : s.hideRows)(9, 23);
}

Merci Sébastien pour votre aide

Bonjour,

Je souhaite modifier des choses sur ce fichier mes je n'arrive pas .

je souhaite crée un script pour masquer la cellule c2 c3 si b3 n'est pas remplie dans l'onglet Inventaire LOTS DE RELEVAGE LREL et la même chose pour plusieur cellule masquer la cellule d2 d3 si c3 n'est pas remplie etc ...

ci joint le lien du fichier https://docs.google.com/spreadsheets/d/1ctOFOY8r57oT0hVO2dmnDD3M4HKgAhafVbrJEo1kP00/edit?usp=sharing

Merci par avance pour votre.

Rechercher des sujets similaires à "masque automatiquement tous ligne colonne g31"