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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.
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 :-)
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 :-)
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 :-)
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
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
------------------------------------------------------------------------------------
<michel.arnoux@gmail.com> a écrit dans le message
de news:
d63bda87-29dc-4ed1-9ac8-e4d87c02f2ca@i7g2000prf.googlegroups.com...
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
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