Bonjour,
Je suis relativement novice en script quand bien même je suis capable de comprendre un code. J’ai essayé d’adapté un code que j’ai trouvé sur le net , mais ça ne fonctionne pas et je ne trouve pas mon erreur, si vous pouviez me décoincer.
Voici mon code :
function onEdit(e) {
// récupération des valeurs
const range = e.range;
const col = range.getColumn();
const row = range.getRow();
const value = range.getValue();
// récupération de la feuille modifiée
const source = e.source;
const sourceId = source.getSheetId();
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheetChoixId = ss.getSheetByName("Edition bon de commande").getSheetId();
// Si c'est bien la feuille choix qui héberge la modification
if (sourceId == sheetChoixId) {
if (row > 1) {
// si c'est la col fournisseur (5) qui est sélectionnée, lancer la validation de données des produits dans la colonne 8
if (col == 5) {
dataValidation(row,8,"BDD Stock produits",value);
}
}
}
}
function dataValidation(row, col, table, cle) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Edition bon de commande");
const cellule = sheet.getRange(row, col);
// initialisation de la liste
let liste = [];
if (cle != "") {
liste = filtre(table, cle);
const validation = SpreadsheetApp.newDataValidation().requireValueInList(liste).build();
cellule.setDataValidation(validation);
}
else {
cellule.clearDataValidations();
}
}
function filtre(type, cle) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(type);
const values = sheet.getDataRange().getValues();
let filtre = [];
values.map(function (row)
{
if (row[2] == cle && row[3] != null)
{
filtre.push(row[3]);
}
})
return filtre;
}
Voici quelques captures d’écran des pages concernées Page Edition bon de commande
Page BDD Stock produits
Merci d’avance pour les échanges
Laura
+1
-0