Executer une macro toutes les heures? c'est possible?

tibogl Messages postés 42 Date d'inscription mercredi 26 janvier 2005 Statut Membre Dernière intervention 25 avril 2006 - 4 août 2005 à 18:24
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 4 août 2005 à 22:19
Bonjour,
je dois implémenter une macro, qui lancerai un rapatriement de données toutes les heures, est-ce possible?
Si oui , comment?
Merci d'avance!

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2005 à 22:16
Je t'ai fait cet exemple dans un module sur Excel.
Je me sers d'un Timer par API que j'ai réglé à 5 secondes pour le test, pas le temps d'attendre une heure.
C'est dans la Sub TimerProc que tu lanceras tes traitements.
Faut penser à fermer le Timer, mettre TermineTimer() où il conviendra pour que soit appelé à tout coup.

Option Explicit


Declare Function SetTimerAPI Lib "User32" Alias "SetTimer" (ByVal hWind As Long, ByVal idTim As Long, ByVal elapsed As Long, ByVal pfunc As Any) As Long
Declare Sub KillTimerAPI Lib "User32" Alias "KillTimer" (ByVal hWind As Long, ByVal idTim As Long)


Public idtimer As Long

Sub TimerProc(ByVal hwnd As Long, ByVal msg As Long, ByVal idev As Long, ByVal dwtime As Long)
MsgBox "TIMER"
End Sub

Sub Test()
' TOUTES LES 5 SECONDES UNE MSGBOX If idtimer 0 Then idtimer SetTimerAPI(0, 0, 5000, AddressOf TimerProc)
End Sub


Sub TermineTimer()
If idtimer Then
KillTimerAPI 0, idtimer
idtimer = 0
End If
End Sub

ciao...
BruNews, MVP VC++
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 août 2005 à 22:19
ah oui dans l'exemple bien entendu faudra déclencher TermineTimer() à la main.

ciao...
BruNews, MVP VC++
0
Rejoignez-nous