1 pièce(s) jointe(s)
Alimentation d'un combobox
Bonjour à tous,
j'aimerais alimenter un combobox2 en fonction du combobox1 sachant que le combobox2 change en fonction de chaque résultat du premier.
le problème que je rencontre est juste en dernière partie. il ne veut pas prendre ma ligne avec derlign etc. et je ne comprend pourquoi :(
Si besoin je peux aussi mettre mon fichier excel
voilà mon code
Merci de votre aide
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Option Explicit
Dim ws As Worksheet
Dim NbLignes As Integer
Dim derlign As Integer
Private Sub UserForm_Initialize()
'Définit la feuille contenant les données
Set ws = Worksheets("Feuil3")
'Définit le nombre de lignes dans la colonne A
NbLignes = ws.Range("A65536").End(xlUp).Row
'Remplissage du ComboBox1
Alim_Combo 1
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 (Combobox1)
If CbxIndex = 1 Then
'Boucle sur les lignes de la colonne A (à partir de la 2eme ligne)
For j = 1 To NbLignes
Obj = ws.Range("A" & j)
'Remplit le ComboBox sans doublons
If Obj.ListIndex = -1 Then Obj.AddItem ws.Range("A" & j)
Next j
End If
'Enlève la sélection dans le ComboBox
Obj.ListIndex = -1
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.Value = ""
derlign = ws.Range(65536, Me.ComboBox1.ListIndex + 4).End(xlUp).Row
Range(Cells(2, Me.ComboBox1.ListIndex + 4), Cells(derlign, Me.ComboBox1.ListIndex + 4)).Name = "leNom"
Me.ComboBox2.RowSource = [lenom].Address
End Sub |