Filtre multi colonnes et multi critères

Bonjour à tous !

Je souhaite choisir une donnée de ma base de données Feuille(« DB ») en réalisant plusieurs filtres graces à des combobox. J’ai récupérer le programme de Jacques Boisgontier ( Filtre Multi Colonnes avec 3 conditions) et je n’arrive pas a l’adapter.
Je ne peux meme pas regarder d’où viens mon problème car lorsque j’éxécute, le programme me surligne la partie de code qui affiche le UserForm…

Voici le code de mon UserForm :

Dim DaTas_DB(), ColVisu(), Ncol
Private Sub UserForm_Initialize()
   Set f = Sheets("DB")
   DaTas_DB = f.Range("A5:H" & f.[A65000].End(xlUp).Row).Value
   Ncol = UBound(DaTas_DB, 2)
   '--- combobox Types de données trié
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   For i = LBound(DaTas_DB) To UBound(DaTas_DB)
    d(DaTas_DB(i, 6)) = ""
   Next i
   temp = d.keys
   Tri temp, LBound(temp), UBound(temp)
   Me.ComboBox_TyPe.List = temp
   Me.ComboBox_TyPe.ListIndex = 0
   '--- combobox profession trié
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   For i = LBound(DaTas_DB) To UBound(DaTas_DB)
    d(DaTas_DB(i, 7)) = ""
   Next i
   temp = d.keys
   Me.ComboBox_Géo.List = temp
   Me.ComboBox_Géo.ListIndex = 0
   '--- combobox année
   Set d = CreateObject("Scripting.Dictionary")
   d("*") = ""
   TriMult DaTas_DB, LBound(DaTas_DB), UBound(DaTas_DB), 3
   For i = LBound(DaTas_DB) To UBound(DaTas_DB)
    d(DaTas_DB(DaTas_DB(i, 8))) = ""
   Next i
   temp = d.keys
   Me.ComboBoxRech.List = temp
   Me.ComboBoxRech.ListIndex = 0
  Affiche
End Sub

Private Sub ComboBox_TyPe_click()
   Affiche
End Sub

Private Sub ComboBox_Géo_click()
   Affiche
End Sub

Private Sub ComboboxRech_Change()
   Affiche
End Sub

Sub Affiche()
  Dim Tbl()
  ville = Me.ComboBox_TyPe
  profession = Me.ComboBox_Géo
  an = Me.ComboBoxRech
  n = 0
  For i = 1 To UBound(DaTas_DB)
    If DaTas_DB(i, 6) Like ville And DaTas_DB(i, 7) Like profession And (Year(DaTas_DB(i, 3)) = Val(an) Or an = "*") Then
        n = n + 1: ReDim Preserve Tbl(1 To Ncol, 1 To n)
        For k = 1 To Ncol: Tbl(k, n) = DaTas_DB(i, k): Next k
    End If
  Next i
  If n > 0 Then
     Me.ListBox_DaTas.Column = Tbl
     Me.Label3.Caption = Me.ListBox_DaTas.ListCount & " Ligne(s)"
  Else
     Me.ListBox_DaTas.Clear
     Me.Label3.Caption = ""
  End If
End Sub

Private Sub B_Raz_Click()
  Me.ComboBox1 = "*"
  Me.ComboBox2 = "*"
  Me.ComboBox3 = "*"
End Sub
Sub TriMult(a, gauc, droi, ColTri) ' Quick sort
  Ref = a((gauc + droi) \ 2, ColTri)
  g = gauc: d = droi
  Do
    Do While a(g, ColTri) < Ref: g = g + 1: Loop
    Do While Ref < a(d, ColTri): d = d - 1: Loop
    If g <= d Then
      For c = LBound(a, 2) To UBound(a, 2)
        temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
      Next
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call TriMult(a, g, droi, ColTri)
  If gauc < d Then Call TriMult(a, gauc, d, ColTri)
End Sub
Sub Tri(a, gauc, droi) ' Quick sort
   Ref = a((gauc + droi) \ 2)
   g = gauc: d = droi
   Do
     Do While a(g) < Ref: g = g + 1: Loop
     Do While Ref < a(d): d = d - 1: Loop
     If g <= d Then
       temp = a(g): a(g) = a(d): a(d) = temp
       g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)

Unload USF_Choix

End Sub

Je vous joint aussi mon fichier excel (feuille extraction ) :

56calculateur-vba-2.zip (265.28 Ko)

J’espère que j’ai été assez clair et que ce problème n’est pas trop complexe.

Bonne journée a tous et merci d’avance

Bonjour,

J’espère que j’ai été assez clair.

Pas du tout, afin d'obtenir des réponses, plutôt que d'afficher du code, il serait préférable que vous décriviez les actions que vous vous voulez faire.

Cdlt

Bonjour à tous,

Pour un filtre multicritères, il y a un code de Jacques Boisgontier (merci à lui ! ) sur le fichier de ce sujet :

https://forum.excel-pratique.com/excel/filtrer-tableau-excel-a-partir-d-un-textbox-154376

Il fonctionne avec une seule textbox...

Cdlt,

Bonjour et merci pour vos réponses.

Alors pour le code de Jacques Boisgontier, j'ai regarder sur son site et j'ai choisi celui qui était le plus pertinent pour moi (c'est a dire le filtre multicolonnes avec 3 conditions) Je l'ai récupérer et adapter.
Je vais essayer d'être plus clair :
J'ai une donnée qui se trouve dans ma feuille DB, cette donnée est dans un tableau avec 8 colonnes.
Cette donnée a un nom (colonne 8) une origine géographique (colonne 6) et un type (colonne 4). Etant donnée que la base de donnée est trop volumineuse (20.000 lignes) je souhaite faciliter le choix de la donnée avec un "tri" --> On choisit le type de données (matière ou process etc..) cela va afficher que les matières de la DB. Puis on choisit l'origine géographique (Europe ou USA etc...) et cela est le deuxième critère pour réduire encore plus la liste. Pour finir il faut afficher dans la dernière listbox les données qui sont des matières européennes. L'utilisateur n'a plus qu'a cliquer sur la donnée qu'il souhaite pour l'insérer dans un tableau du excel (cela serviras par la suite mais chaque chose en son temps).

J'ai réaliser des modifs et cela a l'air de fonctionner (plus qu'a faire quelques réglages) :

--> Dans la listbox d'affichage il faut que j'affiche toute la ligne du tableau avec des labels pour chaque colonnes.

--> Maintenant il faut que la DB soit sur un autre fichier (externe et ouvert)....

Je ne clore pas encore le sujet si jamais vous avez des solutions pour les deux nouvelles problématiques.

Encore merci pour votre temps.

85calculateur-vba-2.zip (268.98 Ko)
Rechercher des sujets similaires à "filtre multi colonnes criteres"