Liste Dynamique en cascade sans doublon avec ID possible ?

Coucou les gens ...

Cela fait plusieurs jours que je cherche sans trop trouver mon bonheur. J'ai un besoin et j'en appelle a vos connaissances ^^

Je dois pouvoir avoir 3 listes. La première filtre la seconde qui elle même filtre la troisième sans afficher de doublons bien entendu ...

J'ai déjà vu des méthodes avec une liste en ligne au lieu d'une liste en colonne ... mais pas très pratique à mettre à jour ... je suis partit sur une sorte de fonctionnement en mode BDD avec une table par onglet et une colonne par champ...

Mon fichier est simple.

J'ai plusieurs onglets nommés : FAMILLE, VARIETE, PACKAGE

FAMILLE { ID, NOM } --> Chaque Famille a un ID qui a été assigné (ex. 1 ; Pomme / 2 ; Poire / ...)

VARIETE { ID, NOM, ID_FAMILLE(1,1) } --> Chaque Variété a aussi un ID propre ... et chaque Variété est associé à une et UNE seule famille (ex. 1; variete_1; Pomme / 2; variete_1; Pomme / 3, variete_3, Poire / ...)

PACK { ID, NOM, ID_VARIETE(1,n) } --> Un package dispose aussi d'un ID pour chaque en revanche un Pack peut etre associé à une ou plusieurs variétés (ex. 1; toto; 2,5,6,8,10,... / 2; titi; 2,6,9,11,12,...)

J'ai la formule suivante pour récupérer la liste des valeurs issues de la table FAMILLE

=DECALER(FAMILLE!$B$2;;;NBVAL(FAMILLE!$B:$B))

Ensuite dans une cellule test je récupérer l'ID de la valeur selectionnée par la formule suivante :

=DECALER(FAMILLE!$A$1;EQUIV($B$3;FAMILLE!$B:$B;0)-1;0) // Ici $B$3 correspond a la cellule ou se situe le menu déroulant.

J'ai ensuite essayé de créé des "nom" avec des formules mélangeant des DECALER, INDEX, EQUIV, NB.VAL ... mais rien ne marche :(

L'idée serait de pouvoir a partir d'une formule récupérer la liste des VARIETES dont l'ID_FAMILLE a été selectionné dans la précédente liste

Si je peux eviter de trier l'onglet VARIETE sur la colonne ID_Famille cela m'arrangerait mais je pense que cela ne sera pas possible car j'ai cru comprendre que cela pourrait etre une piste ...

Mon impératif est d'utiliser Excel ... j'ai en parallèle tester de faire tout ça en VBA ... alors oui ca marche avec la création d'un FORM ... mais ca me plait pas je voudrais tout avoir dans une feuille Excel pas dans un FORM. Après s'il faut un peu de VBA je suis pas contre ^^ Mais j'ai besoin de devoir avoir mes menus déroulants dans ma feuille Excel.

Merci pour votre aide ....

PS : Je pense que je vais finir par faire tout ça en PHP ^^ ... mais la je dois rester impérativement dans Excel pour gérer les commandes :p

Coucou les gens ...

Mon fichier est simple.
On n'en doute pas, mais si il était visible !
Crdlmt
3gestionstock.xlsx (122.38 Ko)

En effet j'ai eu un bug technique sur mon poste j'ai pas pu uploader correctement le fichier :( ... je viens de m'en apercevoir ;) Le voilà !

D'avance merci pour votre aide ;)

Re

J'ai commencé, mais comme il n'y a pas d'explication pour les autres cellules, j'attends.

Il est ou, l'onglet package ??

Crdlmt

Déjà un immense merci pour ta réactivité !

Pour l'onglet PACK je voulais trouver un moyen d'expliquer simplement avec des termes court ... mais en gros dans le fichier PACK = PORTE_GREFFE

J'avais en // du site tester de mon côté différentes formules et en effet je suis arrivé à la meme conclusion que toi c'est de créer une liste dynamique de valeur et de faire pointer la validation par liste sur cette dernière...

Comme j'ai plusieurs validation de liste possible pour la meme valeur (en gros une ligne égale une commande et donc on peut choisir différente famille) j'ai voulu partir sur la création dynamique d'autant de colonne que de commande possible (onglet LISTE) et avec l'outil poignée je voulais glisser la formule matricielle pour eviter d'avoir à tout taper a la main ... et la j'ai un soucis très curieux

Formule qui marche :

=PETITE.VALEUR(SI(INDIRECT(ADRESSE(4;13;;;"COMMANDE"))=id_famille_v;LIGNE(id_famille_v)-MIN(LIGNE(VARIETE!$C$2))+1;"");LIGNES($B$12:B12))
(celle ci est inclus dans ma formule pour afficher la liste)
=SIERREUR(INDEX(variete;PETITE.VALEUR(SI(INDIRECT(ADRESSE(4;13;;;"COMMANDE"))=id_famille_v;LIGNE(id_famille_v)-MIN(LIGNE(VARIETE!$C$2))+1;"");LIGNES(A$3:A3)));"")

Avec la formule PETITE.VALEUR + INDIRECT + ADRESSE ... si je change la valeur 4 en COLONNE()+2 (pour avoir le numéro de la colonne de la formule et ajouter 2) cela ne marche plus ... j'aurais bien voulu comprendre pourquoi. Quand je vais juste = COLONNE()+2 ca me renvoi bien 4 ... Quand je fais ADRESSE (COLONNE()+2);13;;;"COMMANDE") ca me retourne bien COMMANDE!$M$4 et quand je rajoute la formule INDIRECT ca me renvoi bien la bonne valeur de la cellule ... mais quand j'intègre le tout dans ma formule PETITE.VALEUR ca bug alors que si je rentre la valeur en "dur" ca passe.

Si j'arrive à trouver la solution j'ai tout trouvé et je posterais pour les autres le fichier mise à jour et terminé !

Donc si qq'un à une idée pour m'expliquer pourquoi la formule COLONNE() fait planter la formule PETITE.VALEUR. ?

Merci pour ton aide djidji :)

2gestionstock.xlsx (128.44 Ko)

Une proposition :

25gestionstock-v3.xlsx (130.54 Ko)

Djidji t'es un chef ... j'avais en effet de mon côté pensé à cette solution ... tu as confirmé ma formule (j'avais une erreur mais je trouvais pas ... c'était encore le Ctrl+shift+entrée pour valider la formule matricielle :p)

Bon now j'attaque la 3e cascade ... et pas la plus simple ... celle ou donc le PACK (aussi appelé PORTE_GREFFE dans mon fichier) peut etre associé à 1,n variété ...

Je vais creuser voir s'il existe des solutions pour peut etre splitter la colonne en autant de colonne que de valeur et d'aller regarder dans chacune d'elle ... une solution peut etre pour faire un "like" ou qqchose dans le genre ... Ou sinon tant pis ... dupplier les portes greffes autant de fois qu'elle existe dans les variétés ... ce sera je pense plus simple meme si plus moche a mettre à jour mais on verra ;)

En tout cas grâce à toi j'avance ! Un grand grand merci ;)

Première piste de reflexion de mon côté ...

Reprendre ce que tu avais fait ... mais en faisant un "*" & $B$2 & "*" ... pour en théorie permettre d'aller chercher dans la cellule Cn si la valeur 5 par exemple est contenu dans la cellule ... ca marche mais le 5 est vu plein de fois car on a 5, mais aussi 15 ou 25 ou 355 bref ... j'ai ensuite forcé la recherche avec "*" & $B$2 & ",*" ... pareil bizzarement j'ai l'impression que ca change rien ...

En gros ma cellule est composé de valeurs séparées par une virgule (2,18,52,56,98,102,) j'ai besoin de voir donc avec le EQUIV si la valeur 5 est présente ... et pas 52 ou 56 ... juste 5 :)

Je continue à creuser

Rechercher des sujets similaires à "liste dynamique cascade doublon possible"