Bonjour,
Je cherche à lancer une macro automatiquement toutes les minutes.
Auriez-vous une solution ?
Merci par avance
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, 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,
![]()
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 '------------------------------------------------------------------------------------------------------ Private Sub Application_Startup() '------------------------------------------------------------------------------------------------------ InitialiseTraitementDiffere End Sub
Débutants, n'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA.
Pour les curieux, le tome 3 explique le problème du voyageur de commerce.
Le tome 4 est consacré à la cryptologie en VBA.
Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
En bonus : Programmation en VBA de menus personnalisés pour Excel, Manipuler les données des bases Access depuis Excel et Transférer des fichiers volumineux avec Outlook.
Partager