Comment modifier une base de données via une listbox ?
bonjour a vous
j'aimerais laisser ce petit cadeau au débutant en vba. j'avoue que je peinais au début à trouver un code plus facile pour modifier des données d'une base de données via une listbox. je passais toute une journée le plus souvent devant mon clavier et sur les forums à la recherche de code . mais grace au conseil d'un modérateur de ce forum qui disait" mieux vaut étudier que de poster toujours". donc j'ai commencé à me former seul en téléchargeant les cours de ce forum et vraiment je suis passé de 0 à 5 sur 20.
voici comment modifier une base de données via une listbox( à adapter selon le bésoin)
Code:
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
| Private Sub UserForm_initialize()
'alimentation de la listbox
Dim f
Set f = Sheets("feuil1")
ListBox1.ColumnCount = f.Columns.Count
ListBox1.BoundColumn = f.Columns.Count
ListBox1.List = Range("tableau1").Value
End Sub
Private Sub Bt_valider_Click()
Dim lig As Long
'valider les nouvelles données
With Sheets("feuil1")
.ListObjects(1).ListRows.Add
lig = .Range("A" & Rows.Count).End(xlUp).Row
If M1 <> "" Then
.Range("A" & lig) = M1
.Range("B" & lig) = M2
.Range("C" & lig) = M3
End If
End With
M1 = ""
M2 = ""
M3 = ""
M1.SetFocus
Dim f
'actualiser la listbox apres validation
Set f = Sheets("feuil1")
ListBox1.ColumnCount = f.Columns.Count
ListBox1.BoundColumn = f.Columns.Count
ListBox1.List = Range(f.[A1], f.[C500].End(xlUp)).Value
End Sub
Private Sub ListBox1_Click()
'transfert des données dans les textbox
With ListBox1
M1 = .List(.ListIndex, 0)
M2 = .List(.ListIndex, 1)
M3 = .List(.ListIndex, 2)
End With
End Sub
Private Sub Bt_modifier_Click()
Dim i As Integer
'modifier les anciennes données
With Sheets("feuil1")
'si entete alors i=listbox1.listindex+1
'si pas entete alors i=listbox1.listindex+2
i = ListBox1.ListIndex + 2
.Range("A" & i) = M1
.Range("B" & i) = M2
.Range("C" & i) = M3
'actualiser la listbox apres validation
Set f = Sheets("feuil1")
ListBox1.ColumnCount = f.Columns.Count
ListBox1.BoundColumn = f.Columns.Count
ListBox1.List = Range(f.[A1], f.[C500].End(xlUp)).Value
End With
End Sub |