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

Défilement de valeurs sur contrôle label

2 réponses
Avatar
moustic
Salut tatous, par toutatis

J'ai une p'tit' question à soumettre à votre sagacité.
Mais avant, considérons ce qui suit:
Dans un UserForm, un label nommé lb et un bouton de commande nommé cmdGo
Dans le module de ce UserForm, j'ai écrit:

Private Declare Function GetTickCount Lib "Kernel32" () As Long
-----------------------------------------------------------------
Private Sub Pause(Duree As Long)
Dim Depart
Depart = GetTickCount
Do While GetTickCount < Depart + Duree
Loop
End Sub
-----------------------------------------------------------------
Private Sub cmdGo_Click()
Randomize
For j = 1 To 20
[E3] = Int(Rnd * 6) + 1
lb.Caption = [E3]
Pause (50)
Next j
End Sub
-----------------------------------------------------------------
Alors ma question: pourquoi voit-on défiler les chiffres dans la cellule de
la feuille excel et pas sur le label ? J'ai essayé d'inverser les deux
instructions d'affichage en écrivant:

lb.Caption = Int(Rnd * 6) + 1
[E3] = lb.caption

Le résultat est exactement le même. Seul le dernier chiffre généré apparaît
sur le label. Une pause plus longue n'arrange rien !

Merci d'avance pour vos réponses et merci aussi pour tout ce que j'apprend
en parcourant ce forum et les sites de certains d'entre vous !
Moustic, dit Dédé

2 réponses

Avatar
Daniel.C
Bonjour.

Il faut repeindre to userform pour rafraîchir l'affichage.

Private Sub cmdGo_Click()
Randomize
For j = 1 To 20
[E3] = Int(Rnd * 6) + 1
lb.Caption = [E3]
Me.Repaint
Pause (5)
Next j
End Sub

Cordialement.
Daniel

Salut tatous, par toutatis

J'ai une p'tit' question à soumettre à votre sagacité.
Mais avant, considérons ce qui suit:
Dans un UserForm, un label nommé lb et un bouton de commande nommé cmdGo
Dans le module de ce UserForm, j'ai écrit:

Private Declare Function GetTickCount Lib "Kernel32" () As Long
-----------------------------------------------------------------
Private Sub Pause(Duree As Long)
Dim Depart
Depart = GetTickCount
Do While GetTickCount < Depart + Duree
Loop
End Sub
-----------------------------------------------------------------
Private Sub cmdGo_Click()
Randomize
For j = 1 To 20
[E3] = Int(Rnd * 6) + 1
lb.Caption = [E3]
Pause (50)
Next j
End Sub
-----------------------------------------------------------------
Alors ma question: pourquoi voit-on défiler les chiffres dans la cellule de
la feuille excel et pas sur le label ? J'ai essayé d'inverser les deux
instructions d'affichage en écrivant:

lb.Caption = Int(Rnd * 6) + 1
[E3] = lb.caption

Le résultat est exactement le même. Seul le dernier chiffre généré apparaît
sur le label. Une pause plus longue n'arrange rien !

Merci d'avance pour vos réponses et merci aussi pour tout ce que j'apprend
en parcourant ce forum et les sites de certains d'entre vous !
Moustic, dit Dédé


Avatar
moustic
Eh bien, cher Daniel, je ne m'attendais pas à devoir un jour faire de la
painture pour afficher du "texte" mais c'est génial. Même en ne mettant que 5
milisecondes de pause, cà roule ! Je ne connaissais pas cette méthode. J'irai
couché moins bête ce soir et merci pour la rapidité de ta réponse.
Bonne journée
Dédé

"Daniel.C" a écrit :

Bonjour.

Il faut repeindre to userform pour rafraîchir l'affichage.

Private Sub cmdGo_Click()
Randomize
For j = 1 To 20
[E3] = Int(Rnd * 6) + 1
lb.Caption = [E3]
Me.Repaint
Pause (5)
Next j
End Sub

Cordialement.
Daniel

> Salut tatous, par toutatis
>
> J'ai une p'tit' question à soumettre à votre sagacité.
> Mais avant, considérons ce qui suit:
> Dans un UserForm, un label nommé lb et un bouton de commande nommé cmdGo
> Dans le module de ce UserForm, j'ai écrit:
>
> Private Declare Function GetTickCount Lib "Kernel32" () As Long
> -----------------------------------------------------------------
> Private Sub Pause(Duree As Long)
> Dim Depart
> Depart = GetTickCount
> Do While GetTickCount < Depart + Duree
> Loop
> End Sub
> -----------------------------------------------------------------
> Private Sub cmdGo_Click()
> Randomize
> For j = 1 To 20
> [E3] = Int(Rnd * 6) + 1
> lb.Caption = [E3]
> Pause (50)
> Next j
> End Sub
> -----------------------------------------------------------------
> Alors ma question: pourquoi voit-on défiler les chiffres dans la cellule de
> la feuille excel et pas sur le label ? J'ai essayé d'inverser les deux
> instructions d'affichage en écrivant:
>
> lb.Caption = Int(Rnd * 6) + 1
> [E3] = lb.caption
>
> Le résultat est exactement le même. Seul le dernier chiffre généré apparaît
> sur le label. Une pause plus longue n'arrange rien !
>
> Merci d'avance pour vos réponses et merci aussi pour tout ce que j'apprend
> en parcourant ce forum et les sites de certains d'entre vous !
> Moustic, dit Dédé