IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

lancement automatique d'une macro


Sujet :

Macros et VBA Excel

  1. #1
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut lancement automatique d'une macro
    bonjour
    je voudrais lancer automatiquement une macro a une certaine heure.
    par exemple, je voudrais que Windows déclanche a 8 heures du matin telle ou telle macro.

    comment puis je faire ceci?
    dans quel partie du site je peux regarder

    merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour que ta macro soit lancée, ton classeur doit être ouvert. Peux-tu garder ton fichier ouvert ?

    Si oui, tu peux créer une macro se lançant elle-même toutes les huit heures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub LaMacro()
    'Ton code
    Application.OnTime Now + TimeValue("08:00:00"), "LaMacro"
    End sub
    Il faut prévoir une macro qui te permette d'arrêter LaMacro.
    Tu peux également faire en sorte que l'application Excel ne soit pas visible bien qu'active... mais c'est un peu plus compliqué...
    Tu dis ce que tu "peux" faire

  3. #3
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    merci pour ta réponse.
    Je veux lancer une macro vers 8 heures du matin, et qui se termine vers 17heures.
    alors c'est assez intensifs et long comme runtime.
    Il faudrait que l'ordinateur "se repose" le reste du temps.
    Est-ce possible de le mettre en veille a partir d'une certaine heure, et de quitter la mise en veille vers 8 heures du matin (on est d'accors, cela ne relève plus de excel)

    ce que tu viens de me dire m'intéresse.

    Application.OnTime Now + TimeValue("08:00:00"), "LaMacro"
    Ca permet si j'ai bien comris de lancer la macro dans 8 heures (oui?)
    moi, je veux la lancer tous les jours à 8heures du matin

    Il faut prévoir une macro qui te permette d'arrêter LaMacro.
    Comment tu fais?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour que la macro ne s'exécute qu'une fois, si tu définis l'heure de départ, tu n'as pas besoin d'une autre macro
    Pour lancer la macro à une heure fixe, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Depart()
        Application.OnTime TimeValue("08:00:00"), "LaMacro"
    End sub
    Mais regarde l'aide en ligne à OnTime, tout est expliqué.
    Pour mettre en veille, ça ne concerne plus Excel, comme tu l'as compris. A la limite tu pourrais peut-être le faire en utilisant les API de Windows (?) mais quant à redémarrer la macro, là, à part une solution hard, je ne vois pas.
    Si quelqu'un peut démarrer le micro avant huit heures, tu peux placer le nom du fichier dans Démarrage : Sous Windows -> Bouton démarrer -> Programmes -> Démarrage
    A l'ouverture de ton fichier, un appel à Depart, dans l'événement Open de ThisWorkbook lance le processus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Depart
    End Sub
    Et tu places les macro Depart et LaMacro dans un module standard. LaMacro ne contenant plus que ton code (sans la ligne placée désormais dans la sub Depart

    Une autre idée : tu pourrais mettre ta macro en attente en reprenant la syntaxe de ma première réponse et en conservant la macro Depart.
    LaMacro deviendrait alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub LaMacro()
        'Ton code
        'quand ton code sera fini, la macro attendra jusqu'au lendemain matin 8h 
        Application.OnTime TimeValue("08:00:00"), "LaMacro"
    End sub
    L'UC est inactive tant que l'heure n'est pas atteinte (contrairement à Wait) la mise en veille de l'écran fonctionne. Reste à voir si la macro démarrera bien à huit heures malgré la veille. Mes tests semblent le confirmer mais il reste à le tester sur un code qui dure 9 heures.
    Tu peux faire ça ?
    Bonne soirée

  5. #5
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    Merci bcp pour ta réponse
    je vais essayer tout ca, je t'en dis des nouvelles

    voila ce que je veux faire:
    c'est récupérer tous les jours ouvrés du mois des données internet, du 8 heures du matin a 17 heures du soir. Je sais que ca se fait, puisque je l'ai vu dans le monde professionnel, pendant un stage que j'ai fait. On appellait ca des "batch"
    Maisc'est un processus assez intensif.

    Donc il faut que le PC se repose entre temps.

    Si quelqu'un peut démarrer le micro avant huit heures, tu peux placer le nom du fichier dans Démarrage : Sous Windows -> Bouton démarrer -> Programmes -> Démarrage
    Non, personne ne peux et ne dois toucher au PC. Il reste constamment allumé.
    On n'a pas encore inventé des PC qui s'allument tout seuls, mais on peut peut etre les mettre en veille.

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu règle la veille de windows à 1mn, l'écran se mettra en veille sans problème.
    Si le PC doit s'arrêter, là je n'ai pas de solution pour le redémarrer.
    Par contre, Ontime ne solicite pas l'UC et si l'UC n'est pas actif, seul le ventilo de transfo tournera. Par contre, la macro "paraît" s'exécuter à l'heure convenue.
    C'est ce que j'ai testé et c'est ce que j'évoque dans mon poste précédent.
    Peux-tu faire un test en grandeur nature, je n'ai pas de macro qui tourne assez longtemps pour le faire et je ne peux pas utiliser Wait pour simuler l'attente, Wait solicitant l'UC.
    Ai-je été clair ce coup-ci ?
    Bonne nuit

  7. #7
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Je ne suis pas un expert en la matière, mais voilà ce que j'ai personnellement déjà fait :

    1) Utilisation d'un fichier .bat avec l'opération d'ouverture de mon classeur Excel à l'intérieur (écriture sous l'éditeur de texte et enregistrement en .bat)

    2) Création d'un tâche planifiée pour lancer le .bat tous les jours à l'heure voulue

    Contenu de mon .bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /e/fichierbat "G:\oslb\macro.xls"

    Attention le chemin de ton Excel peut être différent.
    "Ne soyez rien, devenez sans cesse"

  8. #8
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    merci pour les rép

    Si tu règle la veille de windows à 1mn, l'écran se mettra en veille sans problème.
    Pendant que la macro tourne, je préfère que l'écran ne soit pas en veille.
    Mais pendant que le reste du temps tourne, j'aimerais que l'écran soit en veille.
    Peux-tu faire un test en grandeur nature, je n'ai pas de macro qui tourne assez longtemps pour le faire et je ne peux pas utiliser Wait pour simuler l'attente, Wait solicitant l'UC.
    Ai-je été clair ce coup-ci ?
    La actuellement, je ne peux pas, car je travaille. Ce WE je pourrais.
    Merci!!
    Si tu la mets dans le répertoire démarrer, je pense que ta solution ne va lancer qu'une seule fois la macro.
    Et pas en boucle, tous les 8heures du matin.



    1) Utilisation d'un fichier .bat avec l'opération d'ouverture de mon classeur Excel à l'intérieur (écriture sous l'éditeur de texte et enregistrement en .bat)
    Comment crées tu un fichier .bat?

    2) Création d'un tâche planifiée pour lancer le .bat tous les jours à l'heure voulue
    Comment planifies tu une taches?

  9. #9
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Comment crées tu un fichier .bat?
    C'est ce que je t'ai écris : bloc note, t'adaptes la ligne que je t'ai donné, et t'enregistre avec l'extension .bat au lieu de l'extension .txt

    C'est pas plus compliqué que ça...
    "Ne soyez rien, devenez sans cesse"

  10. #10
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    ok tres bien merci
    si mon fichier excel s'appelle monfichier.xls
    et ma macro est Mamacro
    alors
    le code a mettre dans le batch est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /e/fichierbat "G:\oslb\Monfichier.xls"
    oslb etant bien sur le chemin d'acces de ton fichier
    qui doit changer sur le mien

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    La solution de la tâche planifiée est bonne, pas de problème... mais je pensais que tu ne souhaitais pas arrêter le programme en fin d'exécution de la macro.
    Là, sans tester, il me semble que le fichier devra être fermé en fin de macro, non ?
    C'est une question

  12. #12
    Membre habitué Avatar de Currahee
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 157
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par deubelte Voir le message
    ok tres bien merci
    si mon fichier excel s'appelle monfichier.xls
    et ma macro est Mamacro
    alors
    le code a mettre dans le batch est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Microsoft Office\Office10\EXCEL.EXE" /e/fichierbat "G:\oslb\Monfichier.xls"
    oslb etant bien sur le chemin d'acces de ton fichier
    qui doit changer sur le mien
    Petite erreur de ma part, t'as pigé mais après la partie /e/ c'est pas le nom de ton fichierbat que tu dois mettre mais le nom de la fonction macro que tu veux lancer à l'intérieur de ton fichier excel.

    Le nom du fichier bat, c'est bien sûr dans la définition de ta tâche planifiée que tu dois l'indiquer.
    "Ne soyez rien, devenez sans cesse"

Discussions similaires

  1. [AC-2003] Lancement automatique d'une macro
    Par Monkey_D.Luffy dans le forum VBA Access
    Réponses: 7
    Dernier message: 12/04/2011, 19h18
  2. lancement automatique d'une macro
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2011, 22h31
  3. lancement automatique d'une macro à partir d'une extraction de BDD
    Par SCHOLLERF dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/10/2007, 07h45
  4. Réponses: 1
    Dernier message: 04/05/2007, 11h59
  5. [VBA-E] Lancement automatique d'une macro (débutante)
    Par pom_poir dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/11/2005, 17h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo