Mettre un temps entre deux séquences d’une macro
Résolu
mijean94
Messages postés
417
Statut
Membre
-
mijean94 Messages postés 417 Statut Membre -
mijean94 Messages postés 417 Statut Membre -
Bonjour à tous,
J’ai essayé de mettre un temps entre deux action dans un document word 2003.
Voici le code utilisé :
Call couleur_rouge
'delai d'affichage
Application.OnTime When:=Now + TimeValue("00:00:20"), _
Name:="couleur_rouge"
Call couleur_papier_b 'couleur blanc
Cela ne semble pas fonctionner et je n’arrive pas à trouver pourquoi.
normalement la feuille devrait passer en rouge puis 30 secondes plus tard en blanc.
Merci de votre aide.
Bien cordialement
J’ai essayé de mettre un temps entre deux action dans un document word 2003.
Voici le code utilisé :
Call couleur_rouge
'delai d'affichage
Application.OnTime When:=Now + TimeValue("00:00:20"), _
Name:="couleur_rouge"
Call couleur_papier_b 'couleur blanc
Cela ne semble pas fonctionner et je n’arrive pas à trouver pourquoi.
normalement la feuille devrait passer en rouge puis 30 secondes plus tard en blanc.
Merci de votre aide.
Bien cordialement
A voir également:
- Mettre un temps entre deux séquences d’une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Nombre de jours entre deux dates excel - Guide
- Deux ecran pc - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Comment faire deux colonnes sur word - Guide
6 réponses
PS :
je viens de tester ta proposition sur Word m@rina, mais OnTime réagit comme sur excel.
Macro1 continue son exécution tout de suite après le OnTime.
Contrôle :
Debug.Print "macro1" est exécuté, et 5 s plus tard c'est Debug.Print "macro2"
ou alors il faudrait mettre la fin de la macro1 dans macro2.
Ce n'est pas dit clairement :-)
PS2 : ah ben si c'est dit quand on lit lentement :-)
je viens de tester ta proposition sur Word m@rina, mais OnTime réagit comme sur excel.
Macro1 continue son exécution tout de suite après le OnTime.
Contrôle :
Sub Macro1() MsgBox "Ceci est le début de la macro, lorsque vous appuierez sur OK," & _ " vous attendrez 20 secondes que la macro reprenne" ' Pause de 20 seconds. Application.OnTime When:=Now + TimeValue("00:00:05"), _ Name:="Macro2" Debug.Print "macro1: " & Timer End Sub Public Sub Macro2() Debug.Print "macro2: " & Timer MsgBox "la seconde macro reprend : Ce message s'affiche 20 secondes après le premier" End Sub
Debug.Print "macro1" est exécuté, et 5 s plus tard c'est Debug.Print "macro2"
ou alors il faudrait mettre la fin de la macro1 dans macro2.
Ce n'est pas dit clairement :-)
PS2 : ah ben si c'est dit quand on lit lentement :-)
Bonjour,
Tu utilises mal OnTime.
Là, la macro se relance elle-même en permanence.
Pour ce que tu décris,
devrait suffire.
Le soucis c'est que cette méthode garde la main et consomme des ressources, peut-être pas rédhibitoire pour toi.
eric
Tu utilises mal OnTime.
Là, la macro se relance elle-même en permanence.
Pour ce que tu décris,
Application.Wait Now() + Cdate("00:00:30")
devrait suffire.
Le soucis c'est que cette méthode garde la main et consomme des ressources, peut-être pas rédhibitoire pour toi.
eric
il faut laisser Application. devant
Essaie avec ça :
tu verras que ça dure 5s
y a t-il une autre solution pour ne pas consommer des ressources ?
oui mais pas sûr que ça vaille le coup ici.
Ca veux juste dire que vba continue à tourner pour voir si le temps est écoulé ou pas.
eric
Essaie avec ça :
Sub test()
Debug.Print Timer
Application.Wait Now() + CDate("00:00:05")
Debug.Print Timer
End Sub
tu verras que ça dure 5s
y a t-il une autre solution pour ne pas consommer des ressources ?
oui mais pas sûr que ça vaille le coup ici.
Ca veux juste dire que vba continue à tourner pour voir si le temps est écoulé ou pas.
eric
Bonjour,
j'ai toujours la même erreur au lancement de la procédure.
Voici la macro entière
bien cordialement
j'ai toujours la même erreur au lancement de la procédure.
Voici la macro entière
Sub protection_doc()
' changement couleur du document
Call couleur_rouge
MsgBox "protection du document OK" & Chr(13) & Chr(10) & "le doc doit-etre rouge"
Debug.Print Timer
Application.Wait Now() + CDate("00:00:15")
Debug.Print Timer
Call couleur_papier_b 'couleur blanc
'mise en place protéger du document.
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="jlejle"
Else: MsgBox "Le document est déja protégé" & Chr(13) & Chr(10) & "Faire Ctrl+D pour le déprotégéer"
End If
MsgBox "Le document est PROTEGER"
End Sub
bien cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je n'avais pas prêté attention que c'était Word. Il ne connait pas .Wait
Essaie avec :
eric
Je n'avais pas prêté attention que c'était Word. Il ne connait pas .Wait
Essaie avec :
Sub test() 'Appel tempo timerS 5 ' 5 s MsgBox "fini" End Sub Sub timerS(t As Double) ' tempo t secondes, précision possible : 1/100 s Dim s As Double s = Timer: Do While Timer < s + t: DoEvents: Loop End Sub
eric
Bonjour
Coucou Eric ;)
Sinon, tu peux regarder cet article :
https://faqword.com/index.php/word/gestion-des-macros/481-comment-inserer-une-attente-dans-un-module-vba-word-entre-2-instructions
m@rina
Coucou Eric ;)
Sinon, tu peux regarder cet article :
https://faqword.com/index.php/word/gestion-des-macros/481-comment-inserer-une-attente-dans-un-module-vba-word-entre-2-instructions
m@rina
Bien cordialement