Laps de temps VBA
Tom
-
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 25847 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrais savoir comment je pourrai dire en VBA "execute cette action toute les 3 minutes 30 secondes". Je voudrais créé une macro qui exécute une action à intervalle de temps régulier.
Merci
Je voudrais savoir comment je pourrai dire en VBA "execute cette action toute les 3 minutes 30 secondes". Je voudrais créé une macro qui exécute une action à intervalle de temps régulier.
Merci
9 réponses
Bonjour,
Vois ici un exemple pour l'enregistrement toutes les x minutes d'une fichier Excel:
http://gerard.g.pagesperso-orange.fr/logexl_09.htm#enregauto
Code à adapter à l'action et au temps.
Cordialement.
Vois ici un exemple pour l'enregistrement toutes les x minutes d'une fichier Excel:
http://gerard.g.pagesperso-orange.fr/logexl_09.htm#enregauto
Code à adapter à l'action et au temps.
Cordialement.
Tom
ok merci, je vais y jeter un oeil
J'ai une petite question...
Ce code permet d'actionner un sub à intervalle régulier. Mais peut-on faire de même avec une fonction?
Désolé si ca parait trivial, mais je débute, et j'ai une fonction qui, au changement d'une cellule, ne me renvoi que des zéros, et si je sélectionne la cellule où j'utilise cette fonction, et que je la valide, elle me recalcule toutes les cellules utilisant cette fonction...
Merci
Ce code permet d'actionner un sub à intervalle régulier. Mais peut-on faire de même avec une fonction?
Désolé si ca parait trivial, mais je débute, et j'ai une fonction qui, au changement d'une cellule, ne me renvoi que des zéros, et si je sélectionne la cellule où j'utilise cette fonction, et que je la valide, elle me recalcule toutes les cellules utilisant cette fonction...
Merci
Bonjour,
regarde l'aide excel sur OnTime, il y a un exemple.
eric
edit: ah, j'ai répondu un peu tard....
clem = tom ? et = quoi encore ?
Mais peut-on faire de même avec une fonction?
Il me semble que tu as déjà posé cette question...
regarde l'aide excel sur OnTime, il y a un exemple.
eric
edit: ah, j'ai répondu un peu tard....
clem = tom ? et = quoi encore ?
Mais peut-on faire de même avec une fonction?
Il me semble que tu as déjà posé cette question...
Connaitriez-vous la fonction pour rafraichir une page web en VBA?
J'arrive à lancer le navigateur, mais après je ne sais pas comment rafraichir une page.
J'arrive à lancer le navigateur, mais après je ne sais pas comment rafraichir une page.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Pour rafraichier une page web, tu peux appuyer sur la touche F5.
Peut être peux tu déclencher ça en utilisant SendKeys :
Cordialement,
Franck P
Pour rafraichier une page web, tu peux appuyer sur la touche F5.
Peut être peux tu déclencher ça en utilisant SendKeys :
SendKeys "{F5}", True
Cordialement,
Franck P
Merci pjaku, je vais essayer. Par contre, j'ai l'impression que je n'ai pas bien saisi comment fonctionnait OnTime parce que ma macro qui consiste à rafraichir une page web toutes les 3 min 30 s ne fonctionne. Excel me dit que ma macro n'est pas présente dans ce classeur ou que mes macros sont désactivés...
Pour l'instant ma macro ne fait que lancer le navigateur toute les 3 min 30 s, elle ne rafraichit pas vraiment mais déjà ça ne marche pas.
Public MTime As Date
Sub Refresh()
Dim IE As New InternetExplorer
'Chargement d'une page web Google
IE.Navigate "http://www.commentcamarche.net/forum/affich-25605717-laps-de-temps-vba#newanswer"
'Affichage de la fenêtre IE
IE.Visible = True
'On libère la variable IE
IE=Nothing
MTime = Time
Application.OnTime MTime + TimeValue("00:03:30"), "Refresh"
End Sub
Pour l'instant ma macro ne fait que lancer le navigateur toute les 3 min 30 s, elle ne rafraichit pas vraiment mais déjà ça ne marche pas.
Public MTime As Date
Sub Refresh()
Dim IE As New InternetExplorer
'Chargement d'une page web Google
IE.Navigate "http://www.commentcamarche.net/forum/affich-25605717-laps-de-temps-vba#newanswer"
'Affichage de la fenêtre IE
IE.Visible = True
'On libère la variable IE
IE=Nothing
MTime = Time
Application.OnTime MTime + TimeValue("00:03:30"), "Refresh"
End Sub
Une petite erreur dans le code que j'ai posté, il y a un set qui manque. Voici le vrai code, si quelqu'un sait pourquoi ça ne marche pas je lui en serai reconnaissant.
Public MTime As Date
Sub Refresh()
Dim IE As New InternetExplorer
'Chargement d'une page web Google
IE.Navigate "www.youtube.com/watch?v=eVKj3u8JUm0"
'Affichage de la fenêtre IE
IE.Visible = True
'On libère la variable IE
Set IE = Nothing
MTime = Time
Application.OnTime MTime + TimeValue("00:03:30"), "Refresh"
End Sub
Public MTime As Date
Sub Refresh()
Dim IE As New InternetExplorer
'Chargement d'une page web Google
IE.Navigate "www.youtube.com/watch?v=eVKj3u8JUm0"
'Affichage de la fenêtre IE
IE.Visible = True
'On libère la variable IE
Set IE = Nothing
MTime = Time
Application.OnTime MTime + TimeValue("00:03:30"), "Refresh"
End Sub
Salut Eriiic,
Un p'tit relais?
Sur le modèle proposé plus haut par g, essaye ce code (pas testé) :
Un p'tit relais?
Sur le modèle proposé plus haut par g, essaye ce code (pas testé) :
Public MTime As Date
Sub Refresh()
Dim IE As New InternetExplorer
'Chargement d'une page web Google
IE.Navigate "www.youtube.com/watch?v=eVKj3u8JUm0"
'Affichage de la fenêtre IE
IE.Visible = True
'On libère la variable IE
Set IE = Nothing
MTime = Time
SendKeys "{F5}", True
Application.OnTime MTime + TimeValue("00:03:30"), "Refresh"
End Sub
Bonjour eriiicc,
Désolé, cette proposition est passé inaperçu, je n'avais vu que le commentaire croyant que le message du dessus était le mien...
Après test j'obtiens toujours la même chose, voir la capture: http://cjoint.com/?3GrmkQAhX8O
Merci d'avance
Désolé, cette proposition est passé inaperçu, je n'avais vu que le commentaire croyant que le message du dessus était le mien...
Après test j'obtiens toujours la même chose, voir la capture: http://cjoint.com/?3GrmkQAhX8O
Merci d'avance
Ce post était de pijaku.
Pour moi il faut séparer la création de la fenêtre (à faire 1 fois) du rafraichissement.
Le pb avec sendkeys c'est qu'il faut activer la fenêtre en avant plan à chaque fois. Si tu travailles sur le micro en même temps ça risque de devenir pénible.
Si c'est pour récupérer des données d'une page web regarde plutôt du coté de 'données / données externes / nouvelle requête sur le web...' qui peut être rafraichie automatiquement.
Pas toujours utilisable, ça dépend de comment est construit le site.
exemple de requête web : https://www.cjoint.com/?BGrmLxnysfp
eric
Pour moi il faut séparer la création de la fenêtre (à faire 1 fois) du rafraichissement.
Le pb avec sendkeys c'est qu'il faut activer la fenêtre en avant plan à chaque fois. Si tu travailles sur le micro en même temps ça risque de devenir pénible.
Sub Refresh()
AppActivate "titre de ta fenêtre IE"
MTime = Time
SendKeys "{F5}", True
Application.OnTime MTime + TimeValue("00:03:30"), "Refresh"
End Sub
Si c'est pour récupérer des données d'une page web regarde plutôt du coté de 'données / données externes / nouvelle requête sur le web...' qui peut être rafraichie automatiquement.
Pas toujours utilisable, ça dépend de comment est construit le site.
exemple de requête web : https://www.cjoint.com/?BGrmLxnysfp
eric
J'ai séparé les 2 comme tu m'as dit, voici la nouvelle macro mais ça m'affiche toujours le même message, même si mon navigateur est en avant plan. J'ai expérimenté sur une page youtube...
Public MTime As Date
Sub Refresh2()
AppActivate "Super Mario 64 - End theme "
MTime = Time
SendKeys "{F5}", True
Application.OnTime MTime + TimeValue("00:00:30"), "Refresh"
End Sub
Public MTime As Date
Sub Refresh2()
AppActivate "Super Mario 64 - End theme "
MTime = Time
SendKeys "{F5}", True
Application.OnTime MTime + TimeValue("00:00:30"), "Refresh"
End Sub
Juste 2 dernières questions: comment je fais pour stopper le processus de rafraichissement sans quitter Excel?
Peut-on programmer un nombre de rafraichissement limite?
Peut-on programmer un nombre de rafraichissement limite?
Merci eriiic, par contre pour annuler il faut faire une macro indépendante? Voilà ce que j'ai essayé et ça ne marche pas, j'ai aussi essayé sans le MTime.
Public MTime As Date
Sub Annuler()
Application.OnTime EarliestTime:=MTime + TimeValue("00:03:26"), Procedure:="Refresh2", Schedule:=False
End Sub
Public MTime As Date
Sub Annuler()
Application.OnTime EarliestTime:=MTime + TimeValue("00:03:26"), Procedure:="Refresh2", Schedule:=False
End Sub
Bonjour,
il faut annuler le précédent temps activé que tu aurais mémorisé.
Mais comme tu veux arreter au bout de x fois, il suffit de tester le compteur et ne pas relancer.
Ca donnerait qcq chose comme ça :
Il faudra peut-être déclarer la variable cpt en Static pour ton compteur, je ne peux pas tester.
Et une autre procédure pour remettre ton compteur à 0 et relancer.
eric
il faut annuler le précédent temps activé que tu aurais mémorisé.
Mais comme tu veux arreter au bout de x fois, il suffit de tester le compteur et ne pas relancer.
Ca donnerait qcq chose comme ça :
Public MTime As Date, cpt As Long
Sub Refresh2()
If cpt < 40 Then
AppActivate "Super Mario 64 - End theme "
MTime = Time
SendKeys "{F5}", True
Application.OnTime MTime + TimeValue("00:00:30"), "Refresh2"
cpt = cpt + 1
End If
End Sub
Il faudra peut-être déclarer la variable cpt en Static pour ton compteur, je ne peux pas tester.
Et une autre procédure pour remettre ton compteur à 0 et relancer.
eric
Merci, ça marche très bien!
Je l'ai déclaré en static et j'ai rajouté un else cpt=0, ainsi cpt se réinitialise dès que la boucle est finit.
Par contre je veux bien savoir comment on annule le temps précédent dans cet exemple sans passer par une condition, parce que ma tentative précédente est resté vaine...
Autre chose, tu sais si c'est possible de réactiver la fenêtre sur laquelle je travaillais avant chaque AppActivate? ça serait vraiment top si j'arrivais à déjouer ce défaut.
Merci
Je l'ai déclaré en static et j'ai rajouté un else cpt=0, ainsi cpt se réinitialise dès que la boucle est finit.
Par contre je veux bien savoir comment on annule le temps précédent dans cet exemple sans passer par une condition, parce que ma tentative précédente est resté vaine...
Autre chose, tu sais si c'est possible de réactiver la fenêtre sur laquelle je travaillais avant chaque AppActivate? ça serait vraiment top si j'arrivais à déjouer ce défaut.
Merci
Bonjour,
Par contre je veux bien savoir comment on annule le temps précédent dans cet exemple sans passer par une condition, parce que ma tentative précédente est resté vaine...
Je t'y ai déjà répondu :
il faut annuler le précédent temps activé que tu aurais mémorisé ( et non un nouveau temps calculé).
Autre chose, tu sais si c'est possible de réactiver la fenêtre sur laquelle je travaillais
Et bien refais un appactivate en utilisant le paramètre wait
eric
Par contre je veux bien savoir comment on annule le temps précédent dans cet exemple sans passer par une condition, parce que ma tentative précédente est resté vaine...
Je t'y ai déjà répondu :
il faut annuler le précédent temps activé que tu aurais mémorisé ( et non un nouveau temps calculé).
Autre chose, tu sais si c'est possible de réactiver la fenêtre sur laquelle je travaillais
Et bien refais un appactivate en utilisant le paramètre wait
eric