Partager via

Créer une macro qui s'exécute automatiquement à intervalles réguliers

Anonyme
2023-06-15T13:28:13+00:00

Bonjour,

Dans Excel, je souhaiterais réaliser une macro qui s'exécute automatiquement, par exemple, toutes les 5 minutes. Je maitrise honnêtement des macros dont le démarrage se fait à l'aide d'un bouton, mais dans un cas particulier, je souhauiterais qu'elle démarre seule à intervalles réguliers, sans intervention de ma part.

Merci pour votre aide

Daniel

Microsoft 365 et Office | Excel | Autres | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

Réponse acceptée par l’auteur de la question

DanielCo 107.7K Points de réputation
2023-06-20T09:21:42+00:00

Bonjour,

Je viens de recopier le code pour vérifier en ajoutant un msgbox dans la macro. Celui-ci s'affiche bien toutes les minutes. Regarde le classeur :

https://www.cjoint.com/c/MFujvgrOS86

Daniel

Cette réponse a-t-elle été utile ?

2 personnes ont trouvé cette réponse utile.
0 commentaires Aucun commentaire

9 réponses supplémentaires

  1. Anonyme
    2023-06-16T14:40:56+00:00

    Merci pour cette réponse rapide, j’essaierai lundi et te reviendrai si je n’en sors pas.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.7K Points de réputation
    2023-06-16T12:33:11+00:00

    Bonjour,

    Je vais expliquer mon code. Dans le module ThisWorkbook, on met la macro qui démarre l'exécution périodique. Tu peux la mettre ailleurs si tu veux démarrer manuellement cette exécution :

    Private Sub Workbook_Open()
    Intervalle = Now + TimeValue("00:05:00")
    Application.OnTime Intervalle, "Macro3"
    End Sub

    Dans le module ThisWorkbook, Workbook_Open est une macro qui se démarre automatiquement à l'ouverture du classeur.

    Intervalle = Now + TimeValue("00:05:00")

    définit la périodicité d'exécution : dans 5 mn à partir de maintenant.

    Application.OnTime Intervalle, "Macro3"

    enclenche l'exécution de Macro3 dans 5 mn. Tu dois maintenant ajouter ces deux lignes dans Macro3 :

    Intervalle = Now + TimeValue("00:05:00")  
    Application.OnTime Intervalle, "Macro3"  
    

    Ce sont les mêmes lignes que ci-dessus. Quand macro3 s'exécute, elle programme une nouvelle exécution dans 5 mn.

    Enfin, j'ai mis cette macro à la fermeture du classeur pour supprimer la dernière exécution deMacro3 programmée, afin d'éviter une erreur :

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Intervalle, "Macro3", , False
    End Sub

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2023-06-16T12:07:34+00:00

    Bonjour, merci pour cette réponse.

    Excuse moi, je dois être complètement ****, mais je ne comprends rien du tout!

    Si je souhaite, par exemple, exécuter toutes les 5 minutes la macro3 ( voir ci-dessous) qui copie ce qui est dans A1 (ou j'ai écris la fonction MAINTENANT()) et le colle "valeur" dans la case E1. Comme cela je devrais voir l'heure s'incrémenter toutes les 5 minutes dans la case E1!

    N.B. Cette macro3 est située dans le module1

    Sub Macro3()

    ' Macro3 Macro

    *Range("A1").Select* 
    
    *Selection.Copy* 
    
    *Range("E1").Select* 
    
    *Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks \_* 
    
        *:=False, Transpose:=False* 
    
    *Application.CutCopyMode = False* 
    

    End Sub

    Que dois je écrire exactement dans ThisWorkbook

    Que dois je écrire exactement dans module 1

    J'utilise énormément Excel dans la gestion de l'entreprise depuis plus de 20 ans mais, pour les macros, je les crée en enregistrant les instructions pendant que je fais les calculs souhaités dans excel et, sur base de ce qui se programme automatiquement dans Visual Basic, j'adapte éventuellement des destinations, etc.... Je déclenche alors le fonctionnement de ces macros via des boutons.

    Comme dans une langue étrangère, je comprends dans le sens langue étrangère vers le français mais c'est beaucoup plus difficile dans le sens français vers langue étrangère!

    Je n'ai donc jamais rencontré les instructions que tu mentionnes et je suis perturbé par le fai que tu mentionnes deux fois la même chose et en plus une double macro puisque tu mets 2 End Sub.

    Est ce que "MSG" c'est précisément le nom de la macro que je veux exécuter toutes les 5 minutes ?

    Merci d'avance pour ta patience et pour ton aide.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. DanielCo 107.7K Points de réputation
    2023-06-15T13:42:42+00:00

    Bonjour,

    Voici un exemple de code qui affiche un message toutes les 5 mn. Dans le module ThisWorkbook, mets :

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Intervalle, "MSG", , False
    End Sub

    Private Sub Workbook_Open()
    Intervalle = Now + TimeValue("00:05:00")
    Application.OnTime Intervalle, "MSG"
    End Sub

    Dans un module standard, mets :

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnTime Intervalle, "MSG", , False
    End Sub

    Private Sub Workbook_Open()
    Intervalle = Now + TimeValue("00:05:00")
    Application.OnTime Intervalle, "MSG"
    End Sub

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire