Textbox--> listbox

cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 - 12 nov. 2009 à 00:24
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 - 13 nov. 2009 à 21:46
Bonjour,
Je dois afficher le contenu de 3 textbox dans 3 colonnes d'une même ligne
de listbox, chaque colonne correspond au contenu d'une textbox.
Avec la possibilité d'ajout ou de suppression de lignes.
Je vous remercie d'avance.

17 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 nov. 2009 à 06:13
Bonjour,

mission impossible du fait que les contrôles listbox de VB6 ne gèrent qu'une seule colonne (contrairement aux listboxes de VBA, par exemple).

Il te faudra donc utiliser un autre contrôle (une listvew, par exemple)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2009 à 13:13
salut,

allons... il est toujours possible de tricher

Option Explicit

Private Sub Form_Load()
'   en mode édition, passer la propriété COLUMNS de la listbox à 3

    Text1.Move 0, 0, 1200, 355
    Text2.Move 0, 400, 1200, 355
    Text3.Move 0, 800, 1200, 355
    
    With List1
        .Move 1500, 400, 3600, 355
        .AddItem Text1.Text
        .AddItem Text2.Text
        .AddItem Text3.Text
    End With
End Sub






la réponse de jmf0 reste tout à fait valable si ta "liste" doit afficher plus d'une ligne : la listbox n'est pas le contrôle le plus approprié

++
[hr]
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 nov. 2009 à 13:37
Bonjour, PCPT,

Et il faudrait alors lui dire comment il pourrait gérer (sans usine à gaz) :
Avec la possibilité d'ajout ou de suppression de lignes.

Avec ces fausses solonnes d'affichage uniquement
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2009 à 14:12
ce ne sont pas des fausses colonnes, la suivant commence juste lorsque l'item ne peut être affiché verticalement dans la précédente

(autrement dit : affichage horizontal)

le fonctionnement reste donc strictement le même

Private Sub Command1_Click()
    List1.RemoveItem 1
    List1.AddItem "deuxième", 1
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 nov. 2009 à 14:21
Ouais....
Chez moi , une vraie colonne est identifiée par un index.

Je ne sais par ailleurs pas si mon petit doigt a raison ou tort, mais il ne cesse de me répéter que la Listbox du demandeur :
- n'a pas de propriété Column
- a une propriété ColumnCount
- et.... n'est pas une Listbox de VB6, mais de VBA ..., raison de cette partie de ma réponse :
mission impossible du fait que les contrôles listbox de VB6 ne gèrent qu'une seule colonne (contrairement aux listboxes de VBA, par exemple).

On va peut-être le savoir, s'il revient ....
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2009 à 14:34
en mode édition, passer la propriété COLUMNS de la listbox à 3


on a peut-être pas la même version de vb6




