XL 2016 Alimenter listbox avec une énorme liste

KTM

XLDnaute Impliqué
Bonjour Chers tous
j'ai une plage de 8000 lignes et 13 colonnes que je voudrais afficher dans mon listbox .
J'ai utilisé la méthode Rowsource puis la méthode List mais mon userform charge lentement au lancement.
Je voudrais savoir s'il existe une autre méthode pour charger rapidement mon listbox.
Merci!!!
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour KTM, Staple1600, Chti160, le forum

Bonjour Chers tous
j'ai une plage de 8000 lignes et 13 colonnes que je voudrais afficher dans mon listbox .
J'ai utilisé la méthode Rowsource puis la méthode List mais mon userform charge lentement au lancement.
Je voudrais savoir s'il existe une autre méthode pour charger rapidement mon listbox.
Merci!!!
Cela vient peut être de la façon dont tu utilises la méthode list, le plus rapide serait de l'alimenter directement par un tableau Vb, mais sans le code et sans fichier, difficile de savoir comment tu fais ...

Cordialement, @+
 

Staple1600

XLDnaute Barbatruc
Bonjour Bernard_XLD

Ca se remplit certes
VB:
Private Sub UserForm_Initialize()
Dim t
Range("a1:A8000") = "=row()"
t = Range("a1:A8000").Value2
ListBox1.List = t
End Sub
Mais combien de secondes font 8000 clics pour arriver en bas de ma ListBox?
Je remets mon :eek: de mon précédent message ;)
 

Staple1600

XLDnaute Barbatruc
Bonsoir Job75

Je précise ma pensée
Je n'ai jamais vu personne lire une liste de 8000 items dans une listbox (*)
(ou lire ou parcourir 65000 lignes d'un classeur)
D'ailleurs le code du message#6 est lui aussi quasi-immédiat

(*) Si les valeurs sont chargées dans une listbox, c'est bien que quelqu'un va cliquer dessus.
C'est déjà la croix et la bannière niveau manipulation quand une listbox contient 50 éléments.
 

Staple1600

XLDnaute Barbatruc
Re


Oui
Mais qui peut humainement rechercher visuellement un élément parmi 8000?
Parcourir la liste des polices disponibles est déjà fastidieux
( 213 polices s'affichent dans la listbox de Format/Format de cellule/Police dans Excel)
C'est simplement ce que je voulais faire remarquer.
 

Staple1600

XLDnaute Barbatruc
Re

KTM
Ouf, j'ai cru que mon dentifrice était inefficace.

Mais par curiosité
Tu as vraiment une liste qui comporte 8000 éléments ?
Et tu les parcours un à un pour en choisir un en cliquant sur la ListBox?

NB: C'est cela qui m'a interpellé
(et ce n'était pas une critique à ton endroit)
 

job75

XLDnaute Barbatruc
Bonjour le forum,
Et tu les parcours un à un pour en choisir un en cliquant sur la ListBox?
Allons donc JM, j'ai bien dit :
Une ListBox n'est pas faite pour lire tous ses éléments, juste ceux que l'on recherche...
Voyez ce fichier (2) et la macro :
VB:
Private Sub TextBox1_Change()
Dim x, tablo, ncol%, i&, j%, n&, a(), k%, b()
x = TextBox1.Text
tablo = [A1:M8000] 'matrice, plus rapide
ncol = UBound(tablo, 2)
For i = 1 To UBound(tablo)
    For j = 1 To ncol
        If tablo(i, j) Like x Then
            n = n + 1
            ReDim Preserve a(1 To ncol, 1 To n)
            For k = 1 To ncol
                a(k, n) = tablo(i, k)
            Next k
            Exit For
        End If
Next j, i
If n = 0 Then ListBox1.Clear: GoTo 1
'---transposition---
ReDim b(1 To n, 1 To ncol)
For i = 1 To n
    For j = 1 To ncol
        b(i, j) = a(j, i)
Next j, i
'---restitution---
ListBox1.List = b
1 TextBox2 = n
End Sub
A+
 

Pièces jointes

  • ListBox(2).xlsm
    683.7 KB · Affichages: 19

Discussions similaires

Statistiques des forums

Discussions
312 922
Messages
2 093 644
Membres
105 774
dernier inscrit
Tibenjah