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"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
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); }
Je suis à votre dispo si ça manque d'info. Je tourne en rond depuis deux jours, de l'aide serait fortement appréciée !
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); }
D'avance merci, excellente soirée à vous.
Baptitste.
Partager