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

Access Discussion :

Lancer une macro Excel depuis Access


Sujet :

Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut Lancer une macro Excel depuis Access
    Bonjour,

    je suis consultant (et donc malheuresement pas un pro du développement Access...), et dans le cadre d'une mission je dois retraiter un certain nombre de questionnaires à partir de données collectées sur Access.
    J'ai déjà posté un message sur ce forum, et j'ai pu bénéfichier d'une aide très précieuse m'ayant permis d'écrire le module destiné à exporter les données sous Excel (en créant un fichier différent pour chaque entité que je dois retraiter).

    Ce module permet donc la création de 97 fichiers (via la fonction DAO et les Recordset)... sur lesquels je dois faire tourner une macro Excel (que j'ai déjà développé) pour créer des tableaux et des graphs.

    Est-ce donc possible d'intégrer le lancement de la macro Excel dans mon module Access pour éviter de lancer cette macro manuellement ?


    D'avance merci pour votre aide,

    Cdt,

    Marco

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Voilà... j'ai trouvé...

    Le code :
    'Lance la macro Excel
    Dim xlApp As Object
    Set xlApp = CreateObject("Excel.Application")

    xlApp.Visible = True
    xlApp.workbooks.Open ("E:\Analyse\StyleManagement\StyleManagement_" & rs!Direction & ".xls")
    xlApp.workbooks.Open ("E:\Analyse\StyleManagement\StyleManagementMacro.xls")
    xlApp.Run "StyleManagement"

    Mais ça me renvoit une erreur "erreur d'exécution 9 : l'indice n'appartient pas à la sélection"...

    Est-ce que qqun pourrait m'aiguiller ?

    Merci

    Marco

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Re-bonjour... au bout de quelques heures... j'avoue que je n'y arrive pas.. donc voici la synthèse de la situation.

    Je résume tout depuis le début :

    1. J'ai une table Access dans laquelle j'ai environ 400 enregistrements (réponses à des questionnaires), que je veux exporter vers Excel pour les retraiter.

    Chaque enregistrement de cette table a une certaine valeur pour "Direction" (ex. Finance, Marketing, etc.) et j'ai crée un code pour qu'Access exporte dans des fichiers Excels différents tous les enregistrements contenant la même Direction. Si on reprend l'exemple, je vais donc avoir un fichier Excel pour la Finance, un pour le marketing, etc.

    Voici le code du module Access (utilise la librairie DAO) :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    Public Sub Export()
    On Error GoTo Gestion_Erreurs
        Dim rs As DAO.Recordset
        Dim db As DAO.Database
        Dim qd As DAO.QueryDef
        ' Base de données courante
        Set db = Currentdb
        ' Requête d'export
        Set qd = db.QueryDefs("zz_RExport")
        ' Sélection dans rs des différentes Directions
        Set rs = db.OpenRecordset("select distinct Direction from StyleManagement")
        ' Positionnement sur le premier enregistrement
        rs.MoveFirst
        ' Boucle pour traiter chaque Direction
        While Not rs.EOF
            ' Modifie le SQL de la requête en fonction de la Direction
            qd.SQL = "select * from StyleManagement where Direction = '" & rs!Direction & "'"
            ' Export les données pour une Direction dans un fichier Excel
            DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, _
                                                   "zz_RExport", "E:\Analyse\StyleManagement\StyleManagement_" & rs!Direction & ".xls"
     
    'Lance la macro Excel
            Dim xlApp As Object
            Set xlApp = CreateObject("Excel.Application")
            xlApp.Visible = True
            xlApp.workbooks.Open ("E:\Analyse\StyleManagement\StyleManagement_" & rs!Direction & ".xls")
            xlApp.workbooks.Open 
    'J'ouvre le fichier Excel contenant la macro
    ("E:\Analyse\StyleManagement\StyleManagementMacro.xls")
            xlApp.Run "StyleManagement"
            xlApp.workbooks.Open.Save
            xlApp.Quit
            Set xlApp = Nothing
     
            ' Passe à l'enregistrement suivant
            rs.MoveNext
        Wend
        ' Ferme et libère les objets
        rs.Close
        Set rs = Nothing
        Set qd = Nothing
        Set db = Nothing
    Gestion_Erreurs:
        If Err.Number <> 0 Then MsgBox Err.Number & ":" & Err.Description
    End Sub
    La macro crée bien 97 fichiers différents (correspondant aux 97 Directions dans la table), mais le lancement de la macro Excel qui remet en forme les fichiers excel et génère les graphiques ne fonctionne pas...


    Et voici la macro Excel (je ne mets que les premières lignes car il s'agit essentiellement de mise en forme) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub StyleManagement()
    Dim Lig As Byte, Col As Byte, i As Byte
     
    With Sheets("zz_RExport")
    ' Dernière ligne et dernière colonne utilisées
    Lig = .Range("A1000").End(xlUp).Row
    Col = .Range("IV1").End(xlToLeft).Column
     
    etc.
    Je pense que je dois peut-être rappeler la variable '" & rs!Direction & "'", mais je n'y arrive pas...


    Résultat : une jolie erreur "Erreur d'exécution 9 : L'indice n'appartient pas à la sélection"


    Au secours :-))

  4. #4
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Bonsoir,

    Je n'ai pas eu le courage de lire ton code (Qui sans te vexer est des plus désagéable à lire.Il existe des balises"CODE".

    Sinon

    1. J'ai une table Access dans laquelle j'ai environ 400 enregistrements (réponses à des questionnaires), que je veux importer dans Excel pour les retraiter.
    Je dirais plutôt exporter .
    Pour finir un début de piste

    Bonne continuation.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Lol... un grand désolé pour le code (viens de modifier... c est la 2ème fois que je viens ici)

    Et merci pour le lien...j'ai regardé ça ce matin, mais malgré des tentatives pour l'adapter, je n'ai pas réussi. Quoi qu'il en soit, merci d'avoir pris un peu de temps pour m'aider !

    Bonne soirée

  6. #6
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 812
    Points
    812
    Par défaut
    Ah bon???????

    qu'est ce qui cloche?????

    Je m'en suis servi dans un de mes modules et ça marche nickel

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Les 2 fichiers Excel (le fichier crée par Access et le fichier contenant la macro) s'ouvrent bien, mais j'ai le message d'erreur suivant :

    Erreur d'exécution '424' : Objet Requis
    Et 440 : Erreur Automation

    Je pense que mon problème se situe dans Excel, lorsque je veux ouvrir le fichier crée par Access. J'ai mis cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub StyleManagement()
    Dim Lig As Byte, Col As Byte, i As Byte
    
    Workbooks.Open Filename:= _
        "E:\Analyse\StyleManagement\StyleManagement_" & rs!Direction & ".xls"    
    
    With Sheets("zz_RExportStyleManagement")
    Mais la ligne en gras ne doit pas être la bonne...et je ne sais pas comment appeler la variable rs!Direction Access dans Excel

    Autre info ... si je supprime la ligne en gras (l'ouverture du classeur Excel) et que je lance la macro Excel manuellement avec les deux fichiers sont ouverts (le fichier Excel généré par Access et le fichier Excel contenant la macro), ça fonctionne parfaitement.

    Parcontre si je le fais de façon automatique depuis Access, j'ai un message d'erreur "Erreur d'exécution 9 : L'indice n'appartient pas à la sélection".
    Je ne sais pas si cette info peut aider...

Discussions similaires

  1. [AC-2007] lancer une macro excel depuis access est ce possible ?
    Par Debutant10 dans le forum VBA Access
    Réponses: 3
    Dernier message: 14/06/2011, 21h35
  2. lancer une macro excel depuis access
    Par Thyrolas dans le forum IHM
    Réponses: 1
    Dernier message: 16/12/2008, 17h54
  3. [Manipulation Excel] Executer une macro Excel depuis Access
    Par sebastien_oasis dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/05/2007, 15h21
  4. lancer une macro excel depuis une appli access
    Par LostIN dans le forum Access
    Réponses: 1
    Dernier message: 22/08/2006, 11h10
  5. Lancer une macro Excel depuis Access
    Par pascal913 dans le forum Access
    Réponses: 12
    Dernier message: 31/07/2006, 15h31

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