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 :

Comment lancer une macro dès l'ouverture d'un workbook planifié par une tache


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut Comment lancer une macro dès l'ouverture d'un workbook planifié par une tache
    Bonjour,

    J'ai la macro suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub test()
     
     
    Dim i, j As Integer
     
    'on fait n'importe quoi en attendant que les formules reuters se chargent
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 10
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
     
    With Workbooks("ImportReuters.xls")
        Worksheets("ImportDataReuters").Cells.Copy
        Worksheets("ImportDataDur").Cells(1, 1).Select
    End With
     
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=27
     
    'Workbooks("ImportReuters.xls").Close
     
    End Sub
    Comment puis-je la lancer dès l'ouverture du workbook planifié par une tache?

    J'ai essayé en la nommant sub auto_open() et en copiant le code dans this.workbook mais cela ne marche pas!

    Merci d'avance pour votre aide!

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 672
    Points : 34 389
    Points
    34 389
    Par défaut
    salut,

    tout est disponible dans ce tuto
    http://jpcheck.developpez.com/tutori...ge-parametres/

    La procédure étant Workbook_Open()

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Salut jpcheck!

    Merci pour le lien vers ton tuto!

    Mais même avec Workbook_Open() comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Dim WithEvents RtUpdate As AdxRtList
     
     
     
    Private Sub Workbook_Open()
     
     
    Dim i, j As Integer
     
    'on attend que les formules reuters se chargent
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 3
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
     
    With Workbooks("ImportReuters.xls")
        Worksheets("ImportDataReuters").Cells.Copy
        Worksheets("ImportDataDur").Cells(1, 1).Select
    End With
     
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
     
    'Workbooks("ImportReuters.xls").Close
     
    End Sub
    J'ai une erreur provoquée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim WithEvents RtUpdate As AdxRtList
    nécessaire pour que les formules Reuters fonctionnent dans la worksheet ImportDataReuters...

    L'erreur est
    type défini par l'utilisateur non défini
    Pourtant, lorsque j'écris cette ligne dans this.workbook mais sans la sub Workbook_Open(), il n'y a aucun pb...

    Tu as une idée de ce qu'il se passe?

    Merci d'avance!

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 672
    Points : 34 389
    Points
    34 389
    Par défaut
    Vérifie que la référence qui permet l'utilisation de ce type de variable est bien cochée. S'il s'agit d'un module de classe, vérifie que cette classe est bien ajoutée à ton projet

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Merci jpcheck! Mais j'ai bien la référence puisque olrsque j'enlève la sub Workbook_Open(), Reuters fonctionne bien!

    J'ai donc changé de plan et j'ai les données Reuters dans un workbook puis je les copie dans un autre workbook! Les 2 workbooks sont ouverts grâce à des tâches planifiées et le second workbook, celui où les cours sont censés être écrits en dur, a la macro suivante dans le this.workbook:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Workbook_Open()
     
     
    Dim i, j As Integer
     
    'on fait n'importe quoi en attendant que les formules reuters se chargent
    newHour = Hour(Now())
    newMinute = Minute(Now())
    newSecond = Second(Now()) + 4
    waitTime = TimeSerial(newHour, newMinute, newSecond)
    Application.Wait waitTime
     
    Workbooks("ImportReuters.xls").Worksheets("ImportDataReuters").Cells.Copy
     
    Workbooks("DataReuters.xls").Worksheets("Feuil1").Cells(1, 1).Select
     
    Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=27
     
    'Workbooks("ImportReuters.xls").Close
    'Workbooks("DataReuters.xls").Close
     
    End Sub
    Le second workbook appelé DataReuters (en dur) est ouvert 5 mn après ImportReuters.
    Quand la macro se lance, j'ai l'erreur:
    l'indice n'appartient pas à la sélection
    en parlant de ImportReuters

    Pourquoi? étant donné qu'il est ouvert?

    Merci !!!

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 672
    Points : 34 389
    Points
    34 389
    Par défaut
    Il est peut etre lancé, mais si tu as ouvert le fichier avec un batch, tu auras 2 applications Excel ouvertes, et non pas une seule, ce qui induit que ton workbooks() ne sera pas reconnu.

    pour travailler sur plusieurs instances d'Excel, regarde les infos issues de la
    http://excel.developpez.com/faq/inde...InstancesExcel

    voir la fonction GetObject
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonwk = GetObject("chemin/fichier.xls")

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    Merci jpcheck!

    En fait, pour contourner ce pb d'instance, je souhaiterais ouvrir mon workbook ImportReuters avec du code exécuté dès l'ouverture du workbook DataReuters.

    Je suis sûr que mon chemin est bon puisqu'il est copié des propriétés du workbook mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open ("C:\Users\Documents\ImportReutersBis.xls")
    ne fonctionne pas...

    Que faire?

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 672
    Points : 34 389
    Points
    34 389
    Par défaut
    SAlut,

    explicite ton "ne fonctionne pas" stp Le fichier ne s'ouvre pas ? Tu as une erreur ? il s'ouvre mais ne s'exécute pas ?

    Merci de faire des efforts de description pour inciter les memebres à vouloir t'aider

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    233
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 233
    Points : 92
    Points
    92
    Par défaut
    En fait c'est bon j'ai trouvé!
    Pour info, si des gens trainent sur cette discussion, le code workbooks.open("...") fonctionne bien! Je sais pas qu'est-ce je faisais hier...

    Merci jpcheck pour ton aide et dorénavant, je tacherai de décrire plus précisément mes problèmes!

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

Discussions similaires

  1. [XL-2007] Comment régler le format de l'axe d'un graphique créé par une macro ?
    Par BastLat dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/08/2014, 11h07
  2. Lancer une macro Excel à l'ouverture d'un Userform
    Par All4n dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2013, 17h20
  3. [XL-2007] Lancer automatiquement une macro aprés l'ouverture d'un classeur .CSV
    Par Junior75002 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2012, 20h27
  4. ouverture d'un fichier excel par une macro
    Par gaihdriah dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 11/02/2009, 13h16
  5. Réponses: 7
    Dernier message: 14/05/2008, 12h41

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