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 :

Ouverture Excel avec Macro [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Ouverture Excel avec Macro
    Bonjour,

    J'ai besoin d'ouvrir un fichier Excel et d'y exécuter une macro depuis Access, cependant mon fichier Excel se referme avant de finir l’exécution de sa macro, j'ai donc du rajouter un Sleep mais cela ne me convient pas car j'en aurai besoin pour exécuter des macro plus longue dont je ne connais pas le temps d’exécution.
    Y'a t'il une erreur dans mon code ou une meilleur façon de faire ?
    Merci d'avance

    Voici mon code:

    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
    Sub Macro1()
     
    Dim Xl As Excel.Application
        Dim Classeur As Excel.Workbook
        Dim Feuille As Excel.Worksheet
     
        'Ouvre Excel
        Set Xl = New Excel.Application
        Xl.Visible = True
        Set Classeur = Xl.Workbooks.Open("monfichier.xlsm")
        Sleep 1000
        'Set Feuille = Classeur.Worksheets("Feuil1")
        'Debug.Print Feuille.Range("C1")
     
        Classeur.Close True
        Xl.Quit
     
    End Sub

  2. #2
    Membre actif Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Points : 236
    Points
    236
    Par défaut
    Bonjour,

    Je ne vois pas l'appel de ta macro dans ton code. Est-ce que tu fais bien l'appel de ta macro à ce niveau ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Ah oui pardon, j'avais essayé autre chose entre temps : de mettre le nom de la macro dans la fonction open du workbook du fichier Excel directement mais enfaite ça faisait le même problème...donc j'avais enlever la ligne
    Voici le code avec l'appel de la macro qui s'appelle "ConnexionServeur":

    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
    Sub Macro1()
     
    Dim Xl As Excel.Application
        Dim Classeur As Excel.Workbook
        Dim Feuille As Excel.Worksheet
     
        'Ouvre Excel
        Set Xl = New Excel.Application
        Xl.Visible = True
        Set Classeur = Xl.Workbooks.Open("monfichier.xlsm")
        Xl.Run ("ConnexionServeur")
        Sleep 1000
        Classeur.Close True
        Xl.Quit
     
    End Sub

  4. #4
    Membre actif Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Points : 236
    Points
    236
    Par défaut
    Tu peux tester ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test ()
    Dim MonObjet as Object
    Set MonObjet = GetObject("", "Excel.Sheet")
    MonObjet.Application.Visible = True
    MonObjet.Application.Workbooks.Open "c:\temp\classeur.xls"
    MonObjet.Application.Run "MaMacro"
    Set MonObjet = Nothing
    End Sub

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci de ta réponse

    Ce code exécute bien la macro mais ne quitte pas le fichier Excel,
    Peut etre devrais je mettre le code pour quitter Excel dans la macro Excel et non dans le module Access ?.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Enfaite c'est plus compliqué que je le croyais:

    J'ai ma macro qui s’exécute correctement : elle me permet de me connecter à un serveur ODBC.
    Enfaite c'est la requête qui est censé s’exécuter sur ouverture du fichier Excel qui n'a pas le temps de se finir avant que l'application ne quitte ! (c'est une requête connexion de données) je vois pas encore comment y arriver mais si vous avez des idées je suis preneur

    Voici le code de la macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub ConnexionServeur()
     
    'Ici j'execute la requête connexion aux données
        ActiveWorkbook.RefreshAll
     
    'Excel se quitte alors que la requête n'est pas fini
        ActiveWorkbook.Save
        Application.Quit
    End Sub

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Ahhhhhhh j'ai trouvé, c'était tout bête ...

    Il fallait juste décocher la case : "Activer l'actualisation en arrière plan" de la propriété de connexion de la requête Connexion de données !

    Comme c'était en arrière plan il devait surement ne pas le prendre en compte !

  8. #8
    Membre actif Avatar de brice45
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 188
    Points : 236
    Points
    236
    Par défaut

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

Discussions similaires

  1. [XL-2010] Ouverture de classeur Excel avec macro depuis une macro
    Par kong985 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/03/2015, 09h55
  2. [XL-2010] Ouverture en lecture seule sous Mac d'un fichier excel avec macro
    Par marcelisa2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2014, 16h52
  3. [XL-2007] Ouverture Excel avec macro
    Par raph-68i dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2010, 21h12
  4. Ouverture de fichier Excel avec macros
    Par Mathusalem dans le forum MATLAB
    Réponses: 2
    Dernier message: 15/06/2006, 11h39
  5. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51

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