Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Faire défiler une listbox en VBA

4 réponses
Avatar
Gilbert
Bonjour,

Dans un formulaire j'ai une listbox qui affiche le compte-rendu d'exécution d'une procédure.
Le traitement affiche de nombreuses lignes, ce qui fait qu'au bout d'un moment il n'est plus possible de lire ce qui s'affiche
pendant l'exécution.
On peut bien sûr utiliser la barre de défilement verticale, mais j'aimerais que ce défilement soit automatique.

Connaissez-vous le moyen de réaliser ça en VBA?

Merci d'avance

--
Cordialement,

Gilbert

4 réponses

Avatar
jero
Salut,
Par exemple : (btFaireDéfiler : bouton de commande, tTxt1 textbox)
Private Sub btFaireDéfiler_Click()
Dim Lg As Byte, Pos As Byte, I As Byte, Ch As String, svgTxt1 As String, Nb
As Long
Nb = 3000000 : 'à adapter
svgTxt1 = Me.tTxt1
Lg = Len(svgTxt1)
For I = 1 To Lg
Ch = Mid(svgTxt1, I + 1, Lg - I) & Left(svgTxt1, I)
Me.tTxt1 = Ch
tempo (Nb)
DoEvents
Next I
Me.tTxt1 = svgTxt1
End Sub

Sub tempo(Tps As Long)
Dim T As Long
For T = 1 To Tps: Next T
End Sub
A+

"Gilbert" a écrit dans le message de news:

Bonjour,

Dans un formulaire j'ai une listbox qui affiche le compte-rendu
d'exécution d'une procédure.
Le traitement affiche de nombreuses lignes, ce qui fait qu'au bout d'un
moment il n'est plus possible de lire ce qui s'affiche
pendant l'exécution.
On peut bien sûr utiliser la barre de défilement verticale, mais
j'aimerais que ce défilement soit automatique.

Connaissez-vous le moyen de réaliser ça en VBA?

Merci d'avance

--
Cordialement,

Gilbert



Avatar
Gilbert
Merci de ta réponse.

Ce n'est pas une zone de texte (textbox) que je veux faire défiler, c'est
une zone de liste (listbox) dans laquelle des lignes s'inscrivent les unes
au-dessous des autres.
Je voudrait que la dernière ligne inscrite soit toujours visible.
Comme si je cliquais à chaque fois sur la flèche basse de la barre de
défilement verticale.

Gilbert



"jero" <~ a écrit dans le message de news:

Salut,
Par exemple : (btFaireDéfiler : bouton de commande, tTxt1 textbox)
Private Sub btFaireDéfiler_Click()
Dim Lg As Byte, Pos As Byte, I As Byte, Ch As String, svgTxt1 As String,
Nb As Long
Nb = 3000000 : 'à adapter
svgTxt1 = Me.tTxt1
Lg = Len(svgTxt1)
For I = 1 To Lg
Ch = Mid(svgTxt1, I + 1, Lg - I) & Left(svgTxt1, I)
Me.tTxt1 = Ch
tempo (Nb)
DoEvents
Next I
Me.tTxt1 = svgTxt1
End Sub

Sub tempo(Tps As Long)
Dim T As Long
For T = 1 To Tps: Next T
End Sub
A+

"Gilbert" a écrit dans le message de news:

Bonjour,

Dans un formulaire j'ai une listbox qui affiche le compte-rendu
d'exécution d'une procédure.
Le traitement affiche de nombreuses lignes, ce qui fait qu'au bout d'un
moment il n'est plus possible de lire ce qui s'affiche
pendant l'exécution.
On peut bien sûr utiliser la barre de défilement verticale, mais
j'aimerais que ce défilement soit automatique.

Connaissez-vous le moyen de réaliser ça en VBA?

Merci d'avance

--
Cordialement,

Gilbert








Avatar
jero
Excuse... je suis allé un peu vite...
Je regarde ce week-end si j'ai un moment
A+
"Gilbert" a écrit dans le message de news:
%23AA%
Merci de ta réponse.

