Bonjour à tous,

J'ai créé un UserForm pour modifier des valeurs d'un tableau dans la feuille "Listes" de mon excel. Mon tableau est composé de 4 colonnes et je souhaite qu'on puisse modifier uniquement la dernière colonne en fonction de ce qu'on a sélectionné dans les listes déroulantes du UserForm.
J'ai réussi à faire fonctionner les listes déroulantes en cascade de mon UserForm mais je n'arrive pas à appliquer la modification dans la dernière cellule (colonne D donc).

exemple de tableau dans l'excel :
A Aa Aa-1 Aa-11
A Aa Aa-1 Aa-12
A Ab Ab-1 AB-11
B Ba Ba-1 Ba-11
B Bb Bb-1 Bb-11
B Bb Bb-2 Bb-21



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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Option Explicit

Dim Ws As Worksheet
Dim NbLignes As Integer
Dim numligne As Integer
Dim j As Integer



'Les données sont dans les colonnes A à D, d'un onglet nommé "Base".
'La procédure effectue un remplissage conditionnel des Combobox en fonction de
'ce qui est sélectionnée dans le contrôle précédent:
'La sélection du ComboBox1 (données colonne A) définit le contenu du ComboBox2 (données colonne B) ,
'La sélection du ComboBox2 définit le contenu du ComboBox3 (données colonne C) …etc...
'

Private Sub UserForm_Initialize()
    'Définit la feuille contenant les données
    Set Ws = Worksheets("Listes")
    'Définit le nombre de lignes dans la colonne A
    NbLignes = Ws.Range("A1000").End(xlUp).Row
    
    
    'Remplissage du ComboBox1
    Alim_Combo 1
    
End Sub


Private Sub ComboBox1_Change()
    'Remplissage Combo2
    Alim_Combo 2, ComboBox1.Value
End Sub


Private Sub ComboBox2_Change()
    'Remplissage Combo3
    Alim_Combo 3, ComboBox2.Value
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 Obj As Control
    Dim i As Integer
    Dim ad1 As Integer
    
    '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 = 2 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
    Else
        'Alimentation conditionnelle des autres Combobox en fonction de
        'ce qui est sélectionnée dans le contrôle précédent:
        '(La sélection du ComboBox1 définit le contenu du ComboBox2,
        'La sélection du ComboBox2 définit le contenu du ComboBox3 …etc...)
        For j = 2 To NbLignes
            If Ws.Range("A" & j).Offset(0, CbxIndex - 2) = Cible Then
                Obj = Ws.Range("A" & j).Offset(0, CbxIndex - 1)
                If Obj.ListIndex = -1 Then Obj.AddItem Ws.Range("A" & j).Offset(0, CbxIndex - 1)
             End If
        Next j
        
   End If
   'Enlève la sélection dans le ComboBox
   Obj.ListIndex = -1

   
End Sub

Private Sub CommandButton1_Click()

    Ws.Range("D" & j).Value = ComboBox4
    
End Sub
La ligne qui bloque est en rouge, j'ai essayé de déclarer la variable j tout en haut mais les listes déroulantes ne fonctionnent plus ensuite.

Pouvez-vous m'aider ?

Merci d'avance