Bonjour
Voici le code que j'utilise pour remplir mes combobox en cascade, mais je n'arrive pas à trier le combo initial, soit le 3.
Toute aide sera appréciée.
J'aurais préféré utilisé la méthode collection aussi, mais je ne sais pas comment elle fonctionne.
un coup de main est bienvenue.
Merci
Voici le code que j'utilise pour remplir mes combobox en cascade, mais je n'arrive pas à trier le combo initial, soit le 3.
Toute aide sera appréciée.
J'aurais préféré utilisé la méthode collection aussi, mais je ne sais pas comment elle fonctionne.
un coup de main est bienvenue.
Merci
Code:
Option Explicit
Dim Ws As Worksheet
Dim NbLignes As Integer
Private Sub UserForm_Initialize()
'Définit la feuille contenant les données
Set Ws = Worksheets("Empl")
'Définit le nombre de lignes dans la colonne A
NbLignes = Ws.Range("A65536").End(xlUp).Row
'Remplissage du ComboBox3
Alim_Combo 3
End Sub
Private Sub ComboBox3_Change()
'Remplissage Combo4
Alim_Combo 4, ComboBox3.Value
End Sub
'Procédure pour alimenter les ComboBox
Private Sub Alim_Combo(CbxIndex As Integer, Optional Cible As Variant)
Dim j As Integer
Dim Obj As Control
'Définit le ComboBox à remplir
Set Obj = Me.Controls("ComboBox" & CbxIndex)
'Supprime les anciennes données
Obj.Clear
'alimente le Combobox initial (Combobox3)
If CbxIndex = 3 Then
'Boucle sur les lignes de la colonne A (à partir de la 2eme ligne)
For j = 8 To NbLignes
Obj = Ws.Range("G" & j)
'Remplit le ComboBox sans doublons
If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("G" & j)
Next j
Else
For j = 8 To NbLignes
If Ws.Range("G" & j).Offset(0, CbxIndex - 4) = Cible Then
Obj = Ws.Range("G" & j).Offset(0, CbxIndex - 7)
If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("G" & j).Offset(0, CbxIndex - 7)
End If
Next j
End If
'Enlève la sélection dans le ComboBox
Obj.ListIndex = -1
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub