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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager