XL 2019 Filtre multiple

JohnBill

XLDnaute Occasionnel
Bonjour à tous les confinés qui doivent surement comme moi mettre un peu d'ordre dans leurs fichiers excel.
J'aurais une question (surtout à l'intention de Boisgontier car je tente d'utiliser une macro qu'il a publié dans un précédent post), mais que je n'arrive pas à faire fonctionner.
On dirait que l'userform ne s'initialise pas.
Le filtre automatique d'excel étant limité en occurences, j'essaye de faire la même chose à l'aide d'une macro avec listbox et case à cocher pour faire une interro multiple.
Bien entendu, si un autre féru d'excel m'apporte une solution, je suis preneur et le remercie par avance.
Je joint le fichier auquel il manque surement quelque chose.
 

Pièces jointes

  • TestInterroMulti.xlsm
    896.3 KB · Affichages: 13

Pounet95

XLDnaute Occasionnel
Bonjour,
En mettant en commentaire l'appel à la procédure EnteteListBox dans l'évènement Initialize du userform, j'obtiens ceci. Il y a bien les entêtes ???
Capture.PNG
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

Le tableau n'a pas d'en-tete.
J'ai ajouté un autre programme générique: recherche multi-colonnes multi-mots
J'ai le même qui permet les ajouts/modifs.

Il faut 2 secondes au départ pour constituer le dictionnaire des mots -clés .
Ce dictionnaire peut être supprimé.



Boisgontier
 

Pièces jointes

  • APPORTS-PROTIDE-LIPIDE.xlsm
    875.6 KB · Affichages: 5
  • Copie de RechercheMulticolonnesMultiMotsaTableau.xlsm
    913.4 KB · Affichages: 6
Dernière édition:

JohnBill

XLDnaute Occasionnel
Merci à vous deux pour vos réponses rapides.
J'ai effectivement modifié la plage de référence du tableau ( il ne fallait pas inclure les entêtes) et cela fonctionne mais j'ai trois petites questions qui j'espère seront les dernières :
1) Que faut il modifier dans la listbox pour filtrer sur les noms d'artistes ?
2) Faut il modifier la plage de référence du tableau si je rajoute des données ou se modifie t-elle toute seule ?
3) Quelle est la grandeur maximale possible du tableau ?
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
VB:
Dim f, NbCol, NomTableau, TblBD()
Private Sub UserForm_Initialize()
  NomTableau = "Tableau1"
  TblBD = Range(NomTableau).Value
  NbCol = UBound(TblBD, 2)   ' modif
  Set d = CreateObject("scripting.dictionary")
  For i = LBound(TblBD) To UBound(TblBD)
    d(TblBD(i, 2)) = ""
  Next i
  Me.ChoixListBox1.List = d.keys
  EnteteListBox
End Sub

Private Sub ChoixListBox1_change()
  Affiche
End Sub

Sub Affiche()
  Set dchoisis1 = CreateObject("Scripting.Dictionary")
  For i = 0 To Me.ChoixListBox1.ListCount - 1
    If Me.ChoixListBox1.Selected(i) Then dchoisis1(Me.ChoixListBox1.List(i, 0)) = ""
  Next i
  n = 0: Dim Liste()
  For i = LBound(TblBD) To UBound(TblBD)
     tmp = TblBD(i, 2)    'modif
     If (dchoisis1.exists(tmp) Or dchoisis1.Count = 0) Then
         n = n + 1
         ReDim Preserve Liste(1 To NbCol, 1 To n)
         For k = 1 To NbCol
            Liste(k, n) = TblBD(i, k)
         Next k
     End If
  Next i
  If n > 0 Then Me.ListBox1.Column = Liste Else Me.ListBox1.Clear
End Sub


2) Faut il modifier la plage de référence du tableau si je rajoute des données ou se modifie t-elle toute seule ?

Un vrai tableau se modifie tout seul
Le votre n'est PAS un vrai tableau.

Boisgontier
 

Pièces jointes

  • APPORTS-PROTIDE-LIPIDE.xlsm
    901.8 KB · Affichages: 8
Dernière édition:

JohnBill

XLDnaute Occasionnel
Alors là ! Je dis CHAPEAU.
C'est plus que je n'en espérais.
C'est la Nec Plus Ultra des solutions par rapport au filtre automatique d'Excel qui limite le nombre de ligne à afficher.
Je te remercie de ta solution qui a aussi l'avantage de me faire progresser dans mes connaissances en VBA.
:):):)
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 475
Membres
103 553
dernier inscrit
jhnm