Bonjour.
Je souhaiterais récupérer des enregistrements sur base de données SQL et les insérer dans une listbox de plusieurs colonnes.
Etant débutant en VBA, j'ai du mal a élaborer le code qui me conviendrait.
J'ai une table contenant 42 colonnes, et une listbox de 43 colonnes (pour compter le nombre d'enregistrement)
Mon code actuel :
Mon problème se situe au niveau de la récupération des données.
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 Dim req1 As String, req2 As String Dim nbreg As Integer Dim i As Integer, j As Integer Dim connect As Boolean Dim rs1 As New ADODB.Recordset, rs2 As New ADODB.Recordset Dim tab1(41) As String Private Sub CommandButton1_Click() UserForm4.ListBox1.ColumnCount = 43 req1 = "SELECT count(*) from [" & TL2 & "] ;" With rs1 .CursorLocation = adUseServer 'curseur coté serveur .CursorType = adOpenForwardOnly 'type de curseur .LockType = adLockReadOnly 'option de curseur .Open req1, cnx, adOpenStatic 'exécution de la requête SQL nbreg = .Fields(0).Value 'récupération de l'enregistrement .Close End With req2 = "select * from [" & TL2 & "]" With rs2 .CursorLocation = adUseServer 'curseur coté serveur .CursorType = adOpenForwardOnly 'type de curseur .LockType = adLockReadOnly 'option de curseur .Open req2, cnx, adOpenStatic 'exécution de la requête SQL For i = 1 To (nbreg) UserForm4.ListBox1.AddItem "N°" & i For j = 0 To 41 tab1(j) = .Fields(j).Value 'récupération de l'enregistrement UserForm4.ListBox1.List(i - 1, j + 1) = tab1(j) Next j Next i .Close End With End Sub
Le premier hic est que j'ai pu constater avec l'aide d'une msgbox que tab1() n'enregistre que la première ligne de la table SQL.
=> Comment puis-je récupérer l'ensemble des données de la table? (j'ai pensé à un tableau à deux dimensions, mais je ne sais pas comment le mettre en oeuvre avec le recordset)
Ensuite, la ligneme retourne l'erreur "Invalid property value", et je ne sais pas trop à quoi elle correspond :s
Code : Sélectionner tout - Visualiser dans une fenêtre à part UserForm4.ListBox1.List(i - 1, j + 1) = tab1(j)
(je soupsonne également req2 de ne pas être la meilleure solution.)
Toute aide étant la bienvenue, merci d'avance
Partager