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 :

Workbook_Open ne démarre pas en tâche planifiée [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut Workbook_Open ne démarre pas en tâche planifiée
    Bonjour,

    j'ai écris un peu de code VBA dans un fichier Excel.

    Il y a entre autre une procédure WorkBook_Open, qui affiche un formulaire fmSTOP affichant un compte à rebours et un bouton Stop. Si on clique sur le stop avant le délai (10 sec), le traitement est arrêté, sinon, il démarre les traitements qui suivent.

    Tout ceci fonctionne très bien lorsque j'ouvre le fichier Excel d'un double-clic depuis l'explorateur ou par fichier/ouvrir.

    En revanche, si l'ouverture du fichier Excel est déclenché par une tâche planifiée (avec utilisateur connecté), le comportement est étrange :
    le fichier est ouvert, mais WorkBook_Open ne semble pas se déclencher. Le bouton Excel (dans la barre des tâches) clignote, ainsi que la fenêtre Excel, mais rien ne se passe. Dès que je donne le focus à Excel, le traitement démarre, mon formulaire s'affiche, le compte-à-rebours démarre.

    Pour m'assurer que le problème ne venait pas de mon formulaire, j'ai remplacé celui-ci par un simple MsgBox "Coucou" (seule et unique instruction de Workbook_Open). Comportement identique : il ne se passe rien tant que je ne donne pas le focus à Excel.

    J'ai essayé de jouer avec les différentes options des tâches planifiées, sans aucun changement.
    J'ai essayé en mettant dans la ligne de commande uniquement le chemin+nom du fichier, "excel <chemin+nom du fichier>", "C:\Program Files (x86)\Microsoft Office\Office12\Excel.exe" "<chemin+nom du fichier>", toujours le même comportement.

    Auriez-vous une idée pour que mon traitement se lance sans intervention humaine ?

    En vous remerciant,
    Largo

    P.S. Excel 2007, Windows 7 Pro

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Et si tu essayais en mettant ton code d'ouverture dans Workbook_Activate plutôt que Workbook_Open ?
    Autre possibilité à essayer est de créer une procédure auto_open dans un module avec ton code que tu mettrais dans Workbook_Open
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub auto_open()
    ...
    End Sub
    NB: Je n'ai jamais essayé de passer par le planificateur de tâches...
    MPi²

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Il est tout simplement probable qu'une autre fenêtre (d'une autre application), occupe le 1er plan et occulte donc celle de ton formulaire fmSTOP.
    Si tel est le cas, c'est sur la fenêtre fmSTOP, qu'il te faut agir (la mettre toujours au 1er plan, elle).
    Mais même ainsi : si tu ouvres une autre fenêtre qui, elle également, a pour instruction de s'afficher au 1er plan, ce sera elle qui l'occupera, ce 1er plan (puisque la dernière à "s'exprimer".
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 071
    Points : 9 850
    Points
    9 850
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est étrange car je n'ai pas le problème.

    comment as-tu planifié la tâche, les paramètres ?

    L'action est l'ouverture directe du fichier excel ou tu passes par un script (type .vbs) ?


    De mon côté, c'est toujours un script vbs qui effectue le démarrage des applications souhaitée ... mais je viens de tester une tâche planifiée dans laquelle c'est directement le fichier excel qui s'ouvre. Le résultat : j'ai bien mon MsgBox écrit dans le WorkBook_Open qui s'affiche immédiatement


    Tu peux éventuellement essayer le vbs si tu n'utilises pas :

    1) Copier ceci dans un bloc-notes en remplaçant le chemin d'accès par le tiens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set AppExcel = CreateObject("Excel.Application")
    With AppExcel
        .Visible = True
        Set Wb = .Workbooks.open("C:\Users\toto\Desktop\coucou.xlsm")
    end With
    2) Enregistrer ce fichier avec l'extension .vbs

    3) Créer une tâche planifiée qui lancera ce script.

    4) Vérifier si le MsgBox s'active bien

    Au besoin, il est peut être nécessaire dans ton cas de mettre le focus sur le classeur, puisqu'en le faisant manuellement ça lance ta procédure. Avec la propriété .Activate de l'objet AppExcel ça devrait correspondre

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut
    J'ai un peu tout testé : appeler directement le xlsm, lancer excel avec le fichier en paramètre, joué sur les différentes options de la tâche planifiée, sans succès, workbook_open ne semble pas s'éxécuter tant que je ne redonne pas le focus à Excel (rien d'autre ne tourne sur le pc). Puis, j'ai changé de machine et ô miracle ! c'est tombé en marche. C'est le PC qui doit avoir un soucis.

    Je connais et j'utilise parfois des scripts vbs, surtout lorsque j'attaque des disque mappés, mais je dois reconnaitre que je galère toujours un peu avec les tâches planifiées. J'ai justement voulu faire simple et proposer une mise en oeuvre facile, les utilisateurs ne voulant pas tous automatiser les traitements.

    Merci en tout cas pour vos réponses rapides et constructives.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 586
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 586
    Points : 34 255
    Points
    34 255
    Par défaut
    Salut,

    a toute fin utile, un peu de lecture
    http://jpcheck.developpez.com/tutori...ge-parametres/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 79
    Points : 47
    Points
    47
    Par défaut
    Merci pour ce lien, fort intéressant (ainsi que les autres de ta signature)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PowerShell] Commande ECHO ne fonctionne pas en tâche planifiée
    Par RedFish64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 30/11/2012, 17h54
  2. Un job planifié ne démarre pas à l'heure planifiée
    Par marsup077 dans le forum Administration
    Réponses: 2
    Dernier message: 15/01/2010, 15h28
  3. La fenêtre "Tâches planifiées" ne se lance pas
    Par cassy dans le forum Windows XP
    Réponses: 11
    Dernier message: 12/06/2007, 17h58
  4. Lancer une tâche planifiée qui ne s'arrête pas
    Par bart64 dans le forum Windows Serveur
    Réponses: 12
    Dernier message: 02/10/2006, 20h33
  5. [Tâche planifiée] Status : ne démarre pas
    Par Pleymo dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 21/07/2006, 18h15

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