Filtre élaboré dans une combox à partir d'une autre

oxydedefer

XLDnaute Nouveau
Bonjour , voilà j'ai un problème en VBA ,je vous explique :
J'ai une feuilles avec des données , j'ai une première combobox avec les différent arguments , après dans une autre combobox je veux mettre si argument1 est choisi il va y apparaitre tout les catégori de cette argument (d'ou le concepte du filtre élaboré) , Mais j'ai vu déjà en faisant mes petite recherche un autre moyen :

Dim DernLigne As Long
Dim i As Integer
Worksheets("Feuil2").Activate
DernLigne = Range("A" & Rows.Count).End(xlUp).Row
If ComboBoxTraitement.Value = "Consultations" Then
For i = 2 To DernLigne
If Cells(i, 1) = "Consultation" Then ComboBox1.AddItem Cells(i, 1)
Next i
End If

le problème il le met pas dans la seconde combo :confused:, mon projet est au stade embryonnaire donc .... ;)
En vous remerciant déjà pour vos réponse !! :eek:
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Filtre élaboré dans une combox à partir d'une autre

Bonsoir

Ci dessous un code à tester
Code:
Private Sub ComboBoxTraitement_Click()
Dim DernLigne As Long
Dim i As Integer
If ComboBoxTraitement.ListIndex = -1 Then Exit Sub
With Worksheets("Feuil2")
ComboBox1.Clear
DernLigne = .Range("A" & .Rows.Count).End(xlUp).Row

    For i = 2 To DernLigne
    If .Cells(i, 1) = ComboBoxTraitement Then ComboBox1.AddItem .Cells(i, 2)
    Next i

  End With
End Sub

JP
 
Dernière édition:

oxydedefer

XLDnaute Nouveau
Re : Filtre élaboré dans une combox à partir d'une autre

j'ai essayer comme ceci mais il les ajoute les un à la suite des autres:
Code:
    For i = 2 To DernLigne
    If .Cells(i, 1) = "Consultations" Then ComboBox1.AddItem .Cells(i, 2)
    

    If .Cells(i, 1) = "Extraction" Then ComboBox1.AddItem .Cells(i, 2)
j'ai essayer avec des elseIf et bug a la compilation :s .
Par la suite j'aimerai bien imbriqué d 'autre condition (du style si la personne a plus ou moins de 18 ans).
 

jp14

XLDnaute Barbatruc
Re : Filtre élaboré dans une combox à partir d'une autre

Bonjour

Merci JP , en effet cela fonctionne pour le premier argument mais pas dans les autres
comme traitement préventif etc.
A priori c'est normal, il n'y a pas de "traitement préventif " dans la colonne A de la feuil2

Ci dessous un code pour afficher uniquement les données présentent dans la colonne "A", sans doublons et triées.

Code:
Private Sub UserForm_Initialize()
 

Call RempListCombo(ComboBoxTraitement, "Feuil2", "a", True)
 
ComboBoxMetier.AddItem ("")
ComboBoxMetier.AddItem ("dentiste généraliste, médecin-dentiste, médecin spécialiste stomatologie")
ComboBoxMetier.AddItem ("dentiste spécialiste orthodontie")
ComboBoxMetier.AddItem ("dentiste spécialiste parodontologie")
ComboBoxMetier.ListIndex = 0
End Sub

'******************************************
Private Sub RempListCombo(Controlebox As MSForms.Control, Feuil As String, Cola As String, Trier As Boolean)
Dim Col As New Collection
Dim c As Range, sh As Worksheet
Dim Listdata() As String
Dim i As Long
Dim M As Long
Dim N As Long
Dim temp As String

With Worksheets(Feuil)
On Error Resume Next
For Each c In .Range(Cola & "2:" & Cola & .Range(Cola & .Rows.Count).End(xlUp).Row)
    Col.Add c, CStr(c)
Next c

    ReDim Listdata(Col.Count - 1)
For i = 0 To Col.Count - 1
    Listdata(i) = Col(i + 1)
Next i
If Trier = True Then
For N = 0 To UBound(Listdata)
 For M = 0 To UBound(Listdata)
    If Listdata(M) > Listdata(N) Then
       temp = Listdata(N)
       Listdata(N) = Listdata(M)
       Listdata(M) = temp
    End If
 Next M
Next N
End If
Controlebox.Clear
Controlebox.List = Listdata
End With
On Error GoTo 0
End Sub

JP
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz