Bonjour, je suis débutant en VBA excel et j'ai un problème dans mon programme
Lorsque j'ajoute un enregistrement dans

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
'Pour le bouton Nouvelle saisie
Private Sub CommandButton1_Click()
L'ajout dans excel s'effectue normalement mais il manque la colonne LIBELLE dans l'ajout de la ligne du listview

Merci d'avance

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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
'Déclaration de la variable "LIGNE"
 Dim LIGNE As Integer
 'Pour le formulaire
Private Sub UserForm_Initialize()
 
CommandButton2.Visible = False
CommandButton5.Visible = False
Dim i As Integer
Dim j As Integer
'------------------------------------------------------------
' création du listview
Dim rg As Range
Dim n As Integer
ListView1.ListItems.Clear
Set rg = [A1]   'ligne avec les titres
n = 3   'nb de colonnes de données
With Me.ListView1
'ajout des titres de colonnes
For i = 1 To n
    If i = 1 Then
        .ColumnHeaders.Add , , rg.Offset(0, i - 1), 30
    End If
    If i = 2 Then
        .ColumnHeaders.Add , , rg.Offset(0, i - 1), 50
    End If
    If i = 3 Then
        .ColumnHeaders.Add , , rg.Offset(0, i - 1), 188
    End If
Next i
'ajout des éléments de la 1re colonne
Set rg = [A2]   '1re ligne avec les données
' Suite
For j = 2 To Worksheets("SERVICE").[A65536].End(xlUp).Row
    If Worksheets("SERVICE").Range("A" & j) <> "" Then
           .ListItems.Add , , rg
            'ajout des éléments des autres colonnes
             For i = 1 To n
             .ListItems(rg.Row - 1).ListSubItems.Add , , rg.Offset(0, i)
             Next i
        Set rg = rg.Offset(1, 0)    'prochaine ligne
    End If
Next j
 
.FullRowSelect = True   'permet de choisir une ligne complète
.MultiSelect = True     'permet de sélectionner plusieurs lignes
.View = lvwReport       'format d'affichage des données
End With
'------------------------------------------------------------
'Tri de la ListView
    ListView1.Sorted = False
    ListView1.SortKey = 1
    ListView1.SortOrder = lvwAscending
    ListView1.Sorted = True
'------------------------------------------------------------
End Sub
Rem 'Pour le bouton sélection
Private Sub SELSERVICE_Click()
  'affichage de la ligne selectionnée
Dim i As Integer
Dim rg As Range
 
With UserForm1.ListView1
'on boucle sur tous les éléments du Listview
For i = 1 To .ListItems.Count
   'et on affiche uniquement les items sélectionnées
   If .ListItems(i).Selected = True Then
       LigneFeuille = .ListItems(i)
       Code = .ListItems(i).ListSubItems(1)
       LIBELLE = .ListItems(i).ListSubItems(2)
   End If
Next i
End With
CommandButton1.Visible = False
CommandButton2.Visible = True
CommandButton5.Visible = True
End Sub
'Pour le bouton supréssion
Private Sub CommandButton5_Click()
  Set ws = Sheets("SERVICE")
    If MsgBox("Confirmez-vous la suppresion de ce SERVICE ?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
       Rows(LigneFeuille & ":" & LigneFeuille).Delete xlUp
       Me.ListView1.ListItems.Remove (Me.ListView1.SelectedItem.Index)
       SUPP = "O"
    End If
'------------------------------------------------------------
  'Remise à blanc des zones du userform
  LigneFeuille = ""
  Code = ""
  LIBELLE = ""
 CommandButton1.Visible = True
 CommandButton2.Visible = False
 CommandButton5.Visible = False
 
End Sub
'Pour le bouton Nouvelle saisie
Private Sub CommandButton1_Click()
    Dim L As Integer
    LigneFeuille = Row + 2
    If MsgBox("Confirmez-vous l'insertion de ce nouveau SERVICE ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
        'Pour placer le nouvel enregistrement à la première ligne non vide de la feuille
        L = Sheets("SERVICE").Range("a65536").End(xlUp).Row + 1
        LigneFeuille = Sheets("SERVICE").Range("a65536").End(xlUp).Row + 1
        Range("A" & L).Value = LigneFeuille
        Range("B" & L).Value = Code
        Range("C" & L).Value = LIBELLE
    End If
    'mise à jour de la Listview
    With Me.ListView1
        .ListItems.Add , , LigneFeuille
        .ListItems(1).ListSubItems.Add , , Code
        .ListItems(1).ListSubItems.Add , , LIBELLE
    End With
    '------------------------------------------------------------
    'Tri de la ListView
    ListView1.Sorted = False
    ListView1.SortKey = 1
    ListView1.SortOrder = lvwAscending
    ListView1.Sorted = True
    'Remise à blanc des zones du userform
    LigneFeuille = ""
    Code = ""
    LIBELLE = ""
End Sub
'recuperation du N° de ligne de la list view
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
       LIGNE = ListView1.ListItems(Item.Index).Index
End Sub
'Pour le bouton Modifier
Private Sub CommandButton2_Click()
 
    Set ws = Sheets("SERVICE")
    If MsgBox("Confirmez-vous la modification de ce Service?", vbYesNo, "Demande de confirmation de modification") = vbYes Then
       'mise à jour de la LIstview
       ListView1.ListItems(LIGNE).ListSubItems(1).Text = LIBELLE
       'mise à jour des cellules Excel
       ws.Cells(LigneFeuille + 1, "C") = LIBELLE
   End If
       Code = ""
       LIBELLE = ""
   CommandButton1.Visible = True
   CommandButton2.Visible = False
   CommandButton5.Visible = False
End Sub
'Pour le bouton Quitter
Private Sub CommandButton3_Click()
    Unload Me
End Sub