Capacité Max d'une ListBox

Le
michel.arnoux
Bonjour,

Sous VB6, apparemment une ListBox a une capacit limite.
J'ai en effet un programme qui fonctionne, mais, lorsqu'il "mouline"
un volume plus important de donnes, il bloque.
Je n'arrive pas dterminer cette limite

Aprs examen, il apparat que le nombre List1.ListIndex a une valeur
d'entier et ne peut pas dpasser la valeur 32786
Par contre la ListBox peut se remplir au del de cette valeur.

Dans ces conditions
- je compte le nombre de ligne avec un entier Double
- avec une boucle For Next
- je lis la position 0, puis je l'efface
- puis je lis la position 0 qui est la suivante
- je vide en quelque sorte ListBox par le haut
C'est un peu tordu, mais a marche; qu'en pensez vous ?

A dfaut, je pense qu'il faut utiliser des Tableaux et
utiliser un classement par dichotomie (longue liste) pour remplacer la
fonction "Sort" de la ListBox"
L'utilisation de Tableaux m'obligera utiliser des Sous-Programmes au
lieu de Procdures, puisqu'il n'est pas possible de faire travailler 2
Procdures sur un mme Tableau (alors que c'est possible avec
ListBox).
Que me conseillez vous ?

Merci, et bonne soire
Michel
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5430711
Bonsoir,

Exemple:

http://boisgontierjacques.free.fr/pages_site/formulairelistetriee.htm#ListeT riee

Private Sub UserForm_Initialize()
Dim temp()
temp = Range("liste3") ' liste tableau temp (1 To n,1 To 1) ou
temp = Range([B2], [B2].End(xlDown))
Call tri(temp, 1, UBound(temp, 1))
Me.ListBox1.List = temp
End Sub

Sub tri(a(), gauc, droi) ' Quick sort
ref = a((gauc + droi) 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

JB



On 6 avr, 19:31, wrote:
Bonjour,

Sous VB6, apparemment une ListBox a une capacité limitée.
J'ai en effet un programme qui fonctionne, mais, lorsqu'il "mouline"
un volume plus important de données, il bloque.
Je n'arrive pas à déterminer cette limite

Après examen, il apparaît que le nombre List1.ListIndex a une valeur
d'entier et ne peut pas dépasser la valeur 32786
Par contre la ListBox peut se remplir au delà de cette valeur.

Dans ces conditions
- je compte le nombre de ligne avec un entier Double
- avec une boucle For Next
-   je lis la position 0, puis je l'efface
-   puis je lis la position 0 ... qui est la suivante ...
-   ...je vide en quelque sorte ListBox par le haut
C'est un peu tordu, mais ça marche; qu'en pensez vous ?

A défaut, je pense qu'il faut utiliser des Tableaux et
utiliser un classement par dichotomie (longue liste) pour remplacer la
fonction "Sort" de la ListBox"
L'utilisation de Tableaux m'obligera à utiliser des Sous-Programmes au
lieu de Procédures, puisqu'il n'est pas possible de faire travailler 2
Procédures sur un même Tableau (alors que c'est possible avec
ListBox).
Que me conseillez vous ?

Merci, et bonne soirée
Michel


Publicité
Poster une réponse
Anonyme