![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour le forum
Comment fait-on pour qu'une macro s'exécute à chaque heure sans qu'on lui demande en pesant sur un bouton ou d'une autre manière. Bref que tout soit automatique sans présence humaine. Merci Gabriel |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir,
essaye et adapte ceci : Option Explicit Dim Lheure As Double Dim Interval As Integer Sub LancerTimer(NbS As Integer) 'L'application ExecutionTimer se lancera 'toutes les 0 heure, 0 minute et Interval seconde Interval = NbS Application.OnTime Now + TimeSerial(0, 0, Interval), "ExecutionTimer" End Sub Sub ArretTimer() On Error Resume Next Application.OnTime Lheure, "ExecutionTimer", , False End Sub Sub ExecutionTimer() 'code à exécuter à la fin de chaque Interval secondes 'code obligatoire Lheure = Now + TimeSerial(0, 0, Interval) Application.OnTime Lheure, "ExecutionTimer" End Sub (code trouvé sur le site de F.Sigonneau) |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Tatiak
Merci encore pour ton temps ![]() Une chose que je comprends pas C'est : Sub LancerTimer(NbS As Integer) Le NbS as integer, c'est une déclaration de variable ?? Si c'est le cas pourquoi ne pas l'avoir fait avec lheure et Interval ?? Merci beaucoup Bonne journée Gabriel |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir,
le code est à adapter, pour simplifier et pour un rythme=1heure : Option Explicit Dim Lheure As Double Sub LancerTimer() 'L'application ExecutionTimer se lancera toutes les heures ' Application.OnTime Now + TimeSerial(1,0, 0 ), "ExecutionTimer" End Sub Sub ArretTimer() On Error Resume Next Application.OnTime Lheure, "ExecutionTimer", , False End Sub Sub ExecutionTimer() 'code à exécuter à la fin de chaque heure msgbox("Coucou!") 'code obligatoire Lheure = Now + TimeSerial(1,0, 0 ) Application.OnTime Lheure, "ExecutionTimer" End Sub Dans le code "générique" précédent, Nbs est une variable que l'on passe à la routine LancerTimer. Pour lancer le processus, écrire: Lancertimer(10) pour une exécution toutes les 10 secondes par ex. Et effectivement cette variable doit être déclarée au niveau de l'entête de la routine. Bonne soirée |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Bonjour, J'ai profité de la question et de la réponse. Et je cherche un moyen élégant de répéter l'opération, mais seulement un certain nombre de fois et de sortir de la routine. Avec for next, le nombre défini s'exécute en rafale! Merci et bonne soirée. |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Ignotus,
j'ai réussi à retrouver la question! donc voici une réponse dans le fichier joint qui est un exemple d'utilisation (destiné à l'origine pour Martin ; rythme "réglé" à 2secondes) bon week-end tatiak |
| Liens sociaux |
| Outils de la discussion | |
|
|