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