[VBA EXCEL] Listbox & While
Fermé
Bonjour à tous,
je vous expose mon problème.
Je remplie une listbox avec un while qui va chercher des valeurs de cellules.
Seulement voila, j'aimerais beaucoup que la listbox se remplissent "en direct". Car ce qui se passe, c'est qu'une fois que je clique sur le bouton pour lancer le remplissage de la listbox, ça charge, mais rien ne s'affiche au fur et a mesure.
C'est seulement à la fin du while que ma listbox s'affiche, remplie.
Une idée de comment voir "en live" le remplissage de mon form ? Peut être une histoire de focus ou je ne sais quoi ?
Merci à vous ;)
je vous expose mon problème.
Je remplie une listbox avec un while qui va chercher des valeurs de cellules.
Seulement voila, j'aimerais beaucoup que la listbox se remplissent "en direct". Car ce qui se passe, c'est qu'une fois que je clique sur le bouton pour lancer le remplissage de la listbox, ça charge, mais rien ne s'affiche au fur et a mesure.
C'est seulement à la fin du while que ma listbox s'affiche, remplie.
Une idée de comment voir "en live" le remplissage de mon form ? Peut être une histoire de focus ou je ne sais quoi ?
Merci à vous ;)
A voir également:
- [VBA EXCEL] Listbox & While
- Liste déroulante excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Déplacer une colonne excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
Bonjour,
Il y a au moins deux manières de faire:
- en utilisant la fonction DoEvents (qui redonne la main au système pour acomplir des tâches en attente)
- en utilisant la méthode Repaint (qui redessine la Userform)
Exemple: Clic sur la Userform, la ListBox se remplit au rythme d'une seconde
Private Sub UserForm_Click()
Dim i
For i = 1 To 10
ListBox1.AddItem ("toto " & i)
Application.Wait (Now + TimeValue("0:00:01")) 'attend une seconde
DoEvents 'redonne la main au système
'UserForm1.Repaint 'ou redessine la Userform
Next
End Sub
Il y a au moins deux manières de faire:
- en utilisant la fonction DoEvents (qui redonne la main au système pour acomplir des tâches en attente)
- en utilisant la méthode Repaint (qui redessine la Userform)
Exemple: Clic sur la Userform, la ListBox se remplit au rythme d'une seconde
Private Sub UserForm_Click()
Dim i
For i = 1 To 10
ListBox1.AddItem ("toto " & i)
Application.Wait (Now + TimeValue("0:00:01")) 'attend une seconde
DoEvents 'redonne la main au système
'UserForm1.Repaint 'ou redessine la Userform
Next
End Sub
Tu crois vraiment que j'ai posté un message ici pour entendre ce genre de réponse ?
Si ça m'importait peu, j'aurais pas poser la question.
Merci quand même pour ta réponse..
Si ça m'importait peu, j'aurais pas poser la question.
Merci quand même pour ta réponse..