Microsoft 365 Application.OnTime

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 !

SCorbeil

XLDnaute Nouveau
Bonjour,

Petit problème avec l'exécution de cette macro.

VB:
Sub GOAuto()

Dim HrREQ1 As Date
Dim HrREQ2 As Date
Dim JrSEM As Integer

JrSEM = Weekday(Now(), vbMonday)
HrREQ1 = TimeSerial(15, 30, 0)
HrREQ2 = TimeSerial(11, 30, 0)

If JrSEM = 5 Then

    Application.OnTime HrREQ2, "REQAutomatique", , True
    
End If

If JrSEM < 5 Then

    Application.OnTime HrREQ1, "REQAutomatique", , True
    
End If

If JrSEM > 5 Then

Resume Next

End If

End Sub

La macro "GOAuto" est lancée avec l'ouverture du Workbook, mais ne lance pas la macro "REQAutomatique" à l'heure prévue. Le Workbook est fermé à tous les jours (à la fermeture des bureaux) et lancé à nouveau chaque jours ouvrable par le premier utilisateur.

Je suis possiblement encore si près de l'arbre qu'il m'est pas possible de voir la forêt.

Merci à l'avance à tous les collaborateurs.
 
Solution
re
sinon on se rappelle le bon vieux temps ou l'on se servait de VBSCript et on adapte en vba

exemple
VB:
'tout les mercredi a 18:04
Sub test()
    Set wShell = CreateObject("Wscript.Shell")
    jour = "WED"    'pour le mercredi
    'pour plusieurs jours
    'jour= "MON,TUE,WED,THU,FRI,SAT,SUN"
   
    NomTACHE = """patrick"""
   
    chemin_fichier = """C:\Users\polux\DeskTop\aaa.cmd"""
   
    A_quelle_Heure = "18:05"
   
    'codée avec argument
    wShell.Run "SchTasks /Create /SC WEEKLY /D " & jour & " /TN " & NomTACHE & " /TR " & chemin_fichier & " /ST " & A_quelle_Heure
   
    'codée en dur
    'wShell.Run "SchTasks /Create /SC WEEKLY /D WED /TN 'patrick' /TR 'C:\Users\polux\DeskTop\aaa.cmd' /ST 18:05"
End Sub
je suis...
Bonsoir,
VB:
Sub GOAuto()

    Dim HrREQ1 As Date
    Dim HrREQ2 As Date
    Dim JrSEM As Integer
   
    JrSEM = Weekday(Now(), vbMonday)
    'HrREQ1 = TimeSerial(22, 22, 0)
    HrREQ1 = Now + TimeSerial(0, 1, 0) 'Dans 1 minute
    HrREQ2 = Now + TimeSerial(0, 2, 0) 'Dans 2 minutes
   
    If JrSEM = 5 Then
        Application.OnTime HrREQ2, "REQAutomatique", , True
    End If
   
    If JrSEM < 5 Then
        Application.OnTime HrREQ1, "REQAutomatique", , True
       
    End If
   
    If JrSEM > 5 Then
        'Resume Next
    End If
   
End Sub

Sub REQAutomatique()
    MsgBox "C'est l'heure"
End Sub
Cordialement,
--
LR
 
Bonsoir,
VB:
Sub GOAuto()

    Dim HrREQ1 As Date
    Dim HrREQ2 As Date
    Dim JrSEM As Integer
  
    JrSEM = Weekday(Now(), vbMonday)
    'HrREQ1 = TimeSerial(22, 22, 0)
    HrREQ1 = Now + TimeSerial(0, 1, 0) 'Dans 1 minute
    HrREQ2 = Now + TimeSerial(0, 2, 0) 'Dans 2 minutes
  
    If JrSEM = 5 Then
        Application.OnTime HrREQ2, "REQAutomatique", , True
    End If
  
    If JrSEM < 5 Then
        Application.OnTime HrREQ1, "REQAutomatique", , True
      
    End If
  
    If JrSEM > 5 Then
        'Resume Next
    End If
  
End Sub

Sub REQAutomatique()
    MsgBox "C'est l'heure"
End Sub
Cordialement,
--
LR

Bonjour Laurent3372,

Merci pour cette réponse, mais l'objectif est de lancer la macro "REQAutomatique" à une heure précise soit 15h30 du lundi au jeudi inclusivement et à 11h30 les vendredis.

C'est pour cette raison que j'ai ajouté la notion de jour de semaine qui est représenté par la variable "JrSEM" qui prend en considération que le lundi est le 1er jour de la semaine.

Donc, la quête continue et au risque de me répéter, je vous remercie encore pour votre réponse.

Cordialement,
 
Sans titre.png
 
re
bonjour
Le planificateur de tâches ne sait que lancer une tâche tous les jours à la même heure. Il ne fait pas de distinction entre les jours de la semaine

depuis quand le planificateur ne fait que ca !!!!??????

et puis la on est pas dans planificateur de tache on est dans excel avec on time
ca implique que le fichier doit rester ouvert

tu a l'api shreduler ou le trigger service pour ca 😉
 
re
sinon on se rappelle le bon vieux temps ou l'on se servait de VBSCript et on adapte en vba

exemple
VB:
'tout les mercredi a 18:04
Sub test()
    Set wShell = CreateObject("Wscript.Shell")
    jour = "WED"    'pour le mercredi
    'pour plusieurs jours
    'jour= "MON,TUE,WED,THU,FRI,SAT,SUN"
   
    NomTACHE = """patrick"""
   
    chemin_fichier = """C:\Users\polux\DeskTop\aaa.cmd"""
   
    A_quelle_Heure = "18:05"
   
    'codée avec argument
    wShell.Run "SchTasks /Create /SC WEEKLY /D " & jour & " /TN " & NomTACHE & " /TR " & chemin_fichier & " /ST " & A_quelle_Heure
   
    'codée en dur
    'wShell.Run "SchTasks /Create /SC WEEKLY /D WED /TN 'patrick' /TR 'C:\Users\polux\DeskTop\aaa.cmd' /ST 18:05"
End Sub
je suis nostalgique d'un coup là 😉 😎

si on veux pas le répéter c'est ONLY a la place de WEEKLY

a noter les triples guillemets qui deviennent un seul en interne ne pas les oublier 😉

ps: je viens de tester sur W7 64 excel 32 2007 ca marche encore

a +

edit si je regarde dans mon planifieur de tache on vois bien les taches programer on ne peut plus explicite
Capture.JPG
 
Dernière édition:
Bonsoir.
De mémoire un Application.OnTime ouvre le classeur s'il y a lieu pour pouvoir exécuter la macro. Mais si c'est pour le lendemain il me semble préférable de spécifier la date et l'heure plutôt que l'heure seule. Faire DH = Date + TimeSerial(15, 30, 00): If DH< Now Then DH=DH + 1. Évitez aussi d'exécuter plusieurs fois le Application.OnTime DH pour la même date/heure.
 
Oui, qu'est-ce qu'il y a ?
Beaucoup ne le sachant pas n'arrivèrent plus à refermer un classeur par ce qu'il se rouvrait tout le temps à cause d'un Application.OnTime exécuté à la fin de la procédure planifiée pour la seconde d'après !
Mais on ne sait jamais, les choses changent au fil des versions d'Excel …
 
- 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

Discussions similaires

Réponses
72
Affichages
1 K
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
7
Affichages
795
Réponses
7
Affichages
1 K
Retour