Problème sur filtre

  • Initiateur de la discussion Initiateur de la discussion Esak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Esak

Guest
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 modification par un modérateur:
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
16
Affichages
505
Réponses
5
Affichages
418
Retour