Exécution d'une macro à chaque heure

  • Initiateur de la discussion Initiateur de la discussion Gabriel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

G

Gabriel

Guest
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
 
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)
 
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
 
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour