Liste déroulante variable, est ce faisable?

Bonjour à tous,

Nouveau à la fois ici et dans l'utilisation des outils tableurs, je vais tenter d'être aussi clair que je le peux. Veuillez m'excuser par avance, car je ne connais qu'un vocabulaire limité concernant les fonctionnalités de Google Sheet , même si je progresse à mon petit rythme. Voici mon problème :

Je tente depuis un moment de trouver une solution pour faire varier les éléments d'une liste déroulante en fonction d'une autre liste déroulante qui serait parente à la première. Exemple : lorsque j'ouvre la première liste déroulante j'ai le choix entre : "Mammifère", "Reptile", "Insecte". Selon le choix, la liste déroulante "enfant" propose les animaux liés au premier choix. J'ai d'abord choisis "mammifère", j'aimerai que dans la liste s'affiche des mammifères (ex: Chien, Vache..), puis je sélectionne à nouveau dans la Liste parente "Insecte" rafraichissant la liste en dessous, proposant alors "Mouche, Coccinelle"... etc.

Pour le moment je ne suis parvenu à un résultat fonctionnel qu'en alimentant plusieurs liste déroulantes, avec la fonction =RECHERCHEV. Ca marche bien, mais c'est moche, Il me faut autant de listes déroulante que de catégories, et évidemment je n'ai mis que trois exemples ici, mais mon projet actuel nécessite au moins 6 catégories. Plutôt que d'avoir 3 Listes déroulante proposant chacune un nombre d'animaux d'une catégorie, je préfèrerais n'avoir qu'une liste proposant les différentes catégories d'animal, rafraichissant une deuxième liste.

J'ai également tenté d'importer une liste déroulante depuis une autre feuille, en essayant de l'associer à une condition. (Vulgairement: si B2="Mammifère" importer Liste déroulante Mammifère proposant la vache, le chien... dans B3)... sans succès. Je tiens à préciser qu'autant que faire se peut, j'essaye d'éviter les script, car je n'y comprend pas grand chose, je manque de logique.

Pourriez vous m'indiquer comment m'y prendre, ou me donner une solution qui vous paraitrait plus logique? Je joint un fichier exemple, avec deux feuilles, l'une étant la base de données dans laquelle je veux piocher mes informations, l'autre contenant le rendu avec les listes déroulante. J'aimerais que la nouvelle liste déroulante s'affiche en B4 dans la feuille "Test Animaux"

Lien : https://docs.google.com/spreadsheets/d/1X1I0Pck2_O9NLjtqrnCl6pD5urR8HV4f3T-1fQAQ8O8/edit?usp=sharing

Je vous remercie par avance en espérant m'être exprimer suffisamment clairement.

Mr JOols

Bonjour JOols, et bienvenue,,

je t'ai fait une proposition dans ton fichier

mets les listes sous forme de tableau avec comme en-têtes les choix de niveau 1

ensuite, selon le choix fait reporté en G1, tu as à partir de G2 la liste qui dépend du choix

=OFFSET(A2:A;; MATCH(G1;1:1;0))

j'ai mis sur fond jaune les formules

aucun script

Salut Steelson.

Je tiens déjà à te remercier de t'être penché sur mon cas. Comme je m'y attendais, je ne connaissais pas les formules que tu as utilisé, mais je suis ici pour apprendre , donc c'est très bien.

En vérifiant la liste déroulante, je m'aperçois que les catégories ne correspondent pas. J'ai l'impression que la formule "DECALER" est inadaptée... En effet les réponses sont décalées d'une colonne, si bien qu'on se retrouve avec Tortue/Serpent/Lézard pour Mammifère, Mouche/Fourmi/Coccinelle pour Reptiles, puis rien pour Insecte puisqu'en décalant encore d'une colonne, on se retrouve hors du tableau. Alors peut être qu'il manque une valeur, ou une condition. Je me suis penché un peu sur les formules DECALER et EQUIV mais j'ai un peu de mal à cerner l'utilité du décalage, qui en effet décale ce qui n'est pas supposé l'être. J'ai du mal à m'expliquer, c'est un peu compliqué.

Par contre l'idée de faire en sorte que la liste se crée a partir de la première feuille de cette façon, je trouve ça hyper malin, c'est pile poil ce que j'imaginais.

