Incorporer une durée dans le (Sub ""_click) d'un bouton

SE44fr Messages postés 32 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour au forum,

Je voudrais incorporer une durée (de 2 secondes) dans le code d'un bouton situé dans un userform.

La durée dans ce code me permettrai de changer la couleurdu contour du bouton (vérification visuelle du clic) puis remettre la couleur de ce contour 2 secondes plus tard...
J'ai donc écrit cela :

--------------------------------------------------

Private Sub CommandButton23_Click()

CommandButton12.Locked = False
CommandButton14.Locked = False
CommandButton23.BackColor = vbWhite
Application.OnTime Now, TimeValue("00:00:02")
CommandButton23.BackColor = vbBlack

End Sub
--------------------------------------------------

Effectivement, j'ai écris le paramètre backcolor pour le moment.
Le problème vient du "Application.OnTime", même s'il ne m'affiche pas d'erreur, le fond reste noir au lieu de devenir blanc pendant 2 secondes. Enfin j'ai du mal l'écrire...

Merci d'avance,

Cordialement.

4 réponses

Frenchie83 Messages postés 2254 Statut Membre 339
 
Bonjour
Essayez ceci
    CommandButton23.BackColor = vbBlack
    Application.Wait Now + TimeValue("00:00:02")
    CommandButton23.BackColor = vbWhite

Cdlt
1
SE44fr Messages postés 32 Statut Membre 2
 
Merci à Frenchie83 et NHenry !

Grâce à vous deux j'ai réussi a faire ce que je voulais,
Et concrètement, si quelqu'un est intéressé, ça donne cela :
---------------------------------------------------------
Private Sub CommandButton23_Click()

CommandButton12.Locked = False
CommandButton14.Locked = False
CommandButton23.ForeColor = &HC0C0&
CommandButton12.ForeColor = &HC0C0&
CommandButton14.ForeColor = &HC0C0&
DoEvents
Application.Wait Now + TimeValue("00:00:01")
DoEvents
CommandButton23.ForeColor = &HFFC0C0

End Sub
---------------------------------------------------------

Avec d'autre commandes sur les boutons 12 et 14 pour rétablir après une action.

Encore merci !

Cordialement,
SE.
0
NHenry Messages postés 15489 Date d'inscription   Statut Modérateur Dernière intervention   367
 
Regardes l'instruction DoEvents entre autre.
0
SE44fr Messages postés 32 Statut Membre 2
 
Merci pour cette piste NHenry,
Il semble bien que l'on peut associer DoEvents avec .OnTime ou Timer Envents dans une fonction, mais les exemple d'application de ces formules que j'ai pu trouver et tenté d'adapter ne fonctionne pas, il est très probable que cela vienne de moi puisque je maitrise à peine les bases en vba, mais j'apprends avec le temps...
Je me demande s'il n'existe pas un moyen plus simple pour faire clignoter la bordure d'un bouton de formulaire après un click ?
Cordialement,
SE
0
NHenry Messages postés 15489 Date d'inscription   Statut Modérateur Dernière intervention   367
 
Il faut appeler DoEvents avant et après ta pause.
0
SE44fr Messages postés 32 Statut Membre 2
 
Merci NHenry, le code fonctionne désormais !

Cordialement,
SE.
0
cs_Le Pivert Messages postés 8437 Statut Contributeur 730
 
Bonjour à tous,

Si tu veux faire clignoter plusieurs fois:

Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
clignbouton
End Sub
Sub clignbouton()
 Dim i As Byte
 For i = 1 To 5 'nombre de clignotements
 Sleep (200)  '1000 = 1 seconde
 DoEvents
 CommandButton1.ForeColor = vbBlue
 CommandButton1.BackColor = vbRed
 Sleep (200)
 DoEvents
 CommandButton1.ForeColor = vbRed
 CommandButton1.BackColor = vbBlue
 Next i
 End Sub

0
SE44fr Messages postés 32 Statut Membre 2
 
Bonjour cs_Le Pivert, et merci cet exemple de code,
Excusé moi de vous répondre avec un peu de retard, je suis un peu débordé en ce moment...
J'ai bien regardé votre code pour faire clignoter plusieurs fois le fond et le texte d'un bouton, cela dit je n'ai pas eu le temps de le mettre en pratique pour bien le comprendre (étant encore novice en vba...)

Je comprend bien la boucle de commande qui se répète le nombre de fois voulues, c'est plutôt les 2 premières lignes qui m'intrigue, et le fait que vous séparez le code de clignotement de la commande "click" du bouton en l'appelant par la fonction, il doit y avoir une bonne raison et comme je met toujours le code dans la commande du bouton directement cela m’inquiète un peu.

Je reviendrai faire un retour lorsque j'aurai tester et bien compris ce code.

Cordialement,
SE.
0
cs_Le Pivert Messages postés 8437 Statut Contributeur 730
 
On peut mettre ce code directement dans le bouton. Là on appelle une macro, c'est une habitude que j'ai pris. Quand on veut se servir d'une macro plusieurs fois. Dans ce cas cela n'est pas possible car le bouton est nommé.

Voilà
0
cs_Le Pivert Messages postés 8437 Statut Contributeur 730
 
En appelant cette macro, tu peux faire clignoter ton bouton sans cliquer dessus!
0