Menu déroulant dépendant

Florian95

XLDnaute Nouveau
Bonjour à tous,


je souhaite créer un filtre dépendant

- choix 1 : menu déroulant 1
- choix 2 : menu déroulant 2


La difficulté repose sur deux points :

- Le menu déroulant du choix 1 (feuille "choix" est basée sur la Liste 1 de la feuille "BDD") et l'objectif est d'obtenir un menu déroulant ne presentant aucune répétition de valeur + la liste des choix 1 n'est pas limitée et le menu devra prendre en compte de future nouvelle valeurs dans la liste 1

- le menu déroulant du choix 2 dépend du choix 1. Le choix 2 possède comme source la liste 2 de la feuille BDD. Idem de nouvelles valeurs viendrons compléter cette liste !

Macro, VBA, fonction : je suis prêt à tout entendre !
J'espère avoir été clair au possible et votre aide va m'être grandement précieuse parce qu'à ce point je suis dans l'impasse !
merci d'avance.
 

Pièces jointes

  • Filtre.xls
    17.5 KB · Affichages: 67
  • Filtre.xls
    17.5 KB · Affichages: 74
  • Filtre.xls
    17.5 KB · Affichages: 67

Dranreb

XLDnaute Barbatruc
Re : Menu déroulant dépendant

Glissez déplacez le module MSansDoublon vers votre projet VBA ainsi que le module de classe TableIndex
Inspirez vous des exemples d'instructions non compilées en têtes de MSansDoublon: la 1ère paire au Userform_Initialize, les suivantes aux ComboBox1_Change

Remarque : Vous n'avez pas parlé d'userform de votre coté jusqu'à présent. C'est pourquoi je joins une autre version très proche de ce module mais qui fabrique, elle, un dictionnaire arborescent. C'est nécessaire pour retrouver une clé dans les cas de figures où on ne dispose pas directement du numéro de ligne - 1, correspondant au choix effectué, rendu par les Combobox. C'est le cas des listes de validations.
À +
 

Pièces jointes

  • SansDoublon.xls
    308 KB · Affichages: 76
  • SansDoublon.xls
    308 KB · Affichages: 104
  • SansDoublon.xls
    308 KB · Affichages: 72
  • ValidDicArb2.xls
    108 KB · Affichages: 63
  • ValidDicArb2.xls
    108 KB · Affichages: 75
  • ValidDicArb2.xls
    108 KB · Affichages: 72
Dernière édition:

Florian95

XLDnaute Nouveau
Re : Menu déroulant dépendant

Merci pour cette nouvelle réponse Dranreb !

Après quelques noeuds au cerveau voici ce que j'obtiens :

Private Sub Impression_Initialize()
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In [NomDR]
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
Next c
Me.cselectdir.List = MonDico.items
End Sub

Private Sub cselectdir_Change()
Me.cselectsite.Clear
For Each c In [NomDR]
If If CDate(c) = CDate(Me.cselectdir) Then
Me.cselectsite.AddItem c.Offset(0, 1)
End If
Next c
End Sub


Maintenant il ne me reste plus qu'un seul petit pb :
CDate(c) = CDate(Me.cselectdir)
en effet mes données sont du texte et je ne peux pas comparer avec la fonction c'est date.
Est ce que vous sauriez comment comparer les données textuelles ?

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Menu déroulant dépendant

Je déteste les liaisons tardives avec des objets banalisés et les variables non déclarées.
Ajoutez la référence "Microsoft Scripting runtime". Elle contient tout ce qu'il faut pour déclarer et utiliser des objets Dictionary (ce type d'objet est alors reconnu) sans être obligé d'utiliser CreateObject, cette épouvantable béquille inconfortable.

P.S. Joignez ce que vous avez fait, que je sache enfin s'il s'agit d'userform ou de listes de validations, et qu'est-ce que les choix devront entrainer on permettre ensuite ?

À +
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 984
Membres
103 998
dernier inscrit
Gotteland