Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment créer une tâche automatique journalière avec W8.1

20 réponses
Avatar
Fredo P.
Bonjour,
Comment créer une tâche automatique journalière avec W8.1 consistant à
ouvrir un classeur Excel et que la macro Private sub Workbook_Open démarre?

10 réponses

1 2
Avatar
Michd
Bonjour,
À l'aide de l'application "NotePad", tu copies ce qui suit. Tu enregistres
le fichier avec une extension .VBS et NON .TXT
Tu ouvres le planificateur de tâche et tu définis les paramètres qui vont
servir à déclencher la tâche qui est d'exécuter le fichier .vbs que tu viens
de créer
Un exemple de code émanant du site :
https://stackoverflow.com/questions/29325804/use-vbs-to-open-an-excel-workbook-run-a-macro-and-save-the-workbook
Attention, dans ce script, tu as déjà la commande qui ferme le classeur. Si
cette ligne de commande existe déjà dans la macro dans Excel, tu dois
l'enlever de ce script. Tu ne peux pas fermer un classeur 2 fois... une
erreur sera générée.
Dans ce cas, la macro "GetFiles" doit obligatoirement se trouver dans un
module standard.
Si la macro est dans un module feuille, la syntaxe : "Feuil.MaMacro"
Feuil1 n'est pas le nom de l'onglet, mais la valeur de la propriété "Name"
de l'objet "feuille" dans les propriétés de l'objet.
Dans le cas de la macro Workbook_Open, tu peux oublier cette ligne de code :
xlApp.Run "GetFiles"
'--------------------------------------------------------------------
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("W:Excel MacroEIM File
ManegerEIM_file_check.xlsm", 0, True)
xlApp.Run "GetFiles"
xlbook.Save
xlBook.Close False
set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
WScript.Echo "Finished."
WScript.Quit
'--------------------------------------------------------------------
MichD
Avatar
Michd
J'allais oublier, dans cette ligne de code :
Set xlBook = xlApp.Workbooks.Open("W:Excel MacroEIM File
ManegerEIM_file_check.xlsm", 0, True)
Ceci "0, True" représente la valeur de 2 paramètres que doit prendre les
paramètres de la macro appelée. Si la macro n'a pas de paramètres, il faut
oublier cela dans la ligne de code.
MichD
Avatar
JièL
Juste une question MichD
pourquoi ajouter du VBS ?
Une tâche planifié qui lance Excel et le fichier en paramètre ne suffit
pas ?
--
JièL 1 ter ho gatif
Le 06/12/2017 à 14:35, Michd a écrit :
Bonjour,
À l'aide de l'application "NotePad", tu copies ce qui suit. Tu
enregistres le fichier avec une extension .VBS et NON .TXT
Tu ouvres le planificateur de tâche et tu définis les paramètres qui
vont servir à déclencher la tâche qui est d'exécuter le fichier .vbs que
tu viens de créer
Un exemple de code émanant du site :
https://stackoverflow.com/questions/29325804/use-vbs-to-open-an-excel-workbook-run-a-macro-and-save-the-workbook
Attention, dans ce script, tu as déjà la commande qui ferme le classeur.
Si cette ligne de commande existe déjà dans la macro dans Excel, tu dois
l'enlever de ce script. Tu ne peux pas fermer un classeur 2 fois... une
erreur sera générée.
Dans ce cas, la macro "GetFiles" doit obligatoirement se trouver dans un
module standard.
Si la macro est dans un module feuille, la syntaxe :  "Feuil.MaMacro"
Feuil1 n'est pas le nom de l'onglet, mais la valeur de la propriété
"Name" de l'objet "feuille" dans les propriétés de l'objet.
Dans le cas de la macro Workbook_Open, tu peux oublier cette ligne de
code : xlApp.Run "GetFiles"
'--------------------------------------------------------------------
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("W:Excel MacroEIM File
ManegerEIM_file_check.xlsm", 0, True)
xlApp.Run "GetFiles"
xlbook.Save
xlBook.Close False
set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
WScript.Echo "Finished."
WScript.Quit
'--------------------------------------------------------------------
MichD
Avatar
Michd
pourquoi ajouter du VBS ?
Une tâche planifié qui lance Excel et le fichier en paramètre ne suffit
pas ?
**** Essaie et donne-nous le résultat de ton test.
MichD
Avatar
Michd
Oui c'est possible d'ouvrir un classeur.
Si tu as une macro particulière à exécuter dans un module, dis-moi comment
tu demandes cela au moment d'enregistrer la tâche planifiée, et si la
procédure exige la valeur d'un ou de plusieurs paramètres?
OK, tu as la possibilité d'utiliser les procédures événementielles du genre
"Workbook.Open" , encore faut-il que ces procédures soient "Enable"
(application.enableEvents = true).
Un fichier .vbs donne une plus grande flexibilité et c'est relativement
simple à mettre en place.
MichD
"Michd" a écrit dans le message de groupe de discussion :
p0947s$8f8$
pourquoi ajouter du VBS ?
Une tâche planifié qui lance Excel et le fichier en paramètre ne suffit
pas ?
**** Essaie et donne-nous le résultat de ton test.
MichD
Avatar
JièL
Le 06/12/2017 à 17:01, Michd a écrit :
pourquoi ajouter du VBS ?
Une tâche planifié qui lance Excel et le fichier en paramètre ne suffit
pas ?
**** Essaie et donne-nous le résultat de ton test.

Pas sympa...
Si je pose la question c'est que je n'ai pas testé et que je n'ai pas
envie de perdre mon temps avec un truc qui ne m'intéresse pas et dont je
n'ai pas besoin.
Merci quand même d'avoir pris le temps de me répondre.
--
JièL 5 pa
Avatar
JièL
Le 06/12/2017 à 17:33, Michd a écrit :
Oui c'est possible d'ouvrir un classeur.

Nos messages se sont croisées... Je préfère celui ci.
Si tu as une macro particulière à exécuter dans un module, dis-moi
comment tu demandes cela au moment d'enregistrer la tâche planifiée, et
si la procédure exige la valeur d'un ou de plusieurs paramètres?

Moi j'en étais resté à la demande de "Fredo P.", je cite : "Comment
créer une tâche automatique journalière avec W8.1 consistant à ouvrir un
classeur Excel et que la macro Private sub Workbook_Open démarre?"
Il ne parle pas de macro particulière mais de la macro "Workbook_Open"
donc je ne comprenais pas l'ajout du VBS qui en plus quitte Excel alors
que ça n'est pas ce qui est dans la demande, mais j'ai peut-être mal lu...
OK, tu as la possibilité d'utiliser les procédures événementielles du
genre "Workbook.Open" , encore faut-il que ces procédures soient
"Enable" (application.enableEvents = true).

Et qu'est-ce qui les désactiveraient ?
Un fichier .vbs donne une plus grande flexibilité et c'est relativement
simple à mettre en place.

Ça c'est ton point de vue, perso ça complique je trouve.
Et si les macros ne sont pas actives, ça plante aussi alors ?! comme le
workbook_open si pas enable ?!
PS : pas la peine de monter sur tes grands chevaux ou te sentir agressé
quand je pose une simple question, j'avais bien précisé "Juste une
question MichD"
--
JièL
Avatar
Michd
| Et qu'est-ce qui les désactiveraient ?
*****Si tu utilises régulièrement des macros dans un classeur, il est
possible qu'une des procédures désactive les procédures évènementielles sans
que l'usager pense à les activer à nouveau avant de fermer! Pour ceux qui ne
font jamais d'erreur, ce n'est pas pertinent.
Un fichier .vbs donne une plus grande flexibilité et c'est relativement
simple à mettre en place.

Ça, c'est ton point de vue, perso ça complique je trouve.
**** Le demandeur fait ce qu'il veut ça ne me regarde pas!
Et si les macros ne sont pas actives, ça plante aussi alors ?! comme le
workbook_open si pas enable ?!
**** Et si tu appelles une macro qui n'existe pas aussi.
|PS : pas la peine de monter sur tes grands chevaux ou te sentir agressé
**** J'avais donné ma réponse avant que tu interviennes et je maintiens
que c'est la meilleure approche, la plus générale et simple à
appliquer. Il n'y a pas de "grands chevaux" dans mon intervention,
si
tu poses une question, je suppose que tu attends une réponse?
MichD
Avatar
JièL
Le 06/12/2017 à 20:01, Michd a écrit :
| Et qu'est-ce qui les désactiveraient ?
*****Si tu utilises régulièrement des macros dans un classeur, il est
possible qu'une des procédures désactive les procédures évènementielles
sans que l'usager pense à les activer à nouveau avant de fermer! Pour
ceux qui ne font jamais d'erreur, ce n'est pas pertinent.

OK
Sous entendu personne ne ferme jamais Excel ce qui réactiverait les
procédures évènementielles
Un fichier .vbs donne une plus grande flexibilité et c'est
relativement simple à mettre en place.

Ça, c'est ton point de vue, perso ça complique je trouve.
**** Le demandeur fait ce qu'il veut ça ne me regarde pas!

OK
Et si les macros ne sont pas actives, ça plante aussi alors ?! comme le
workbook_open si pas enable ?!
**** Et si tu appelles une macro qui n'existe pas aussi.

Ha ha ha :-)
|PS : pas la peine de monter sur tes grands chevaux ou te sentir agressé
**** J'avais donné ma réponse avant que tu interviennes et je maintiens
        que c'est la meilleure approche, la plus générale et simple à
        appliquer. Il n'y a pas de "grands chevaux" dans mon
intervention,

Ah la barrière de la langue...
http://www.expressio.fr/expressions/monter-sur-ses-grands-chevaux.php
si tu poses une question, je suppose que tu attends une réponse?

Oui, et je n'ai pas aimé ta première réponse qui etait du genre
"débrouille toi".
--
JièL
Avatar
Michd
Sous entendu personne ne ferme jamais Excel ce qui réactiverait les
procédures évènementielles
**** JL qui ouvre Excel une fois par mois, mais pour ceux dont Excel est
ouvert la majeure partie de la journée, si l'usager à passer volontairement
ou non "Application.EnableEvents = False", le fichier Excel par le
planificateur de tâche va ouvrir mais la procédure "Workbook_Open" ne va
jamais s'exécuter dans une telle situation. La propriété "EnableEvents"
affecte tous les classeurs ouvert par une même instance d'Excel
Ah la barrière de la langue...
http://www.expressio.fr/expressions/monter-sur-ses-grands-chevaux.php
**** Je n'ai aucun problème avec la langue française et toi?
Oui, et je n'ai pas aimé ta première réponse qui etait du genre
"débrouille toi".
**** Tout ça par que Monsieur a un gros égo et qu'il préfère le travail soit
fait par quelqu'un autre parce que pense-t-il, son temps est trop précieux
pour tester les propos qu'il avance même s'il possède le savoir pour le
faire... à moins que ce soit de la paresse!
Pourtant, il a toujours le temps pour de l'ergotage! Un très petit petit
petit petit... Trump en devenir! ;-))))
MichD
1 2