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

VBA Access Discussion :

Lancer une macro excel via VBA? [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut Lancer une macro excel via VBA?
    Bonjour,

    J'ai dans acces un bouton qui lance une query qui crée une table et puis qui exporte cette table dans excel (C:\Trop long.xls)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        stDocName = "Créer trop long"
        DoCmd.OpenQuery stDocName, acNormal, acEdit
        DoCmd.RunSavedImportExport ("Export Trop long")
    J'aimerai que ce bouton effectue une opération supplémentaire, appliquer au fichier une macro excel de mise en page

    Cette macro est stockée dans C:\Program Files\Microsoft Office\Office12\XLSTART\PERSONAL.XLSB (je ne peux pas la stocker dans C:\Trop long.xls vu que le fichier est effacé des que j'en exporte une nouvelle version) et s'appelle "PERSONAL.XLSB!trop_long"

    Apres avoir pioché dans la faq j'ai fait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim objXL As Object, x
        On Error Resume Next
        Set objXL = CreateObject("Excel.Application")
        With objXL.Application
            .Visible = True
            .Workbooks.Open "C:\Program Files\Microsoft Office\Office12\XLSTART\PERSONAL.XLSB"
            .Workbooks.Open "Z:\Trop long.xls"
            x = .Run("PERSONAL.XLSB!trop_long")
        End With
        objXL.Save
        objXL.Close
        Set objXL = Nothing
    Ca ouvre bien mon fichier et ca fait bien tourner la macro, par contre, ca l'ouvre en read only et je ne peux donc pas l'enregistrer

    Idealement, je voudrais que le code ouvre le fichier excel, fasse tourner la macro, sauve, et quitte le fichier.

    Est-ce que quelqu'un sait comment remédier a cela?

    Merci beaucoup

    Emmanuelle

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    Je l'ai

    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
        'lancer la macro de mise en page en excel
        Dim xlApp As Object
        Dim mySheet As Object
     
        Set xlApp = CreateObject("Excel.Application")
        'ouvrir de facon masquée les deux fichier
        Set mySheet = xlApp.Workbooks.Open("C:\Program Files\Microsoft Office\Office12\XLSTART\PERSONAL.XLSB")
        Set mySheet = xlApp.Workbooks.Open("Z:\Trop long.xls")
        'run la macro
        xlApp.Application.Run ("PERSONAL.XLSB!trop_long")
        'sauver et quitter
        mySheet.Save
        mySheet.Close
        Set xlApp = Nothing
        Set mySheet = Nothing
    Par contre, j'ai pas compris pourquoi ce code ci ouvre normalement et pourquoi l'autre ouvre en lecture seule
    Si quelqu'un a l'explication, ca me permettra de me coucher moins bete ce soir

  3. #3
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Excel.Application n'a pas de méthodes Save et Close.
    Ces deux méthodes sont valables pour des classeurs (Excel.Workbook)

    Je crois que pour quitter Excel, cet ordre est préférable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        'sauver et quitter
        mySheet.Save
        mySheet.Close
        Set mySheet = Nothing
        xlApp.Quit
        Set xlApp = Nothing
    On libère les objets dans l'ordre inverse de leur création.

    A+

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    D'accord, merci
    Je bidouille comme je peux, mais c'est souvent plus facile de trouver une bidouille qui marche que de comprendre comment ca marche. Grace a toi, en plus j'ai compris et ca m'aidera pour les fois suivantes

  5. #5
    Membre régulier
    Profil pro
    Ingénieur Industrie
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Industrie

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Points : 100
    Points
    100
    Par défaut
    Pour ma part je trouve plus intéréssent et surtout plus fiable de coder la macro directement dans le module Access (Par pilotage de excel via Access). Aprés c'est à vous de voir.

    Alex

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

Discussions similaires

  1. [VB.NET][VBA-E]Execution d'une macro excel via application
    Par Yolak dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/12/2007, 07h46
  2. Lancer une macro Excel a partir de php
    Par youcef81 dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2006, 12h43
  3. Lancer une macro Excel depuis Access
    Par pascal913 dans le forum Access
    Réponses: 12
    Dernier message: 31/07/2006, 15h31
  4. Lancer une macro Excel depuis Access
    Par marcobosio dans le forum Access
    Réponses: 6
    Dernier message: 05/06/2006, 20h51

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