[VBA]Répéter une macro automatiquement

Résolu
Apolline -  
Bilow Messages postés 1014 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

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
Apolline
 
Merci beaucoup beaucoup, sa marche d'enfer (et c''est plus simple que ce que je pensais ^^)

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

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

C'est ça ?

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