[VBA]Répéter une macro automatiquement

Résolu
Apolline -  
Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   -
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. onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120
     
    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
    
    2
    1. Apolline
       
      Merci beaucoup beaucoup, sa marche d'enfer (et c''est plus simple que ce que je pensais ^^)

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

      Merci d'avance
      0
      1. onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   120 > Apolline
         
        Avec 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
        
        0
      2. Apolline > onesdf Messages postés 375 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci Onesdf ca marche super ;-)
        0
  2. DJ FA Messages postés 57 Statut Membre
     
    Ca date, mais pour 15 minutes ? merci.

    C'est ça ?

    DansQuinzeMinutes = TimeSerial(Hour(Time), Minute(Time) + 15, Second(Time))
    0
    1. Bilow Messages postés 171 Date d'inscription   Statut Membre Dernière intervention   117
       
      Oui ;-)
      0