Bonjour,

J'ai créé une liste en cascade sur 3 niveaux à partir d'un exemple de boisgontier. J'ai rajouté la notion de sans doublon, MultiSelectExtended et modifié la séparation des données.
Par contre, quand je retourne sur ma cellule pour rajouter et/ou supprimer des éléments je suis obligée de tout remplir de nouveau.
Est-il possible de garder les infos déjà remplis sur les 3 niveaux lorsque je retourne sur ma cellule?
Merci pour votre aide.

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
Dim f
Private Sub UserForm_Initialize() 
  Set f = Sheets("BD")
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A2], f.[A65000].End(xlUp))  
    mondico(c.Value) = c.Value
  Next c
  Me.ListBox1.List = mondico.items
  Me.ListBox1.MultiSelect = fmMultiSelectExtended
End Sub
 
Private Sub ListBox1_Change()  
    Me.ListBox3.Clear
    Set mondico = CreateObject("Scripting.Dictionary")
    For Each c In Range(f.[A2], f.[A65000].End(xlUp))
        For k = 0 To Me.ListBox1.ListCount - 1  
          If Me.ListBox1.Selected(k) = True Then
            If c = Me.ListBox1.List(k, 0) Then
              temp = c.Offset(, 1)
              mondico(temp) = temp
            End If
          End If
        Next k
    Next c
    Var = mondico.items 
    Me.ListBox2.List = mondico.items
End Sub
 
Private Sub ListBox2_Change() 
 
Dim mondico As Object
Set mondico = CreateObject("Scripting.Dictionary") 
  Me.ListBox3.Clear
  For Each c In Range(f.[B2], f.[B65000].End(xlUp))
    For k = 0 To Me.ListBox2.ListCount - 1
      If Me.ListBox2.Selected(k) = True Then
        If c = Me.ListBox2.List(k, 0) Then
 
        If Not mondico.exists(c.Offset(, 1).Value) Then  
        mondico.Add c.Offset(, 1).Value, c.Offset(, 1).Value  
        Me.ListBox3.AddItem c.Offset(, 1)
      End If 
      End If
      End If
     Next k
  Next c
End Sub
 
Private Sub b_ok_Click() 
   temp = ""
   For k = 0 To Me.ListBox1.ListCount - 1
     If Me.ListBox1.Selected(k) = True Then temp = temp & Me.ListBox1.List(k, 0) & ","
   Next k
    If Len(temp) > 0 Then temp = Left(temp, Len(temp) - 1) 
   ActiveCell = temp
 
   temp = ""
   For k = 0 To Me.ListBox2.ListCount - 1
     If Me.ListBox2.Selected(k) = True Then temp = temp & Me.ListBox2.List(k, 0) & ","
   Next k
    If Len(temp) > 0 Then temp = Left(temp, Len(temp) - 1) 
   ActiveCell.Offset(, 1) = temp
   temp = ""
   For k = 0 To Me.ListBox3.ListCount - 1
     If Me.ListBox3.Selected(k) = True Then temp = temp & Me.ListBox3.List(k, 0) & ","
   Next k
    If Len(temp) > 0 Then temp = Left(temp, Len(temp) - 1) 
   ActiveCell.Offset(, 2) = temp
 
   Unload Me
End Sub