Bonsoir à tous,

Je viens vers vous concernant la construction d'un système de listes déroulantes dépendantes sur plusieurs niveaux, que je code en JS sur l'éditeur Appscript de Google SS.
Une feuille pour l'affichage des listes : DEVIS
Une autre ou figure les donnes: DATAS

Je bloque sur la partie du code ci-dessous, avec le message d'erreur suivant:
"TypeError: Cannot read property 'range' of undefined"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DEVIS");
var wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATAS");
var options =  wsOptions.getRange(2, 1,wsOptions.getLastRow()-1,2).getValues;
 
function onEdit(e)
{
  var activeCell = e.range;
  var val = activeCell.getRange();
  var wsname = activeCell.getSheet().getName()
  if (wsname === "DEVIS" && val ==="B1")
  {
  var filteredOptions = options.filter(function(o){return o[0] === val});
  var listToApply = filteredOptions.map(function(o){return o[1]});
  var cell = ws.getRange("D2");
  applyValidation(listToApply,cell);
  }//end If
 
} // end onEdit
 
function applyValidation(list,cell){
  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DEVIS");
  var rule = SpreadsheetApp
  .newDataValidation()
  .requireValueInList(list)
  .setAllowInvalid(false)
  .build();
  cell.setDataValidation(rule);
}
Si je remplace la fonction onEdit en schintant l'argument "e" et la propriété "range" en attribuant à val une cellule déjà remplie, comme ci-dessous, j'obtiens cette fois ci l'erreur suivante: "TypeError: options.filter is not a function"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
function test(){
  //var options = 
  var val = ws.getRange("B1");
  var filteredOptions = options.filter(function(o){return o[0] === val});
  var listToApply = filteredOptions.map(function(o){return o[1]});
  var cell = ws.getRange("D1");
  applyValidation(listToApply,cell);
}
Je suis à votre dispo si ça manque d'info. Je tourne en rond depuis deux jours, de l'aide serait fortement appréciée !
D'avance merci, excellente soirée à vous.
Baptitste.