Boucle Application.OnTime pour un lancement quotidien ?

budbundy

XLDnaute Nouveau
Bonjour le forum, bonjour chers Excelliens,

Débutant en Vba, j'ai tenté quelques essais, réalisé quelques recherches mais sans résultats pour le moment... :confused:

Ma problématique se situe sur la non-réalisation de boucle dans mes timers (procédures événementielles avec Application.OnTime).

J'ai pu lire que les timers doivent être ré-armés pour fonctionner à nouveau, et là est bien mon problème puisque je souhaite que ma macro exécute mes procédures tous les jours aux mêmes heures.

Je dispose d'une macro qui calcule et envoie des feuilles du classeur à différentes heures
dans la journée (9 feuilles pour 9 envois par des procédures automatisées via Outlook et ClicYes). Etant en permanence ouvert sur un pc connecté 24/24, je ne souhaite pas utiliser les tâches planifiées par Windows.

Voici un extrait de ma "cuisine":

Code Thisworkbook
Au démarrage, j’indique les heures de déclenchement de mes 9 timers et je lance un premier démarrage pour me faire saisir les mots de passe de mes requêtes Starquery. Chaque timer va lancer la requête associée et envoyer automatiquement le résultat (copié sur une feuille annexe) par emails aux destinataires choisis.

Private Sub Workbook_Open()

Application.Run "Démarrage"
'démarrage des starquery en décalage avec l'utilisation de Application.Wait

Application.OnTime TimeValue("11:00:00"), "timer1"
'timer1 lancement automatique feuille1

Application.OnTime TimeValue("11:05:00"), "timer2"
'timer2 lancement automatique feuille2

"Et tout cela avec les 9 timers... les timer1 et 2 serviront d'exemples"

End Sub

Code Module1 (Exemple d'écriture que j'ai développé pour les 9 timers)

Sub timer1()
'lancement mise à jour feuille1

Call UpdBtn_Mettre___jour
'MAJ calculs (pas important pour mon problème)

Call SendEMailwithAttachments
'Message Outlook (pas important pour mon problème)

Call Armetimer1
'code pour réarmer le timer1

End Sub


Sub timer2()
'lancement mise à jour feuille2

Call UpdBtn_Mettre___jour
'MAJ calculs (pas important pour mon problème)

Call SendEMailwithAttachments
'Message Outlook (pas important pour mon problème)

Call Armetimer2
'code pour réarmer le timer2

End Sub


Sub Armetimer1()
'code pour réarmer le timer1

If Time > TimeValue("11:00:00") Then
Application.OnTime Date + 1 + TimeValue("11:00:00"), "timer1"
Else
Application.OnTime TimeValue("11:00:00"), "timer1"
End If

End Sub


Sub Armetimer2()
'code pour réarmer le timer2

If Time > TimeValue("11:05:00") Then
Application.OnTime Date + 1 + TimeValue("11:05:00"), "timer2"
Else
Application.OnTime TimeValue("11:05:00"), "timer2"
End If

End Sub

ps : les procédures de mises à jour de mes calculs ainsi que celles qui expédient les messages Outlook fonctionnent parfaitement. :rolleyes:

Merci par avance pour votre aide et vos précieux conseils, mon sac de noeuds dispose de nombreuses pistes sur la toile et je pense avoir tout mélangé désormais.:confused:
Dans cette attente, très bonne journée à tous.

BudBundy.
 

Discussions similaires

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus