Sortie du contenu d'une ComboBox

Le
michel.arnoux
Bonjour,
Il est dit, dans les notices, qu'une ComboBox comprenait une liste et
un champ de saisie
Je considérais qu'elle avait donc les mêmes possibilités en sortie
qu'une ListBox et qu'une simple transposition de la séquence suivante
pouvait convenir
For J=0 to List1.ListCount-1
List1.ListIndex=J
Print List1
Next J
. donc
For J=1 to Combo1.ListCount
Combo1.ListIndex=J
Print Combo1
Next J

Or ce n'est pas le cas. Y aurait il un détail à modifier ?
Merci, et bonne soirée
Michel Arnoux
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-marc
Le #15377231
wrote:
Bonjour,
Il est dit, dans les notices, qu'une ComboBox comprenait une liste et
un champ de saisie
Je considérais qu'elle avait donc les mêmes possibilités en sortie
qu'une ListBox et qu'une simple transposition de la séquence suivante
pouvait convenir
For J=0 to List1.ListCount-1
List1.ListIndex=J
Print List1
Next J
............. donc
For J=1 to Combo1.ListCount
Combo1.ListIndex=J
Print Combo1
Next J

Or ce n'est pas le cas. Y aurait il un détail à modifier ?
Merci, et bonne soirée
Michel Arnoux



Hello,

Les Combo et les listes commencent à zéro.
Il y a plusieurs façon d'accéder au contenu.
La plus classique est celle ci :

Dim i As Long

For i = 0 To Combo1.ListCount - 1
Debug.Print Combo1.List(i)
Next i



On peut aussi faire comme ça, mais c'est peu naturel et
en plus très peu performant :

For i = 0 To Combo1.ListCount - 1
Combo1.ListIndex = i
Debug.Print Combo1.Text
Next i

PS: je mentionne cette dernière par simple souci d'exhaustivité.
C'est VRAIMENT déconseillé de faire comme ça.


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Jean-marc
Le #15377221
Jean-marc wrote:

On peut aussi faire comme ça, mais c'est peu naturel et
en plus très peu performant :

For i = 0 To Combo1.ListCount - 1
Combo1.ListIndex = i
Debug.Print Combo1.Text
Next i

PS: je mentionne cette dernière par simple souci d'exhaustivité.
C'est VRAIMENT déconseillé de faire comme ça.



Petit complément : j'ai fait une petite mesure de perfs.

La méthode présentée ci dessus est 9 fois plus lente que la
méthode classique, c'est encore pire que ce que je pensais.

D'autre part j'oubliais de signaler qu'il ne faut jamais
écrire:
Debug.Print Combo1

mais toujours
Debug.Print Combo1.Text

Meme si .Text est la propriété par défaut, c'est une mauvaise
habitude de le faire. VB a introduit (et c'est un tort) la
notion de propriété par défaut, mais l'usage de cette feature
est tout à fait déconseillé : le code devient illisible et on
viole la sémantique (Combo1 est un Objet, alors que Combo1.text
est une chaine de caractère).

En fait, ce n'est pas par ce que qq chose est syntaxiquement
correct que c'est nécessairement légitime :-)

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
LE TROLL
Le #15377211
Bonsoir,

Ben si, ça marche comme les listes...

For J = 0 to Combo1.ListCount - 1
Print combo1.List(J)
Next J

De "0" comme dit Jean-Marc...

Ça: "Combo1.ListIndex = J"

C'est pour déterminer l'endroit d'affichage de la
liste, généralement on affiche la dernière
position, soit:

Combo1.ListIndex = Combo1.ListCount - 1

Mais pour imprimer, tu n'as pas besoin de faire
défiler l'index !!!

--
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
de news:

Bonjour,
Il est dit, dans les notices, qu'une ComboBox
comprenait une liste et
un champ de saisie
Je considérais qu'elle avait donc les mêmes
possibilités en sortie
qu'une ListBox et qu'une simple transposition de
la séquence suivante
pouvait convenir
For J=0 to List1.ListCount-1
List1.ListIndex=J
Print List1
Next J
............. donc
For J=1 to Combo1.ListCount
Combo1.ListIndex=J
Print Combo1
Next J

Or ce n'est pas le cas. Y aurait il un détail à
modifier ?
Merci, et bonne soirée
Michel Arnoux
Publicité
Poster une réponse
Anonyme