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 à partir d'access


Sujet :

VBA Access

  1. #1
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut Lancer une Macro Excel à partir d'access
    Bonjour à tous,
    Quelqu'un aurait-il une idée pour exécuter une Macro Excel depuis un bouton access.

    Le code access du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande63_Click()
    Excel.Application.Run MacroName:="Macro1"
    End Sub
    Le code de la macro dans excel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
    ' Macro1 Macro
    ' Macro enregistrée le 10/12/2007 
    Application.CommandBars("Web").Visible = False
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
    Macro1
    End Sub
    La macro fonctionne automatiquement quand je lance le classeur depuis excel mais pas quand je la lance depuis le bouton access.
    Merci d'un coup de main.

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Malheureusement pas Access sous la main, donc pas de possibilité de tester, mais je ferais comme ça :

    Ne pas oublier de référencer Excel :

    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
    Private Sub cmdMacroExcel_Click()
     
        Dim appExcel As Object
     
        Set appExcel = CreateObject("Excel.Application")
     
        appExcel.Visible = True
     
        With appExcel
     
            .Workbooks.Open ("TonClasseur.xls")
     
            .Run ("TonClasseur.xls!macro1")
     
        End With
     
        appExcel.Quit
     
        Set appExcel = Nothing
     
    End Sub
    Dans Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Macro1()
     
        Application.CommandBars("Web").Visible = False
     
    End Sub
    Qu'est-ce que ça dit ?

    Domi2

  3. #3
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Il ouvre bien le classeur la macro s'exécute mais quand je ferme excel, access m'affiche un message comme quoi il ne trouve pas la macro1
    cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Run ("U:\Essai EPI\Excel\Fiche Suivi Essai Terrain.xls!macro1")
    Le problème également, contrairement à un lien hypertexte c'est que je dois lui indiquer le chemin complet où se trouve le classeur c'est embêtant pour déplacer la base.

    En revanche avec le lien hypertexte la macro ne s'exécute pas à l'ouverture d'excel.

  4. #4
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Ma suite Office à toujours triste mine

    Donc pour faire des tests...

    Si tu mets cette ligne en remarque, que se passe-t-il ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Run ("U:\Essai EPI\Excel\Fiche Suivi Essai Terrain.xls!macro1")
    Pour le chemin... Le fichier Excel est-il propre à chaque utilisateur, ou bien n'en existe-t-il qu'un exemplaire pour l'application ?

    Domi2

  5. #5
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par Domi2 Voir le message
    Si tu mets cette ligne en remarque, que se passe-t-il ? RIEN
    Pour le chemin... Le fichier Excel est-il propre à chaque utilisateur, ou bien n'en existe-t-il qu'un exemplaire pour l'application ? 1 Exemplaire
    Domi2
    L'automation c'est pas si bien que ça!
    Merci

  6. #6
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    L'automation c'est pas si bien que ça!
    Ben, suis pas sûr que celui qui a écrit le code ne soit pas "coupable".

    Mais impossible de faire des tests pour l'instant...

    Pour le chemin du fichier, ce que je ferais, pour autant que tu utilises un système dorsale/frontale, c'est l'enregistrer dans le même répertoire que les données (ou un sous-répertoire).

    On peut facilement retrouver le chemin :

    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
    Dim strCheminDorsale As String
     
     
        'Recherche le nom du répertoire dans lequel est installée la base de données dorsale, ainsi que le nom du fichier
        strCheminDorsale = CurrentDb.TableDefs("UneTableDeLaDorsale").Connect
        strCheminDorsale = Right(strCheminDorsale, Len(strCheminDorsale) - InStr(1, strCheminDorsale, "DATABASE=") - 8)
     
        'Recherche le nom du répertoire et des sous-répertoires
        If Right(strCheminDorsale, 1) = "\" Then
     
            strRepertoireDorsale = strCheminDorsale
     
        Else
     
            strRepertoireDorsale = Left(strCheminDorsale, InStrRev(strCheminDorsale, "\"))
     
        End If
     
        'Répertoire d'installation de la dorsale
        strRepertoireDorsale = strRepertoireDorsale
    Domi2

  7. #7
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Moi j'ai testé ça mais je ne sais pas si le code est bien écrit:

    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
    Function InfosDorsale()
     
        On Error Resume Next
     
        Dim strCheminDorsale As String
     
        'Recherche le nom du répertoire dans lequel est installée la base de données dorsale, ainsi que le nom du fichier
        strCheminDorsale = CurrentDb.TableDefs("tblEPI").Connect
        strCheminDorsale = Right(strCheminDorsale, Len(strCheminDorsale) - InStr(1, strCheminDorsale, "DATABASE=") - 8)
     
        'Recherche le nom du répertoire et des sous-répertoires
        If Right(strCheminDorsale, 1) = "\" Then
     
            strRepertoireDorsale = strCheminDorsale
     
        Else
     
            strRepertoireDorsale = Left(strCheminDorsale, InStrRev(strCheminDorsale, "\"))
     
        End If
     
        'Répertoire d'installation de la dorsale
        strRepertoireDorsale = strRepertoireDorsale
     
        'Répertoire d'installation des photos
        strRepertoirePhotos = strRepertoireDorsale & "Photos\"
     
        'Répertoire d'installation du Classeur
        strRepertoireExcel = strRepertoireDorsale & "Excel\"
     
    End Function
    Le bouton clic :
    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
    Private Sub cmdMacroExcel_Click()
     Dim appExcel As Object
     
        Set appExcel = CreateObject("Excel.Application")
     
        appExcel.Visible = True
     
        With appExcel
     
            .Workbooks.Open strRepertoireExcel("Fiche Suivi Essai Terrain.xls")
     
            .Run strRepertoireExcel("Fiche Suivi Essai Terrain.xls!macro1")
     
        End With
     
        appExcel.Quit
     
        Set appExcel = Nothing
     
    End Sub
    strRepertoireExcel ne plait pas à access quand je clic dessus
    ThieBEN

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    en partant de l'idée que strRepertoireExcel est bien déclaré comme variable publique, essaie comme ceci :

    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
    Dim strMonFichierExcel As String
     
    strMonFichierExcel = strRepertoireExcel & "Fiche Suivi Essai Terrain.xls"
     
    MsgBox strMonFichierExcel 'Uniquement pour vérifier si le chemin est correct
     
    Dim appExcel As Object
     
    Set appExcel = CreateObject("Excel.Application")
     
    appExcel.Visible = True
     
    With appExcel
     
        .Workbooks.Open strMonFichierExcel
     
        .Run ("Macro1") 'Petite correction ici par rapport à mon 1er code
     
    End With
     
    appExcel.Quit
     
    Set appExcel = Nothing
    Domi2

  9. #9
    Membre régulier
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2007
    Messages : 355
    Points : 119
    Points
    119
    Par défaut
    Bon ça marche nickel sauf qu'il faut enlever dans le code ce petit bout car excel s'ouvre et se referme aussitôt.

    Code :
    Merci Domi2
    ThieBEN

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

Discussions similaires

  1. [AC-2007] Lancer une macro Excel TCD depuis Access
    Par Benoit973 dans le forum Access
    Réponses: 1
    Dernier message: 07/08/2013, 23h05
  2. [AC-2003] Lancer une macro excel à partir d'access
    Par Williamm dans le forum VBA Access
    Réponses: 56
    Dernier message: 12/08/2011, 11h11
  3. [Toutes versions] Comment lancer une macro Excel/Access à partir d'un .exe?
    Par victorzecat dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/07/2010, 21h35
  4. Lancer une macro Excel depuis Access
    Par marcobosio dans le forum Access
    Réponses: 6
    Dernier message: 05/06/2006, 20h51
  5. Lancer une macro PPT à partir d'Excel
    Par Rabah dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/10/2005, 17h23

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