Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sortie du contenu d'une ComboBox

3 réponses
Avatar
michel.arnoux
Bonjour,
Il est dit, dans les notices, qu'une ComboBox comprenait une liste et
un champ de saisie
Je consid=E9rais qu'elle avait donc les m=EAmes possibilit=E9s en sortie
qu'une ListBox et qu'une simple transposition de la s=E9quence suivante
pouvait convenir
For J=3D0 to List1.ListCount-1
List1.ListIndex=3DJ
Print List1
Next J
=2E............ donc
For J=3D1 to Combo1.ListCount
Combo1.ListIndex=3DJ
Print Combo1
Next J

Or ce n'est pas le cas. Y aurait il un d=E9tail =E0 modifier ?
Merci, et bonne soir=E9e
Michel Arnoux

3 réponses

Avatar
Jean-marc
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_' ;
Avatar
Jean-marc
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_' ;
Avatar
LE TROLL
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
------------------------------------------------------------------------------------
a écrit dans le message
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