Problème sur filtre

Esak

XLDnaute Nouveau
Bonjour, j'ai poster il y a quelques jours un topic concernant une interface de recherche sur une base de données. J'ai créer l'Userform sans problème et j'ai bidouiller un code VBA
Mais voila j'ai un problème:

Quand je choisis un paramètre dans une liste déroulante de ma userform et que je clique sur le bouton " rechercher ", il me filtre toute ma base de données( toutes les colonnes, mais j'aimerais qu'il me filtre juste la colonne sélectionnée.

Je pense qu'il faut séparer le code sur chaque combobox, mais mes compétences en programmation sont très limitée.

Merci d'avance.
 
Dernière édition:

Esak

XLDnaute Nouveau
Re : Problème sur filtre

Voici le code:

Code:
Private Sub CommandButton1_Click()

ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=1, Criteria1:=ComboBox1.Value
ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=2, Criteria1:=ComboBox2.Value
ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=3, Criteria1:=ComboBox3.Value
ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=4, Criteria1:=ComboBox4.Value
ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=5, Criteria1:=ComboBox5.Value

Unload Me

End Sub

Private Sub UserForm_Initialize()

ActiveSheet.Range("$A$3:$e$200").AutoFilter
    Set dico = CreateObject("Scripting.dictionary")
    Set dico1 = CreateObject("Scripting.dictionary")
    Set dico2 = CreateObject("Scripting.dictionary")
    Set dico3 = CreateObject("Scripting.dictionary")
    Set dico4 = CreateObject("Scripting.dictionary")
    
For n = 2 To Range("e65536").End(xlUp).Row

a = Range("a" & n)
b = Range("b" & n)
c = Range("c" & n)
d = Range("d" & n)
e = Range("e" & n)

dico(a) = 1
dico1(b) = 1
dico2(c) = 1
dico3(d) = 1
dico4(e) = 1

Next
ComboBox1.List = dico.keys
ComboBox2.List = dico1.keys
ComboBox3.List = dico2.keys
ComboBox4.List = dico3.keys
ComboBox5.List = dico4.keys

End Sub
 

Esak

XLDnaute Nouveau
Re : Problème sur filtre

Bon j'ai bien avancé sur le codage, mais j'ai un problème.

J'aimerais commencer le filtrage à la colonne 2 et ne pas prendre en compte la colonne 3. Merci pour l'aide.

Code:
Private Sub CommandButton1_Click()
If ComboBox1.ListIndex > -1 Then ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=1, Criteria1:=ComboBox1.Value
If ComboBox2.ListIndex > -1 Then ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=2, Criteria1:=ComboBox2.Value
If ComboBox3.ListIndex > -1 Then ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=3, Criteria1:=ComboBox3.Value
If ComboBox4.ListIndex > -1 Then ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=4, Criteria1:=ComboBox4.Value
If ComboBox5.ListIndex > -1 Then ActiveSheet.Range("$A$3:$e$200").AutoFilter Field:=5, Criteria1:=ComboBox5.Value

'Unload Me

End Sub

Private Sub CommandButton2_Click()
Dim I As Byte
  For I = 1 To 5
    Me.Controls("ComboBox" & I).ListIndex = -1
  Next I
  On Error Resume Next
  Sheets("bras").ShowAllData

End Sub

Private Sub UserForm_Initialize()
Dim Lg As Long
Dim I As Long
Dim J As Integer

    ActiveSheet.Range("$A$3:$e$200").AutoFilter

  Lg = Range("e65536").End(xlUp).Row
  For J = 1 To 5
    For I = 4 To Lg
      Me.Controls("ComboBox" & J) = Cells(I, J)
      If Me.Controls("ComboBox" & J).ListIndex = -1 Then
        Me.Controls("ComboBox" & J).AddItem Cells(I, J)
      End If
    Next I
    Me.Controls("ComboBox" & J).ListIndex = -1
  Next J
  


End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert