lancement d'une macro toutes les 10 mn

philmaure

XLDnaute Impliqué
Bonjour à tous,

Comment programmer une macro de telle façon qu'elle se lance toutes les 10 mn.
J'ai lu qu'il y avait la fonction Ontime mais je ne sais comment m'en servir.
Pour info je vous met la macro en question.
Sub Actualisation_Données_CCS()
'
' Macro4 Macro
' Macro enregistrée le 17/11/2011 par updy6530
'

'
Range("G11").Select
ChDir "T:\Enregistreur Bandeau"
Workbooks.Open Filename:="T:\Enregistreur Bandeau\enregistreur.xls", Notify _
:=False
Columns("A:F").Select
Range("A9714").Activate
Selection.Copy
Windows("Adhérence à chaud.xls").Activate
Sheets("Flux").Select
Range("A1").Select
ActiveSheet.Paste
Windows("enregistreur.xls").Activate
Sheets("GT").Select
Columns("A:F").Select
Range("A8634").Activate
Application.CutCopyMode = False
Selection.Copy
Windows("Adhérence à chaud.xls").Activate
Sheets("GT").Select
Range("A1").Select
ActiveSheet.Paste
Sheets("Flux").Select
Range("I15").Select
Application.CutCopyMode = False
Windows("enregistreur.xls").Activate
ActiveWorkbook.Close
End Sub

Merci pour vos réponse
Cdlt
philippe
 
G

Guest

Guest
Re : lancement d'une macro toutes les 10 mn

Bonjour,

A mettre dans le module Thisworkbook pour lancer une première fois la procédure 10 minutes après l'ouverture du fichier.

Code:
Private Sub Workbook_Open()
    Application.OnTime _
            EarliestTime:=Now + TimeValue("00:10:00"), _
            Procedure:="Actualisation_Données_CCS"
End Sub

La macro réécrite qui se rappellera elle-même après 10 minutes jusqu'à la fermeture du fichier.

Code:
Sub Actualisation_Données_CCS()
  'Classeur destination des copies
    Dim wk As Workbook
    Set wk = Workbooks("Adhérence à chaud.xls")
    ChDir "T:\Enregistreur Bandeau"
 
    'Ouverture fichier
    Workbooks.Open Filename:="T:\Enregistreur Bandeau\enregistreur.xls", Notify:=False
 
    'Copy et collage dans la feuille "Flux"
    Columns("A:F").Copy Destination:=wk.Sheets("Flux").Range("A1")
 
    'Copy et collage dans la feuille "GT"
    Sheets("GT").Columns("A:F").Range("A8634").Copy Destination:=wk.Sheets("GT").Range("A1")
 
    Application.CutCopyMode = False
 
    'Fermeture du fichier source
    Workbooks("enregistreur.xls").Close
 
    'Activation de Flux!I15
    Application.Goto wk.Sheets("Flux").Range("I15")
 
    'La procédure se rappelera elle-même 10 minutes après
    Application.OnTime _
            EarliestTime:=Now + TimeValue("00:10:00"), _
            Procedure:="Actualisation_Données_CCS", _
            Schedule:=True
End Sub

A+
 
Dernière modification par un modérateur:

mécano41

XLDnaute Accro
Re : lancement d'une macro toutes les 10 mn

Bonjour à tous,

Pour Hasco :

J'ai voulu essayer cette fonction que je n'avais jamais eu l'occasion d'utiliser et j'ai un souci...La syntaxe est pourtant la même que dans tes indications et celle de l'aide EXCEL...Je suis sous EXCEL 2010.

Les explications sont dans le fichier ; pourrais-tu me dire où est l'erreur

Merci d'avance

Cordialement
 

Pièces jointes

  • Lancer procédure toutes les X secondes.xlsm
    14.6 KB · Affichages: 105
  • Lancer procédure toutes les X secondes.xlsm
    14.6 KB · Affichages: 122
  • Lancer procédure toutes les X secondes.xlsm
    14.6 KB · Affichages: 111
G

Guest

Guest
Re : lancement d'une macro toutes les 10 mn

Bonjour,

Mécano, c'est moi qui me suis trompé, Schedule:=False permet de supprimer un OnTime programmé à une certaine heure.

Par exemple tu programmes lancement de procédure à 10 heures

Code:
Application.OnTime _
            EarliestTime:=Now + TimeValue("10:00:00") _
            Procedure:="ProcedureArelancer

Si tu veux l'annuler tu lances (avant 10:00:00):

Code:
Application.OnTime _
            EarliestTime:=Now + TimeValue("10:00:00"), _
            Procedure:="ProcedureArelancer", _
            Schedule:=False

Le lancement programmé précédement ne se fera pas.

C'est donc normal que ontime Now+TimeValue ne trouve pas de procédure à annuler puisque now, varie sans arrêt.

A+
A+
 

mécano41

XLDnaute Accro
Re : lancement d'une macro toutes les 10 mn

Cela veut dire qu'avec le fichier joint, si je ferme la Msgbox puis le fichier lui-même, il s'ouvre à nouveau tout seul au bout de 10 secondes...Si je veux le fermer définitivement, il faut que je ferme EXCEL également.

Cordialement
 

Pièces jointes

  • Lancer procédure toutes les X secondes.xlsm
    14.1 KB · Affichages: 87
  • Lancer procédure toutes les X secondes.xlsm
    14.1 KB · Affichages: 96
  • Lancer procédure toutes les X secondes.xlsm
    14.1 KB · Affichages: 90
G

Guest

Guest
Re : lancement d'une macro toutes les 10 mn

Re,

Dans le fichier joint, création d'une variable publique 'Moment' qui retient le moment du prochain appel à la procédure. Dans WorkBook_Before close, un application.OntIme sur ce moment avec Schedule:=False.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 087 964
Membres
103 687
dernier inscrit
olivier72