Double liste déroulante liée à un tableau Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
S
Shoki
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 16 décembre 2018
Version d'Excel : 2010

Message par Shoki » 16 décembre 2018, 17:42

Bonjour à tous,
je débute sur Excel, j'ai essayé de faire un dossier par moi-même. Mais voilà que je bloque complètement.

Voici mon problème actuel:
Dans la page 'PlanAlim', je voudrai lier deux listes déroulantes à une base de donnés dans la page 'BDAliment'. Ce sont les listes déroulantes 'Famille' et 'Aliment'. Je voudrai que la liste 'Aliment' dépende de la famille d'aliments, donc du choix de la liste 'Famille'. Je voudrai également que les colonnes d'à côté à partir de IG s'affichent automatiquement lorsque l'aliment est choisi. Et que la valeur de celle-ci se modifie suivant la quantité que l'on entrera en donnée dans la colonne correspondante.

Merci à ceux qui voudront bien m'aider car là je galère. :lol:
Stefdiet.xlsm
(50.31 Kio) Téléchargé 11 fois
B
Boisgontierjacques
Membre fidèle
Membre fidèle
Messages : 386
Appréciations reçues : 91
Inscrit le : 5 octobre 2018
Version d'Excel : 2016

Message par Boisgontierjacques » 16 décembre 2018, 18:40

Bonsoir,

cf PJ

Fait avec un pgm générique. On peut définir le nb de niveaux et la zone de saisie

Set zSaisie = Range("B11:C21,B26:C36,B41:C51,B56:C66")
NbNiv = 2
Dim zSaisie, NbNiv
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Set zSaisie = Range("B11:C21,B26:C36,B41:C51,B56:C66")
    NbNiv = 2
    If Not Intersect(zSaisie, Target) Is Nothing And Target.Count = 1 Then
      TblBD = [Tableau1].Value
      Set d1 = CreateObject("Scripting.Dictionary")
      nivCourant = Target.Column - zSaisie.Column + 1
      Dim Tmp(): ReDim Tmp(1 To nivCourant)
      For k = 1 To nivCourant - 1
        Tmp(k) = Target.Offset(, -(nivCourant - k))
      Next k
      For i = 1 To UBound(TblBD)
         témoin = True
         For k = 1 To nivCourant - 1
            If TblBD(i, k) <> Tmp(k) Then témoin = False: Exit For
         Next k
         If témoin Then d1(TblBD(i, nivCourant)) = ""
       Next i
       If d1.Count > 0 Then
           temp = Join(d1.keys, ",")
           Target.Validation.Delete
           If temp <> "" Then Target.Validation.Add xlValidateList, Formula1:=temp
        End If
    End If
 End Sub
Boisgontier
Copie de Copie de Stefdiet-1b-1.xlsm
(56.81 Kio) Téléchargé 9 fois
Modifié en dernier par Boisgontierjacques le 17 décembre 2018, 07:39, modifié 7 fois.
S
Shoki
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 16 décembre 2018
Version d'Excel : 2010

Message par Shoki » 16 décembre 2018, 18:50

Merci mais en fait, il y a une nouvelle liste qui s'est ajouter dans la zone quantité jusqu'à B20 et les listes déroulantes plus bas ne fonctionnent pas. ;)
StefdietV1.xlsm
(54.51 Kio) Téléchargé 6 fois
Modifié en dernier par Shoki le 16 décembre 2018, 19:02, modifié 1 fois.
B
Boisgontierjacques
Membre fidèle
Membre fidèle
Messages : 386
Appréciations reçues : 91
Inscrit le : 5 octobre 2018
Version d'Excel : 2016

Message par Boisgontierjacques » 16 décembre 2018, 18:54

Il faut utiliser Recherchev() ou Equiv()/Index()

Boisgontier
S
Shoki
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 16 décembre 2018
Version d'Excel : 2010

Message par Shoki » 16 décembre 2018, 19:05

Ah en fait, le problème est la quantité c'est l'utilisateur qui l'a met. La 1è colonne où les chiffres doivent apparaître tout seul, est la colonne F nommée IG.
Merci d'avance. ;)
Avatar du membre
DjiDji59430
Membre impliqué
Membre impliqué
Messages : 2'119
Appréciations reçues : 71
Inscrit le : 18 avril 2015
Version d'Excel : 2019 FR

Message par DjiDji59430 » 16 décembre 2018, 19:08

Bonjour,

une autre façon ....
Stefdiet_v1.xlsm
(55.42 Kio) Téléchargé 16 fois

Crdlmt
S
Shoki
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 16 décembre 2018
Version d'Excel : 2010

Message par Shoki » 16 décembre 2018, 19:14

Merci DjiDji59430, c'est exactement ce que je voulais. Je vais essayer de comprendre le code pour les colonnes suivantes. Merci à tous les deux.;)
S
Shoki
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 16 décembre 2018
Version d'Excel : 2010

Message par Shoki » 16 décembre 2018, 19:41

J'ai juste un p'tit souci. Lorsque je rajoute un aliment à mon tableau la liste déroulante ne le tient pas en compte.
Merci d'avance. ;)
Avatar du membre
DjiDji59430
Membre impliqué
Membre impliqué
Messages : 2'119
Appréciations reçues : 71
Inscrit le : 18 avril 2015
Version d'Excel : 2019 FR

Message par DjiDji59430 » 16 décembre 2018, 20:00

pour ajouter un element, çc se fait dans la bdaliment
et ça fonctionne
Stefdiet_v1.xlsm
(55.73 Kio) Téléchargé 10 fois
S
Shoki
Nouveau venu
Nouveau venu
Messages : 7
Inscrit le : 16 décembre 2018
Version d'Excel : 2010

Message par Shoki » 16 décembre 2018, 20:21

En fait, ça se rajouter bien dans BDaliment, mais ça ne se rajoute pas dans la liste déroulante.
Et j'ai compris pour les formules pour les cellules à côté. Mais à partir de la 3è ligne, ça ne fonctionne plus.
Merci d'avance. ;)

Edit:Oups, il fallait mettre la quantité pour que ça s'affiche. Désolé.
Edit 2: en fait la liste déroulante ne prend en compte que les deux premiers aliments de chaque famille.
Je suppose que c'est le code la liste qui pose problème. Mais je suis incapable de voir où est l'erreur.
=DECALER(BDPlanAlim!$D$2;0;EQUIV(PlanAlim!$B28;BDPlanAlim!$1:$1;0)-4;SOMMEPROD((BDPlanAlim!$D:$D<>"")*(ESTTEXTE(BDPlanAlim!$D:$D)))-1;1)
StefdietV1.01.xlsm
(68.08 Kio) Téléchargé 6 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message