Double liste déroulante liée à un tableau

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.

17stefdiet.xlsm (50.31 Ko)

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

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.

11stefdietv1.xlsm (54.51 Ko)

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

Boisgontier

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.

Bonjour,

une autre façon ....

21stefdiet-v1.xlsm (55.42 Ko)

Crdlmt

Merci DjiDji59430, c'est exactement ce que je voulais. Je vais essayer de comprendre le code pour les colonnes suivantes. Merci à tous les deux.

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.

pour ajouter un element, çc se fait dans la bdaliment

et ça fonctionne

13stefdiet-v1.xlsm (55.73 Ko)

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)
10stefdietv1-01.xlsm (68.08 Ko)

Re

Effectivement!

8stefdiet-v2.xlsm (55.92 Ko)

Crdlmt

Merci DjiDji59430,

c'est vraiment sympa car moi je galérais. lol

Encore merci et bonne soirée à toi.

Rechercher des sujets similaires à "double liste deroulante liee tableau"