XL 2016 RESOLU : Lancer une macro à intervalles régulier dans une plage Horaire définie.

jige34

XLDnaute Nouveau
Bonjour à tous.
Je cherche pour mon classeur boursier à créer une macro qui se déclencherait toutes les 5 minutes entre 8h45 et 17h45.
Je suis arrivé aux deux résultats, mais sans pouvoir les imbriquer.
Un peu d'aide svp ?

Sub LancementAutomatique()

Depart = #8:45:00 AM# 'heure de départ souhaitée
Arret = #5:45:00 PM# 'heure de fin souhaitée
Go = TimeSerial(Hour(Time), Minute(Time), Second(Time))
Application.OnTime Go, "LancementAutomatique"
Do While Go > Depart And Go < Arret
MajCotations ' Fonction à déclencher
Range("B1") = Time ' affichage de l'heure
Go = TimeSerial(Hour(Time), Minute(Time) + Range("A1"), Second(Time)) 'en A1 valeur 5 pour 5 minutes
Loop
End Sub
 

jige34

XLDnaute Nouveau
Bonjour patricktoulon et merci de ta réponse.
Je ne comprends pas cependant clairement ta solution.
Le classeur est ouvert lorsque je l'utilise.
Je déclenche la macro une première fois, et je voudrais juste qu'elle s'exécute toutes les 5 minutes si l'heure est comprise dans la plage définie.
 

patricktoulon

XLDnaute Barbatruc
re
bonjour réfléchi une seconde
tu a 3 paramètres
une heure de depart "08:45"
une heure de limite "17:45"
et toute les 5 minutes

comment veux tu que la premiere amorce soit faite si il y a ces deux conditions

ca veux dire q'au pire la macro sera lancée pour rien jusqu"a 8:45 et pour rien après 17:45 tant que le fichier est ouvert

si l'on doit démarrer seulement >=8:45 c'est une tache
pour tout les lancement qui suivent c'est app.ontime jusqu'a 17 heures
 

jige34

XLDnaute Nouveau
J'ai résolu le soucis à ma façon, mais ça marche.

Sub LancementAutomatique()

Arret = #5:45:00 PM# 'heure de fin souhaitée
Go = TimeSerial(Hour(Time), Minute(Time), Second(Time)) 'Définition de l'heure + 5 mn
If Go >= Arret Then ' Si l'heure fin est dépassée
Exit Sub ' Arret Macro
Else
Application.OnTime Go, "LancementAutomatique" 'Demarrage Macro
MajCotations ' Fonction à déclencher
Range("B1") = Time ' affichage de l'heure
' Go = TimeSerial(Hour(Time), Minute(Time) + Range("A1"), Second(Time)) 'Définition de l'heure + 5 mn déplacé dans MajCotation()
End If
End Sub

Evidemment, comme je ne connais pas VBA ce n'est sans doute pas propre, mais ça fonctionne.
Merci
patricktoulon et Excel Downloads
 
Haut Bas