[VBA]Répéter une macro automatiquement

Résolu
Bonjour,

je voudrais qu'une macro (je suis sous excel) se lance toutes les 30 sec, je crois qu'i faut faire une boucle mais je ne sais pas comment la faire :-(

voici le code de ma macro que je voudrais répéter

Sub RafraichissementGraphe()

Application.OnTime TimeSerial(0, 0, 10), "EnregistrerEnPageWeb"

End Sub


Merci d'avance

2 réponses

  1. Salut

    L'application OnTime permet de lancer une procédure à une heure donnée.
    Pour répéter une action à intervalles donnés, il ne faut donc pas que tu appelles ta procédure "EnregistrerEnPageWeb", mais que tu à nouveau ta procédure RafraichissementGraphe de manière à boucler.

    Niveau code ça donnerai ça :
    Sub RafraichissementGraphe()
        ' Définit l'intervalle avec l'heure actuelle + trente secondes
        DansTrenteSecondes = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 30)
        ' Appel récursif de la fonction RafraichissementGraphe
        Application.OnTime DansTrenteSecondes, "RafraichissementGraphe"
        ' Appel de la fonction EnregistrerEnPageWeb
        Call EnregistrerEnPageWeb
    End Sub
    
    1. Merci beaucoup beaucoup, sa marche d'enfer (et c''est plus simple que ce que je pensais ^^)

      Encore merci
    2. au fait Onesdf comment je fais pour l'arreter la macro?
      parceque j'aimerais la stopper à 21HOO?

      Merci d'avance
    3. @ApollineAvec un test :
      Sub RafraichissementGraphe()
          ' Définit l'intervalle avec l'heure actuelle + trente secondes
          DansTrenteSecondes = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 30)
          If DansTrenteSecondes < "21:00:00" Then
              ' Appel récursif de la fonction RafraichissementGraphe
              Application.OnTime DansTrenteSecondes, "RafraichissementGraphe"
              ' Appel de la fonction EnregistrerEnPageWeb
              Call EnregistrerEnPageWeb
          End If
      End Sub
      
  2. Ca date, mais pour 15 minutes ? merci.

    C'est ça ?

    DansQuinzeMinutes = TimeSerial(Hour(Time), Minute(Time) + 15, Second(Time))