Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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 de mon précédent message
 

job75

XLDnaute Barbatruc
Bonsoir KTM, ChTi160, JM, Bernard,

Une liste de 8000 lignes et 13 colonnes n'est pas "énorme", normalement son chargement est immédiat

Bonne nuit
 

Pièces jointes

  • ListBox(1).xlsm
    679.1 KB · Affichages: 24

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…