Donc, si tu as encore un instant, j'aimerai comprendre s'il manque des données ou si c'est la fonction en elle même qui ne va pas, concernant ce décalage.

En tout cas merci pour ta proposition, ça m'ouvre de nouvelle perspectives.

Mr JOols

les réponses sont décalées d'une colonne

ah zut, j'ai été trop vite

donc en G2, ajoute -1 comme ceci

=OFFSET(A2:A;; MATCH(G1;1:1;0)-1)

match va détecter la colonne considérée par le choix de niveau 1

et offset va décaler la première colonne en fonction du résultat de match

Bonsoir Steelson.

A présent c'est impeccable. J'analyse la formule pour tenter de comprendre exactement le processus que tu as utilisé. En effet lorsque je me réfère aux formules expliquées sur le site du support google, je m'y perd un peu.

Exemple formule Google :
DECALER(A2,1,1) A2 = ref cellule, 1=nombre de lignes à partir desquelles effectuer le décalage, 1= Nombre de colonnes à partir desquelles effectuer le décalage
Ta formule :
DECALER(A2:A; ;-1) A2:A = ? Je ne sais pas ce que signifie le ":A" même si je vois bien en cliquant sur la formule que ça correspond à l'ensemble de la colonne A

Concernant MATCH j'ai tout pigé
G1 est la clé de recherche, 1:1 est la plage (ligne 1), 0 pour indiquer que la colonne n'est pas triée par ordre croissant.

Avant d'afficher mon sujet comme résolu, une dernière petite question. Tout fonctionne de manière propre, mais serait-il possible de faire en sorte que dans la liste déroulante children, lorsque je change de catégorie dans la liste parente, les éléments de la listes children soient effacés (la liste devienne vierge ou indique l'opération à effectuer: "séléctionner une option" par exemple, plutôt que de m'indiquer que la valeur est "non valide" avec un petit marqueur rouge. Plus précisément lorque par exemple je choisis "mammifère", le temps que je sélectionne mon mammifère dans la liste, l'ancienne option est toujours visible, par exemple serpent, qui n'étant pas un mammifère, indique une entrée non valide.

Promis après j'arrête

Mr JOols

DECALER(A2:A; ;-1) A2:A = ? Je ne sais pas ce que signifie le ":A" même si je vois bien en cliquant sur la formule que ça correspond à l'ensemble de la colonne A

C'est une spécificité de GSheets, j'aurais pu mettre A2:A10 ou A2:A5 mais je ne connais pas à l'avance le nombre d'éléments ! dans ce cas GSheets accepte de mettre A2:A et il se débouille pour prendre les données jusqu'à la dernière

en excel il aurait fallu compte le nombre de cellules remplies et l'introduire dans DECALER

Avant d'afficher mon sujet comme résolu, une dernière petite question. Tout fonctionne de manière propre, mais serait-il possible de faire en sorte que dans la liste déroulante children, lorsque je change de catégorie dans la liste parente, les éléments de la listes children soient effacés (la liste devienne vierge ou indique l'opération à effectuer: "séléctionner une option" par exemple, plutôt que de m'indiquer que la valeur est "non valide" avec un petit marqueur rouge. Plus précisément lorque par exemple je choisis "mammifère", le temps que je sélectionne mon mammifère dans la liste, l'ancienne option est toujours visible, par exemple serpent, qui n'étant pas un mammifère, indique une entrée non valide.

Il faut donc faire une macro pour cela ... si tu es ok (cela complique), je te le fais dans la matinée.

"Il faut donc faire une macro pour cela ... si tu es ok (cela complique), je te le fais dans la matinée".

Si ce n'est pas trop chronophage, ce serait super. J'espère pouvoir comprendre un minimum, pour pouvoir faire les manipulations par moi même à l'avenir, car j'avoue que le langage de macro et de programmation, même basique, reste assez flou pour moi.
Merci encore pour tes explications.
function onEdit(event){
  var f = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if ((r.getA1Notation() == 'B2') && (f.getName().toString() == 'Test Animaux')){
    f.getRange('B4').setValue('')
  }
}

mis dans le fichier

Wow... Génial. En plus j'arrive à comprendre (à peu près) la macro. Je vais donc pouvoir mettre mon sujet en résolu, et me mettre à bosser.

En te remerciant infiniment !

Rechercher des sujets similaires à "liste deroulante variable faisable"