Ce n'est pas une zone de texte (textbox) que je veux faire défiler, c'est
une zone de liste (listbox) dans laquelle des lignes s'inscrivent les unes
au-dessous des autres.
Je voudrait que la dernière ligne inscrite soit toujours visible.
Comme si je cliquais à chaque fois sur la flèche basse de la barre de
défilement verticale.

Gilbert



"jero" <~ a écrit dans le message de news:

Salut,
Par exemple : (btFaireDéfiler : bouton de commande, tTxt1 textbox)
Private Sub btFaireDéfiler_Click()
Dim Lg As Byte, Pos As Byte, I As Byte, Ch As String, svgTxt1 As String,
Nb As Long
Nb = 3000000 : 'à adapter
svgTxt1 = Me.tTxt1
Lg = Len(svgTxt1)
For I = 1 To Lg
Ch = Mid(svgTxt1, I + 1, Lg - I) & Left(svgTxt1, I)
Me.tTxt1 = Ch
tempo (Nb)
DoEvents
Next I
Me.tTxt1 = svgTxt1
End Sub

Sub tempo(Tps As Long)
Dim T As Long
For T = 1 To Tps: Next T
End Sub
A+

"Gilbert" a écrit dans le message de news:

Bonjour,

Dans un formulaire j'ai une listbox qui affiche le compte-rendu
d'exécution d'une procédure.
Le traitement affiche de nombreuses lignes, ce qui fait qu'au bout d'un
moment il n'est plus possible de lire ce qui s'affiche
pendant l'exécution.
On peut bien sûr utiliser la barre de défilement verticale, mais
j'aimerais que ce défilement soit automatique.

Connaissez-vous le moyen de réaliser ça en VBA?

Merci d'avance

--
Cordialement,

Gilbert












Avatar
Gilbert
Bon, j'ai trouvé dans un forum

Liste.TopIndex = Liste.ListCount - 1

--
Cordialement,

Gilbert


"Gilbert" a écrit dans le message de news:%23AA%
Merci de ta réponse.

Ce n'est pas une zone de texte (textbox) que je veux faire défiler, c'est
une zone de liste (listbox) dans laquelle des lignes s'inscrivent les unes
au-dessous des autres.
Je voudrait que la dernière ligne inscrite soit toujours visible.
Comme si je cliquais à chaque fois sur la flèche basse de la barre de
défilement verticale.

Gilbert



"jero" <~ a écrit dans le message de news:

> Salut,
> Par exemple : (btFaireDéfiler : bouton de commande, tTxt1 textbox)
> Private Sub btFaireDéfiler_Click()
> Dim Lg As Byte, Pos As Byte, I As Byte, Ch As String, svgTxt1 As String,
> Nb As Long
> Nb = 3000000 : 'à adapter
> svgTxt1 = Me.tTxt1
> Lg = Len(svgTxt1)
> For I = 1 To Lg
> Ch = Mid(svgTxt1, I + 1, Lg - I) & Left(svgTxt1, I)
> Me.tTxt1 = Ch
> tempo (Nb)
> DoEvents
> Next I
> Me.tTxt1 = svgTxt1
> End Sub
>
> Sub tempo(Tps As Long)
> Dim T As Long
> For T = 1 To Tps: Next T
> End Sub
> A+
>
> "Gilbert" a écrit dans le message de news:
>
>> Bonjour,
>>
>> Dans un formulaire j'ai une listbox qui affiche le compte-rendu
>> d'exécution d'une procédure.
>> Le traitement affiche de nombreuses lignes, ce qui fait qu'au bout d'un
>> moment il n'est plus possible de lire ce qui s'affiche
>> pendant l'exécution.
>> On peut bien sûr utiliser la barre de défilement verticale, mais
>> j'aimerais que ce défilement soit automatique.
>>
>> Connaissez-vous le moyen de réaliser ça en VBA?
>>
>> Merci d'avance
>>
>> --
>> Cordialement,
>>
>> Gilbert
>>
>>
>>
>
>
>