J'aurais besoin d'un coup de main pour créer une macro dans un document Word
(Word 2000 et suivants).
Cette macro devrait, à l'ouverture du document-formulaire (une execution
automatique donc) se mettre en pause 10 ou 15 secondes puis "enclencher" la
protection du formulaire afin de rendre disposnible les champs à remplir du
formulaire.
C'est un peu "tordu", je mle concède, mais je n'ai pas trop le choix. Il
s'agit d'un formulaire word qui doit être pré-rempli par un progiciel avant
d'entamer le remplissage des champs. Si le docuemnt est protégé à
l'ouverture, le progiciel ne parvient pas à remplir ses propres champs (j'ai
essayé de créer des zones protégées et des zones non-protégées, mais cela n'a
pas marcher, le progiciel bloque).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Cette macro devrait, à l'ouverture du document-formulaire (une execution automatique donc) se mettre en pause 10 ou 15 secondes puis [...]
C'est tout à fait possible, la solution la plus simple mais un peu "bourrin" : Noter l'heure en début de macro, calculer l'heure de fin et faire une boucle jusqu'à cette heure là. Dans la boucle on met un ou plusieurs doevents pour ne pas bloquer les autres applications pendant ce temps. En pseudo code ça donne qqch comme Heure de fin = heure actuelle + 15 secondes Tant que l'heure actuelle est inférieure à l'heure de fin DoEvents Boucle
Il y a un exemple tout fait dans l'aide, mais qui ne marche pas si on commence avant minuit et on termine après : Dim PauseTime, Start, Finish, TotalTime If (MsgBox("Cliquez sur Oui pour effectuer une pause de 5 secondes", 4)) = vbYes Then PauseTime = 5 ' Définit la durée. Start = Timer ' Définit l'heure de début. Do While Timer < Start + PauseTime DoEvents ' Donne le contrôle à d'autres processus. Loop Finish = Timer ' Définit l'heure de fin. TotalTime = Finish - Start ' Calcule la durée totale. MsgBox "Pause de " & TotalTime & " seconde(s)" Else End End If
-- A+
Cette macro devrait, à l'ouverture du document-formulaire (une execution
automatique donc) se mettre en pause 10 ou 15 secondes puis [...]
C'est tout à fait possible, la solution la plus simple mais un peu
"bourrin" :
Noter l'heure en début de macro, calculer l'heure de fin
et faire une boucle jusqu'à cette heure là.
Dans la boucle on met un ou plusieurs doevents pour ne pas bloquer les
autres applications pendant ce temps.
En pseudo code ça donne qqch comme
Heure de fin = heure actuelle + 15 secondes
Tant que l'heure actuelle est inférieure à l'heure de fin
DoEvents
Boucle
Il y a un exemple tout fait dans l'aide, mais qui ne marche pas si on
commence avant minuit et on termine après :
Dim PauseTime, Start, Finish, TotalTime
If (MsgBox("Cliquez sur Oui pour effectuer une pause de 5 secondes",
4)) = vbYes Then
PauseTime = 5 ' Définit la durée.
Start = Timer ' Définit l'heure de début.
Do While Timer < Start + PauseTime
DoEvents ' Donne le contrôle à d'autres processus.
Loop
Finish = Timer ' Définit l'heure de fin.
TotalTime = Finish - Start ' Calcule la durée totale.
MsgBox "Pause de " & TotalTime & " seconde(s)"
Else
End
End If
Cette macro devrait, à l'ouverture du document-formulaire (une execution automatique donc) se mettre en pause 10 ou 15 secondes puis [...]
C'est tout à fait possible, la solution la plus simple mais un peu "bourrin" : Noter l'heure en début de macro, calculer l'heure de fin et faire une boucle jusqu'à cette heure là. Dans la boucle on met un ou plusieurs doevents pour ne pas bloquer les autres applications pendant ce temps. En pseudo code ça donne qqch comme Heure de fin = heure actuelle + 15 secondes Tant que l'heure actuelle est inférieure à l'heure de fin DoEvents Boucle
Il y a un exemple tout fait dans l'aide, mais qui ne marche pas si on commence avant minuit et on termine après : Dim PauseTime, Start, Finish, TotalTime If (MsgBox("Cliquez sur Oui pour effectuer une pause de 5 secondes", 4)) = vbYes Then PauseTime = 5 ' Définit la durée. Start = Timer ' Définit l'heure de début. Do While Timer < Start + PauseTime DoEvents ' Donne le contrôle à d'autres processus. Loop Finish = Timer ' Définit l'heure de fin. TotalTime = Finish - Start ' Calcule la durée totale. MsgBox "Pause de " & TotalTime & " seconde(s)" Else End End If