Bonjour,
Voila mon probleme, je voudrais afficher des informations dans une zone de liste sur 3 colonnes différentes ( Nom, Prnom, Email). Mais imposssible d'accéder à la deuxième colonne, et à la troisième aussi.
Voici mon code.
Private Sub liste_diffusion_Change()
Dim rst As ADODB.Recordset
Dim SQL As String
While liste_contacts.ListCount > 0
liste_contacts.RemoveItem (0)
Wend
Set rst = New ADODB.RecordsetSQL "Select CONTACT.Nom , CONTACT.Prenom, CONTACT.Email From CONTACT_DIFFUSION, CONTACT , LISTE_DIFFUSION where CONTACT.Num_contact CONTACT_DIFFUSION.Num_contact And LISTE_DIFFUSION.Num_liste=CONTACT_DIFFUSION.Num_liste and LISTE_DIFFUSION.Num_liste = " & liste_diffusion.Value & ";"
rst.Open SQL, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
If rst.RecordCount > 0 Then
rst.MoveFirst
Do While rst.EOF = False
liste_contacts.AddItem rst!Nom
liste_contacts.AddItem rst!Prenom
rst.MoveNext
Loop
End If
End Sub
si je rajoute dans mon while
liste_contacts.column(2,0) rst!Prenom
l'erreur est : Erreur 424 Objet Requis.
Kelkun at'il déjà fé ça ?
Merci
Gagou
A voir également:
Zone de liste vba
Vba zone de liste - Meilleures réponses
Vba liste déroulante plusieurs colonnes - Meilleures réponses
oui oui mon nombre de colonnes est bien défini,
mais c bon g réussi par trouver, il suffit de séparer les valeurs de chaque colonne par un point virgule :
Tt d'abord tu peux remplacer
While liste_contacts.ListCount > 0
liste_contacts.RemoveItem (0)
Wend
par
liste_contacts.Clear
Et voila comment remplir une listbox multicolonnes
Private Sub UserForm_Initialize()
With liste_contacts
'Largeur de la ListBox
.Width = 200
'Nb Colonnes à gérer dans la ListBox
.ColumnCount = 3
'Définit la largeur de chaque colonne
.ColumnWidths = "30;80;70"
'Avec ce code la 3e colonne est masquée
'.ColumnWidths = "30;170;0"
'Ajoute 1 ligne
.AddItem
'Ecrit "a" dans la 1e colonne de la derniére ligne
.List(.ListCount - 1, 0) = "a"
'Ecrit "b" dans la 2e colonne de la dernière ligne
.List(.ListCount - 1, 1) = "b"
'Ecrit "c" dans la 3e colonne de la dernière ligne
.List(.ListCount - 1, 2) = "c"
'Ajoute une ligne
.AddItem
'Idem ci-dessus mais avec d, e, f
.List(.ListCount - 1, 0) = "d"
.List(.ListCount - 1, 1) = "e"
.List(.ListCount - 1, 2) = "f"
'Remplace le contenu de la premiere ligne
' a b c
'=> g h i
.List(0, 0) = "g"
.List(0, 1) = "h"
.List(0, 2) = "i"
End With
End Sub
d'abord j'avais déjà essayer liste_contacts.clear, mais il ne reconnait pas la méthode, donc c pour ça que j'ai fé le while.
pour le reste g fé kome tu as marqué, mais il ne reconnait pas la methode .List ou .Listcount.
Il me manquerai pas un composant ? ou autre chose ?
merci
Tu utilises bien une listbox en VBA ?
Si tu es sous VB6, le composant ListBox n'est pas le même qu'en VBA, et il me semble que dans ce cas, il ne gère pas le multicolonnes
A part le fait que je sois sous Excel, j'ai pris le même composant, et j'ai testé le code avant de le déposer sur le forum.
Mais, si ta ListBox ne connait pas les propriétés List et ListCount, commen accèdes-tu aux valeurs de ta liste ?
Par exemple, comment récupères tu la valeur de la 3e ligne de ta liste ?
ben pour l'instant je n'arrive pas à afficher mes valeurs donc je ne peux pas les récupérer.
Dans un premier temps, je voulais simplement afficher mes valeurs, mais apparemment cela ne fonctionne pas...
je ne vois pas kes ki peut bloquer à part une référence manquante dans VBA.