FORUM D’ENTRAIDE INFORMATIQUE (FEI)
Site d’assistance et de sécurité informatique

Entraide pour le programmation en général (tous langages).
Règles du forum : Entraide concernant la programmation informatique en général, tous langages : recherche ou correction d'un code ou d'une fonction, aide à la réalisation d'un projet...
Pour la programmation web (HTML, CSS, PHP, MySQL...), il est conseillé de s'orienter dans le forum Webmastering.
Merci de lire et de respecter la charte générale du forum.
  • Avatar du membre
  • Avatar du membre
#214492
Bonjour à Tous,

J'ai un petit soucis de menu déroulant conditionnels comme indiqué.
Je n'arrive pas à faire 3 menus conditionnels successifs. J'ai d'abord tenté en utilisant des formules sheet sans succès puis j'ai fait des essais avec le script mais je suis toujours bloqué au 3ème qui ne fonctionne pas correctement.

Est-ce que quelqu'un pourrait m'aiguiller dans ce problème ?

https://ibb.co/XLrzvHV

https://ibb.co/0Gvn2Xz

Sur la première image, la feuille principale où je souhaiterai avoir mes 3 menus déroulant sur toute la colonne excepté la 1ere ligne.
Sur la deuxième image, la structure de mes informations.

Pour illustrer d'un example, dans A2 je devrais avoir un menu déroulant avec CK, H&M et Dior.
Si je choisis H&M il devrait me proposer dans B2 un menu déroulant avec Milan, Berlin et Venise.
Si je choisis Venise Il devrait me proposer dans C2 un ménu déroulant avec Pull et T-Shirt.

Attention, les Lieux et les produits peuvent être identiques d'une société à une autre.

Voilà les deux premiers scripts (pour colonne A et B) :
function setupScrollingMenu() {
var feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Feuille principale");
var dvListe = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Listes");

var optionsRange = dvListe.getRange(1, 1, 1, 7);
var options = optionsRange.getValues()[0];

var dv = SpreadsheetApp.newDataValidation();
dv.setAllowInvalid(false);
dv.setHelpText("Choisir une société");
dv.requireValueInList(options, true);

feuille.getRange(2, 1, feuille.getLastRow()-1 , 1).setDataValidation(dv.build());
}





function onEdit(e) {
var feuillePrincipale = "Feuille principale";
var listesSheet = "Listes";

var activeSheet = e.source.getSheetByName(feuillePrincipale);

if (activeSheet.getName() == feuillePrincipale) {
var selectedCompany = activeSheet.getRange(e.range.rowStart, 1).getValue();

var listes = e.source.getSheetByName(listesSheet);

var companyRow = listes.getRange(2, 1, 1, listes.getLastColumn()).getValues()[0];
var companyIndex = companyRow.indexOf(selectedCompany);

if (companyIndex != -1) {
var locations = listes.getRange(2, companyIndex + 1, listes.getLastRow() - 1, 1).getValues().flat();


var ruleB = SpreadsheetApp.newDataValidation().requireValueInList(locations).build();
activeSheet.getRange(e.range.rowStart, 2).setDataValidation(ruleB);
} else {
activeSheet.getRange(e.range.rowStart, 2).clearDataValidations();
}
}
}


En vous remerciant par avance de tout les éléments que vous pourrez m'apporter.

T P
#214568
Bonjour,

Pour aborder votre problème avec le troisième menu, je vous suggère de vérifier si le script gère correctement les cas où les lieux et les produits sont identiques pour différentes sociétés, comme vous l'avez mentionné. Cela pourrait être une source de confusion pour le script.

Par ailleurs, avez-vous pensé à utiliser une banque image ia pour visualiser les différents éléments de votre menu déroulant? Par exemple, lorsqu'un utilisateur sélectionne "H&M", une image représentative pourrait s'afficher, et ainsi de suite pour les autres choix. Cela pourrait non seulement rendre l'interface plus interactive, mais aussi vous aider à identifier visuellement où le processus pourrait échouer.

Hello everybody. Lately I have been very unlucky[…]

Having a coupon code is so convenient and helps a […]

Long-distance relationship

Hello everyone! Lately I have been thinking abou[…]

I appreciate you sharing this knowledge. I adore y[…]