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 !
 

Pirlouit85

XLDnaute Nouveau
J'ai ajouté quelques ListBox liées avec votre code.
Mais dans 2 listbox j'ai (vide) qui apparaît en première ligne alors qu'aucune cellule n'est vide !
Je n'arrive pas à voir d'où ça peut provenir. Une idée
 

Pièces jointes

  • SujCBxPirlouit85.xlsm
    88.5 KB · Affichages: 2

Pirlouit85

XLDnaute Nouveau
Ca ne marche plus !!!!????
Dans la procédure Sub CombinTConsultOU(TConsult() j'ai l'erreur : l'indice n'appartient pas à la sélection sur :
On Error Resume Next: LMnO = LBound(TConsult): LMxO = UBound(TConsult)
Pourtant le On error resume next devrait me faire passer à la ligne suivante ???
Que se passe-t-il ? Je cherche en vain depuis 1 heure...
 

Pièces jointes

  • SujCBxPirlouit85.xlsm
    91.5 KB · Affichages: 1

Pirlouit85

XLDnaute Nouveau
Ok
Les données s’arrêtent à 24 mais il regroupe toutes les lignes vides jusqu’à la fin du tableau mais effectivement c’est un choix possible.
Autre question : l’extraction des données correspondant aux critères sélectionnés pourrait se faire par Données Avancée via VBA ou une autre solution vous paraît plus judicieuse ?
Merci
 

Pirlouit85

XLDnaute Nouveau
J’ai une dernière question : est-il possible de conjuguer les ListBox avec des cases à cocher ? Une case à cocher par verbe soit une trentaine de cases.
Exemple : je fais une case à cocher pour le verbe diriger qui peut se trouver sur plusieurs colonnes et automatiquement les ListBox sont filtrés en fonction de ce choix et inversement et les autres cases à cocher disparaissent toujours en fonction de ce choix ?
Merci encore pour tout
 

Dranreb

XLDnaute Barbatruc
Il devrait être possible de constituer une liste de numéros de lignes où une colonne est renseignée ni 0 ni FAUX. La Function ListeVrais ou la Sub CréerListeVrais pourrait servir en dernier dans une Sub de quelques Lignes :
VB:
Function TLgnRensVrai(ByVal RngCol As Range) As Long()
   Dim TCol(), L As Long, TConsult() As Boolean
   TCol = RngCol.Value: ReDim TConsult(1 To UBound(TCol, 1))
   For L = 1 To UBound(TConsult): TConsult(L) = TCol(L, 1): Next L
   CréerListeVrais TLgnRensVrai, TConsult
   End Function
Après pour réduire la liste courante des numéros de lignes TLgn à celle contenant celles d'un TLgnX il y aurait If IlEnResteFitrés(TLgn, TConsult(TLgnX)) Then
 
Dernière édition:

Pirlouit85

XLDnaute Nouveau
Merci pour votre retour mais j'ai un peu de mal à comprendre comment faire.
Vous serait-il possible de faire un exemple sur mon fichier joint ?
Sinon de m'éclairer sur constituer une liste de numéros de lignes où une colonne est renseignée ni 0 ni FAUX ?
Mille mercis
 

Pièces jointes

  • SujCBxPirlouit85.xlsm
    86.6 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Les données ne se présentent pas comme je le croyais, à raison d'une colonne par CheckBox (J'utilise Ckx comme trigramme préfixe de ce type de contrôle, Et puisque j'en parle, les ListBox c'est LBx, pas ZlListe, et le CommandButton CBn, pas Bt)
Ce ne sont pas des Ckx qu'il vous faut mais encore une LBx, mais en utilisant cette fois la Function SujMultiCol pour en constituer le sujet.
 

Pirlouit85

XLDnaute Nouveau
Oui vous avez raison pour le nommage mais ce sont de vieilles habitudes...
Je ne comprends pas : Qu'est ce que vous attendez pour couvrir d'un ListObject vos données ?
Je vous joins le fichier sous un autre nom.
Et je me penche sur la fonction SujMultiCol pour voir si c'est jouable.
Merci
 

Pièces jointes

  • SujCBxPirlouit85-2.xlsm
    90.4 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Pour ajouter un ListObject à la collection ListObjects, sélectionnez la plage, menu Accueil, groupe Styles, commande Mettre sous forme de tableau
Vous n'avez pas prévu de procédure d'extraction ?
En voici un modèle possible :
VB:
Private Sub CBnExtraire_Click()
   Dim TDon(), LD As Long, TRés(), LR As Long, C As Integer
   TDon = RngDon.Value
   ReDim TRés(1 To UBound(TLgn), 1 To UBound(TDon, 2))
   For LR = 1 To UBound(TRés, 1)
      LD = TLgn(LR)
      For C = 1 To UBound(TRés, 2)
         TRés(LR, C) = TDon(LD, C)
         Next C, LR
      WshExtract.[2:1000000].ClearContents
      WshExtract.[A2].Resize(UBound(TRés, 1), UBound(TRés, 2)).Value = TRés
   End Sub
 

Pirlouit85

XLDnaute Nouveau
Merci et c'est vrai que ça facilite certains calculs notamment matriciels.
Merci pour l'extraction : c'est beaucoup plus court que ce que j'essaye de mettre en place.
Pour la LBx multicolonnes, je ne pense pas que ça puisse répondre à ma demande.
Si je résume, voici ce que doit faire le formulaire multicritères :

tout est interdépendant exactement selon l'action des filtres d'un tableau excel.

L'ordre de sélection des critères peut être différent:
Par exemple avec une sélection dans l'ordre:

1. Cg: 2 et 3
2. Domaine : x, y et z (x,y et z possible seulement si correspondent au critère précédent 2 et 3)
3. libellé fonction : a, b, c,d (a,b,c,d possibles seulement si correspondent aux modalités des critères précédents 1. et 2.)
4. verbes...seuls les verbes correspondants aux modalités des critères précédents choisis (1.2.3.) pourront être sélectionnés

Autre exemple si un seul verbe est choisi, seuls les domaines, libellés fonctions, cg, cp etc....correspondant au verbe choisi pourront être sélectionnés

Vraiment complexe : je réfléchis aussi à une autre présentation...
 

Statistiques des forums

Discussions
312 046
Messages
2 084 839
Membres
102 686
dernier inscrit
Franck6950