Pb listbox

Fermé
niny@ - 17 mars 2008 à 10:35
 niny@ - 17 mars 2008 à 14:12
Bonjour,


(excel VBA)
je n'arrive pas à mettre en forme une listbox pour qu'elle est la forme d'un tableau. c'est à dire que les données se mettent sous la bonne colonne et les colonnes avec des noms.
j'arrive bien à charger ma listbox avec les données de ma BDD mais elles ne se mettent pas comme je le voudrai.

est ce que quelqu'un peu m'expliquer comment faire en sorte que ca puisse fonctionner ?

j'ai essayer de résoudre mon pb avec un listview mais du coup je n'arrive pas à charger correctement mon listview avec ma BDD = bug

merci pour votre aide !

3 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 mars 2008 à 10:52
bonjour,

Une listbox n'est pas faite pour accueillir des tableaux ... il préférable d'utiliser un DataGrid que l'on peut lier à une BDD.

Pour ajouter le DataGrid aux contrôles de la boîte à outils, faire : Outils -> contrôles supplémentaires et cocher dans la liste Microsoft DataGrid Control, version 6.0 (OLEDB) ...

;o)

Polux
0
merci d'avoir répondu ! c'est sympas !

j'ai essayé de créer un datagrid mais dans le liste microsoft je n'ai pas celle souhaitée, je l'ai pourtant faite plusisuer fois.

disons que ma listbox n'accueil pas un tableau mais doit etre mulicolonnes. apparemment c'est possible car il m'a semblé voir des doc la dessus à moins que j'ai mal compris. lol ca se peut !

le data grid ressemble à quoi en principe ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 mars 2008 à 12:04
re,

Il faut définir dans les propriétés de la listbox le nombre de colonnes (columnCount) et mettre true dans ColumnHeads pour avoir la première ligne comme titre des colonnes. Tu peux aussi définir la largeur des colonnes (ColumnWidths).

Je te donne là l'exemple donné dans l'aide VBA d'Excel pour placer les données dans les colonnes et le lignes:
Private Sub UserForm_Initialize()
     ListBox1.ColumnCount = 3

     ListBox1.AddItem "Row 1, Col 1"
     ListBox1.List(0, 1) = "Row 1, Col 2" 
     ListBox1.List(0, 2) = "Row 1, Col 3"

     ListBox1.AddItem "Row 2, Col 1"
     ListBox1.List(1, 1) = "Row 2, Col 2"
     ListBox1.List(1, 2) = "Row 2, Col 3"

     ListBox1.AddItem "Row 3, Col 1"
     ListBox1.List(2, 1) = "Row 3, Col 2"
     ListBox1.List(2, 2) = "Row 3, Col 3"

     ListBox1.TextColumn = 3
End Sub

Private Sub ListBox1_Change()
     TextBox1.Text = ListBox1.Text
End Sub


;o)

Polux
0
oui j'avais vu en fait voila mon code, dans lequel je récupére les données de Ma BDD mais au niveau du chargement ca bug. la ligne "info_liste_choix_install.ListBox1.AddItem RSCONSO4![appareil] & ", " & RSCONSO4![Install] & ", Cal " & RSCONSO4![Cal]" fonctionne mais me met toutes les données à la suite des autres lignes par lignes. les colonnes sont créées mais les tirtres j'arrive pas à les mettre. est ce que pour récupérer mes données add items suffira ? j'ai un peu de mal excuse moi mais je débute en VBA et je comprends pas grand chose ! dsl et merci de ta patience !! ;-b

Function listbox_chargement()

Dim RSCONSO4 As Recordset
Dim Requete As String


Set BDDCONSO = OpenDatabase(Workbooks("AutoBEv2.xls").Path & "/BDD Access/BDD CONSO.mdb")

'Requete = "SELECT * FROM CONSO WHERE ID=" & AutoBe.champ_caché.Caption & " "
Requete = "SELECT * FROM CONSO"
Set RSCONSO4 = BDDCONSO.OpenRecordset(Requete)

'dans le cas ou plusieurs résultats sont attendus
While Not RSCONSO4.EOF
'récupération des valeurs

'******************charger listbox avec données en colonne*****************************************
'With info_liste_choix_install.ListBox1
' .ColumnCount = 4
'.ColumnWidths = "40,40,40"
' .List = RSCONSO4![appareil] & ", " & RSCONSO4![Install] & ", Cal " & RSCONSO4![Cal]
' End With
'***********************************************************

info_liste_choix_install.ListBox1.AddItem RSCONSO4![appareil] & ", " & RSCONSO4![Install] & ", Cal " & RSCONSO4![Cal]


RSCONSO4.MoveNext

Wend

BDDCONSO.Close
End Function
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
17 mars 2008 à 13:58
re,
Je n'ai pas trop le temps de chercher la solution (j'ai aussi mon boulot :-s) mais essaies de regarder du coté de la propriété ControlSource ou RowSource en y mettant ton recordset ... je n'ai pas vérifié mais je pense que ça doit éviter l'utilisation de AddItem ...
Fais également un tour sur https://www.developpez.com/ et de https://codes-sources.commentcamarche.net/ ... on peut y trouver des exemples ...

;o)

Polux
0
je te remercie !!!

je vais aller voir même si VB france j'y suis déjà allée! ;-(

boss bien !

a bientot peut etre !

encore merci et dsl de t'avoir importuné
0