Bonjour,
Je cherche à lancer une macro automatiquement toutes les minutes.
Auriez-vous une solution ?
Merci par avance
Version imprimable
Bonjour,
Je cherche à lancer une macro automatiquement toutes les minutes.
Auriez-vous une solution ?
Merci par avance
Bonsoir,
Le planificateur des tâches de Windows est parfait pour çà.
Salut,
J'ai fait un article sur ce sujet
https://www.developpez.net/forums/bl...rrence-donnee/
Bonjour Olivier,
j'arrive à utiliser le gestionnaire des tâches avec un VBS sous Excel,
mais Outlook c'est très compliqué pour moi,
Hier en faisant des recherches, je n'ai pas trouvé comment lancer une macro Outlook,
Ton post tombe à Pic :yaisse2:, par contre je n'arrive pas l'ouvrir
Il était resté en statut Ebauche, tu peux essayer de nouveau.
Bonjour et bonne année 2021 à tous,
Je comprends pourquoi je n'avais rien trouvé,
Merci Olivier,
:plusser:
Bonjour.
Pour ma part j'utilise une autre façon de faire pour exécuter une macro toutes les minutes (mais qui nécessite que Outlook soit ouvert).
Avec l'aide des API SetTimer et KillTimer.
En trois phases :
1) Initialiser un "timer" en indiquant la fréquence de répétition (toutes les x secondes) et la macro à lancer = InitialiseTraitementDiffere;
2) Ecrire la macro désirée = TraitementDiffere ;
3) Prévoir éventuellement l'arrêt du "timer", s'il y a besoin de l'arrêter à un moment donné = TermineTraitementDiffere. Sinon le traitement est lancé à la fréquence indiquée tant que Outlook est ouvert.
Dans l'exemple ci-dessous la macro différée ne fait qu'afficher l'heure dans le débuggeur, mais vous adapterez à votre besoin.
Ce code doit être impérativement écrit dans un Module classique (pas un module de class ni ThisOutlookSession)
L'initialisation peut être faite (suivant le but recherché) :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Option Explicit Private Declare PtrSafe Function SetTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As LongPtr Private Declare PtrSafe Function KillTimer Lib "user32.dll" (ByVal hwnd As LongPtr, ByVal nIDEvent As LongPtr) As Long ' Mémorise le pointeur obtenu avec SetTimer: Dim TimerPerso As LongPtr Dim DureeTimerSeconde As Long '------------------------------------------------------------------------------------------------------ Public Sub InitialiseTraitementDiffere() '------------------------------------------------------------------------------------------------------ ' Initialise la fréquence du traitement différé: '------------------------------------------------------------------------------------------------------ DureeTimerSeconde = 60 ' une minute TimerPerso = SetTimer(0, 0, 1000 * DureeTimerSeconde, AddressOf TraitementDiffere) End Sub '------------------------------------------------------------------------------------------------ Private Sub TraitementDiffere() '------------------------------------------------------------------------------------------------ ' Placez ici le traitement différé: '------------------------------------------------------------------------------------------------------ Debug.Print Format(Time, "hh:mm:ss") End Sub '------------------------------------------------------------------------------------------------------ Public Sub TermineTraitementDiffere() '------------------------------------------------------------------------------------------------------ ' Supprime la gestion du traitement différé: '------------------------------------------------------------------------------------------------------ Call KillTimer(0, TimerPerso) End Sub '------------------------------------------------------------------------------------------------------
Soit par un bouton placé dans Outlook
Soit à l'ouverture d'Outlook en ajoutant ce code dans l'objet ThisOutlookSession :
Cordialement.Code:
1
2
3
4
5 '------------------------------------------------------------------------------------------------------ Private Sub Application_Startup() '------------------------------------------------------------------------------------------------------ InitialiseTraitementDiffere End Sub