(nb : la listview, par exemple, ne gère pas NON PLUS sa colonne 0 comme sa colonne 1 . ce fonctionnement n'est valable que pour les grid, qui n'ont pas non plus va vocation d'être modifiées après affichage)


avec ou sans suite, de toute façon, l'astuce montrée n'est qu'à titre indicatif : c'est faisable

après c'est déconseillé par nature (déjà dit)

liens utiles pour une listview :
http://www.codyx.org/snippet_ajouter-ligne-listview-items-multiples_794.aspx
http://www.codyx.org/snippet_modifier-facilement-contenu-cellule-listview_543.aspx
http://www.codyx.org/snippet_recuperer-facilement-contenu-cellule-listview_513.aspx

bonne journée
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 nov. 2009 à 14:40
Nous avons la même lisbox, PCPT...
Et la mienne possède également cette propriété Columns... (sans index et uniquement pour la présentation/affichage).
Les listboxes de VBA ne possèdent pas cette propriété, mais possèdent la propriétés ColumnCount, ColumnHeads et ColuymnWidths. La propriété ColumnCount de ces ListBoxes-là permet de gérer de VRAIES Colonnes (référenciables par index).
Voilà pourquoi je n'ai pas envoyer valser mon petit doigt (il est plus malin que moi ...)
Mais laisse venir le demandeur (c'est le meilleur moyen de savoir sous quoi il developpe en fait).
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
12 nov. 2009 à 23:04
Bonjour,
Je vois que la listbox pose problème, car il s'agit en fait de placer
chaque saisie d'une textbox dans une cellule , c'est le cas avec VBA.
sinon peut-on utiliser le contrôle MSFLEXGRID ?
Un bout de code me faciliterai la tache.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
13 nov. 2009 à 07:15
Teins ?
Une listbox de VBA ? - Qui l'eût cru ?

Tu es ici sous : Accueil > Forum > Visual Basic 6

Et peux constater où mène cette erreur !!!!!!
Ce n'est qu'au 9ème message qu'on apprend que tu développes sous VBA et non VB6 !
Bonne chance ....
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
13 nov. 2009 à 08:20
Ceci étant dit, Maritime,

Il se trouve que la listbox que tu possèdes, toi (celle de VBA, donc) te permet de traiter à l'aise ton problème car (relis plus haut) elle n'a rien à voir avec celle de VB6 et est, en effet, composées de "cellules" réparties en colonnes et lignes et parfaitement référenciables (indexes).
Mais nous ne sommes pas ici dans la section VBA ...

[Mode apparté]
Message non destiné à Maritime.
Il est à souhaiter que celui qui a dit hier "Rhooo.....etc...] pour excuser dans une autre discussion un récidiviste en ce genre "tombe sur cette discussion... Il se rendra alors compte de ce que le danger de telles inconsciences ne concerne pas uniquement des différences "flagrantes" (telles entre Delphi et VBA)....
apparté
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
13 nov. 2009 à 09:51
Bonjour,
Je voulais dire "cellule comme dans VBA", mais je ne suis pas au point de confondre VB6 avec VBA .
Je suis entrain d'essayer avec le contrôle MSFlexgrid qui me parait plus
adapté que la listbox, qu'en pensez-vous ?
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
13 nov. 2009 à 10:22
Ah ...
Je comprends mieux ce que tu voulais dire.
Une simple ListView, alors, fera l'affaire.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
13 nov. 2009 à 11:36
les petits doigts sont parfois farceurs

ps : il y a aussi des manières de ne pas arriver jusqu'à 9 posts quand il y a un doute sur, par exemple, le langage
(ce qui est parfaitement usant, je te l'accorde)

[hr]
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
13 nov. 2009 à 12:28
Salut,
Avec le contrôle MSFlexGrid ça a l'air d'aller, je dois ajouter le bouton supprimer, mais je n'ai aucune idée.
Cela étant, Je vous soumet quand même le code afin de déceler les insuffisances et, éventuellement l'améliorer.


Option Explicit

Private Sub Command1_Click()

Grille1.Row = Grille1.Row
With Grille1
     Grille1.TextMatrix(Grille1.Row, 0) = Grille1.Row
     Grille1.TextMatrix(Grille1.Row, 1) = Text1.Text
     Grille1.TextMatrix(Grille1.Row, 2) = Text2.Text
     Grille1.TextMatrix(Grille1.Row, 3) = Text3.Text
     Grille1.TextMatrix(Grille1.Row, 4) = Text4.Text
     Grille1.TextMatrix(Grille1.Row, 5) = Text5.Text
     Grille1.TextMatrix(Grille1.Row, 6) = Text6.Text
     Grille1.TextMatrix(Grille1.Row, 7) = Text7.Text
End With
     Grille1.Row = Grille1.Row + 1

End Sub



Sub form_load()
Dim i As Integer
Dim taille As Variant

With Grille1
    .Left = 240
    .Width = 9600
    .Height = 2150
    .BackColorFixed = &H8000000F
    .BackColor = vbWhite
    .RowHeight(0) = 250
    .ColWidth(0) = 300

For i = 1 To 10
    .RowHeight(i) = 250 'Hauteur des cellules
Next i
    
    .ColAlignment(0) = flexAlignRightCenter
    taille = Array(300, 950, 1800, 1500, 1900, 1200, 810,800)'Largeur     'des colonnes

For i = 1 To 7
    .ColWidth(i) = taille(i)
    .ColAlignment(1) = flexAlignLeftCenter  
    .ColAlignment(i) = flexAlignCenterCenter 'Centrage au milieu
Next i
    'Légendes des cellules fixes
    Grille1.TextMatrix(0, 1) = "Astre"
    Grille1.TextMatrix(0, 2) = "Date & Heure (UTC) "
    Grille1.TextMatrix(0, 3) = "Latitude Estimée"
    Grille1.TextMatrix(0, 4) = "Longitude Estimée"
    Grille1.TextMatrix(0, 5) = "Hauteur vraie"
    Grille1.TextMatrix(0, 6) = "Azimut"
    Grille1.TextMatrix(0, 7) = "Intercept"
End With

End Sub
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
13 nov. 2009 à 20:04
Bonsoir,

wahou...

Dim Nb as Long

Grille1.Row = Grille1.Row

With Grille1
Nb = .row
Grille1 .TextMatrix(nb, 0) = Grille1.Row
Grille1.TextMatrix(nb.Row, 1) = Text1.Text
Grille1 .TextMatrix(nb, 2) = Text2.Text
Grille1.TextMatrix(nb, 3) = Text3.Text
Grille1 .TextMatrix(nb, 4) = Text4.Text
Grille1.TextMatrix(nb, 5) = Text5.Text
Grille1 .TextMatrix(nb, 6) = Text6.Text
Grille1.TextMatrix(nb, 7) = Text7.Text

Grille1 .Row = Grille1.Row + 1

End With


Je laisse la suite...

En passant,

Amicalement,
Us.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
13 nov. 2009 à 20:06
oupsss...

lire :
Grille1.TextMatrix(nb, 1) = Text1.Text


et
Dim Nb as Long
dans le code...
0
cs_Maritime Messages postés 69 Date d'inscription dimanche 16 mars 2003 Statut Membre Dernière intervention 14 mars 2015 2
13 nov. 2009 à 21:46
Salut,
Merci us pour ton intervention,le code est plus élégant.
N'aurais-tu pas une idée sur comment supprimer une ligne ?
0
Rejoignez-nous