Espacer l'exécution d'une macro cyclique d'une seconde avec la fonction timer
Bonjour la communauté,
Voici mon soucis que j'aimerais partager avec vous en quête de solution.
J'ai un userform sur lequel j'ai disposé 8 labels dont les bordures doivent prendre une
couleur définie successivement sans interruption afin de créer une boucle.
Pour parler plus simple, à l'activation du formulaire, la bordure du label1
prend la couleur définie, ensuite c'est au tour du label pendant que le label
retrouve sa couleur initiale ..... ainsi de suite jusqu'au label 8. Et la boucle
recommence.
Mon soucis, c'est qu je souhaite espacer les changements des couleurs des bordures d'une
(01) seconde. J'ai essayer la fonction Application.Wait Now qui marche bien, mais elle consomme
tellement de ressources et ralentie la macro.
Je veux bien essayer la fonction Timer, mais elle s’exécute trop rapidement. quelqu'un saurait-il
comment utiliser cette dernière fonction mais qui me permettrait d'espacer l’exécution de mes instructions
d'au moins une 1/2 seconde (1 seconde tout au plus)?
Ci-après mon code. Cordialement!
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Private Sub UserForm_Activate()
Dim Debut
Debut = Timer
Actif = 1
Inactif = 8
Application.ScreenUpdating = False
Do While Timer > 0
Actif = Actif + 1
Me.Controls("Label" & Actif Mod 8 + 1).BorderStyle = fmBorderStyleSingle
Me.Controls("Label" & Actif Mod 8 + 1).BorderColor = RGB(31, 78, 121)
Me.Controls("Label" & Actif Mod 8 + 1).BackColor = RGB(255, 255, 255)
Me.Controls("Label" & Inactif Mod 8 + 1).BorderStyle = fmBorderStyleNone
Me.Controls("Label" & Inactif Mod 8 + 1).BackColor = RGB(180, 199, 231)
'Application.Wait (Now + #12:00:01 AM#)
'Application.Wait Now + TimeValue("00:00:01")
Inactif = Actif
If Actif Mod 8 + 1 > 7 Then Inactif = 7
DoEvents
Loop
Application.ScreenUpdating = True
End Sub |