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 |
Partager