XL 2019 ListBox liées

Pirlouit85

XLDnaute Nouveau
Bonjour,
J'ai 5 listbox avec plusieurs choix possibles dans chacune.
Quand je sélectionne des items dans une listbox, toutes les autres listbox doivent s'actualiser en fonction du choix précédent et ainsi de suite.
Ex : je sélectionne un domaine ds une listbox et seules les fonctions de ce domaine s'affichent dans la seconde et seules les classes de ce domaine s'affichent dans la 3ème etc.
Et je peux commencer par n'importe quelle listbox.
Toutes les listbox proviennent de champs d'une même BDD qui sont initialisées au démarrage du formulaire.

En résumé, j'aimerais reproduire dans un formulaire ce que l'on peut faire avec Données Filtrer

J'ai fait le formulaire et les listbox initialisées mais c'est ensuite que ça se complique...
Si vous avez déjà fait ce genre de choses, je suis preneur.
Merci à tous !
 

Dranreb

XLDnaute Barbatruc
Pour la LBx multicolonnes, je ne pense pas que ça puisse répondre à ma demande.
Pourquoi ? Cocher des cases ou des lignes d'une LBx, je ne vois pas de différence.
Et puis je n'ai pas parlé de LBx multicolonnes, j'ai parlé d'une LBx à une seule colonne dont la liste, et donc le sujet, était construit à partir de plusieurs colonnes de la base, une colonne de début et une de fin.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Information.
J'ai fait l'essai en ajoutant une LBxVrbAct et les sujets SujBdDVrbAct et SujFltVrbAct et dans la UserForm_Initialize :
VB:
SujBdDVrbAct = SujMultiCol(RngDon.Columns("BL:CA"), 1, 16): LBxVrbAct.List = SujBdDVrbAct(0)
Ça s'intègre au reste traité pareillement.
Attention: ne changez le contenu d'une liste qu'en changeant le sujet et en réaffectant son élément 0 sinon ça ne marchera plus. Inutile de réexécuter la UserForm_Initialize pour réinitialiser les listes, il y avait une Private Sub CBnRecharger_Click() en commentaire (faute du CommandButton qui n'existait pas) qui était faite pour ça.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il serait possible de faire en sorte que la liste d'une ListBox dont on change les sélections ne soit plus modifiée, comme le fait mon objet ComboBoxLiées pour les ComboBox dont il a la charge. Un des avantages c'est qu'il conserverait aussi ses sélections visibles. Ce serait tout particulièrement utile pour celles de mots clés, qui ne sont de toute façon pas réduites actuellement aux seuls choisis, puisque les lignes retenues en comporte aussi d'autres, ce qui ne permet plus de voir ceux qui ont été choisis. Mais ça implique de passer la vitesse supérieure et de garder trace de l'ordre des ListBox dans lesquels les sélections ont été faites. Je pourrais vous écrire un module classe de service ListBoxLiées qui utiliserait un ListBoxMmbr.
La programmation dans l'UserForm pourrait s'en trouver grandement simplifiée.
Est-ce que ça vous intéresserait ?
Remarque: je pense je ne reproduirais plus les anciens dispositifs lourds qui permettent encore aujourd'hui de baser le ComboBoxLiées sur une plage n'ayant pas fait l'objet d'une mise sous forme de tableau. Le ListObject serait donc obligatoire.
 
Dernière édition:

Statistiques des forums

Discussions
312 103
Messages
2 085 310
Membres
102 859
dernier inscrit
Diallokass