Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro automatique "pause puis protection"

1 réponse
Avatar
Micakel
Bonjour,

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).

Est-ce faisable ?

Cordialment,

Mika

1 réponse

Avatar
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+