bonsoir,

J'ai des combox(4) qui sont dépendants les uns des autres,
les 3 premiers combobox sont bien alimentés par la base de donnée mais le quatriéme ne l'est pas.
voilà mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub AjouterItem(ByRef oCollection As Collection, ByVal strItem As String)
    Dim oObjet As Object
    Dim ValeurPresente As Boolean
    Dim i As Long
 
    For i = 1 To oCollection.Count
        If oCollection.Item(i) = strItem Then
            ValeurPresente = True
            Exit Sub
        End If
    Next i
 
    If Not ValeurPresente Then oCollection.Add strItem
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Private Sub UserForm_Initialize()
    Dim Cellule As Range
    Dim Balan As Range
    Dim calle As Range
    Dim Translist As Range
    Dim oCollection As New Collection
    Dim i As Long
 
    For Each Cellule In Feuil4.Range("a2:a" & Feuil4.Range("a" & Rows.Count).End(xlUp).Row)
        AjouterItem oCollection, Cellule.Value
     Next Cellule
 
      For i = 1 To oCollection.Count
        ComboBox1.AddItem oCollection.Item(i)
    Next i
     For Each Balan In Feuil4.Range("b2:b" & Feuil4.Range("b" & Rows.Count).End(xlUp).Row)
        AjouterItem oCollection, Balan.Value
     Next Balan
 
    For i = 1 To oCollection.Count
        ComboBox2.AddItem oCollection.Item(i)
    Next i
 
      For Each calle In Feuil4.Range("c2:c" & Feuil4.Range("c" & Rows.Count).End(xlUp).Row)
        AjouterItem oCollection, calle.Value
     Next calle
 
    For i = 1 To oCollection.Count
        ComboBox3.AddItem oCollection.Item(i)
    Next i
 
        For Each Translist In Feuil4.Range("d2:d" & Feuil4.Range("d" & Rows.Count).End(xlUp).Row)
        AjouterItem oCollection, Translist.Value
     Next Translist
 
End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub ComboBox3_Change()
 
    Dim oCollection As New Collection
    Dim i As Long
    Dim calle As Range
 
        ComboBox4.Clear
 
    ' Itération sur chaque cellule de d et appel de la procédure d'ajout
    For Each calle In Feuil4.Range("d2:d" & Feuil4.Range("d" & Rows.Count).End(xlUp).Row)
        If calle(1, 0).Value = ComboBox3.Value Then AjouterItem oCollection, calle.Value
    Next calle
 
    For i = 1 To oCollection.Count
        ComboBox4.AddItem oCollection.Item(i)
    Next i
End Sub
dans le sous programme j'ai mis que la partie "Private Sub ComboBox3_Change"