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 :

Impossible d'executer une macro d'un autre fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut Impossible d'executer une macro d'un autre fichier
    Bonjour,

    Je me retourne vers vous car je n'arrive pas a executer une macro dans un autre fichier xls en utilisant les fonctions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CallByName Application, "Run", VbMethod, _
            DirPath & "BT.xls!Module1.FichierSimulation, Frame"
    ou avec celle la:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Result = Application.RunDirPath & "BT.xls!Module1.FichierSimulation, Frame")
    Ma macro s'appelle "FichierSimulation" et elle est definie dans le Module1 du fichier BT.xls et Frame est un parametre que je passe a la macro.

    j'ai tj une erreure du type 1004 cad Macro introuvable et je ne comprends pas pourquoi il ne la trouve pas.

    Si qq a une idee sur ce type de probleme ou comment resoudre ce probleme, j'ai beau cherche dans le forum et je n'ai trouve pourquoi ca ne focntionne pas.

    Merci d'avance

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Il faut encadrer le nom de la procédure et son parametre avec des apostrophes, ainsi que le chemin complet du fichier. Le nom du module est superflu. il n'y a pas de virgule entre le parametre et le nom de la procedure. Enfin si le parametre est de type String il faut l'encadrer avec deux "".


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CallByName Application, "Run", VbMethod, _
    "'" & DirPath & "BT.xls'!'FichierSimulation ""Frame""'"
    Ou plus simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'" & DirPath & "BT.xls'!'FichierSimulation ""Frame""'")
    Par contre tu ne peux pas récupérer le résultat d'une fonction comportant des parametres lorsque elle est appelée avec Run, mais bon ca se contourne si nécessaire.

    Cordialement,

    Tirex28/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut
    Bonjour,

    Merci pour ta reponse, mais j'ai tj le meme probleme avec ou sans les guillemets dans les 2 cas j'ai 1004 runtime error Application define or object define-error.
    Or la macro existe bien et si j'ouvre le fichier, je peux l'executer sans probleme. De plus oui , je veux recuperer les reponses de l'execution de cette macro.

    Merci d'avance

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Re,
    Citation Envoyé par tirex28
    Application.Run "'" & DirPath & "BT.xls'!'FichierSimulation ""Frame""'")
    Oups, il y avait une parenthese en trop qui trainait a la fin.

    Vérifie que le chemin est correct et se termine bien par "\" et que tu n'oublie aucun ' ou ".

    Pour ce qui est de la recuperation du resultat il faut tricher un peu. Dans le module qui contient ta fonction FichierSimulation tu déclare une variable et une autre fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim R
    Public Function ResultatFichierSimulation()
        ResultatFichierSimulation = R 'Renvoie le resultat de la fonction
    End Function
     
    Public Function FichierSimulation(lesparametres)
        Dim MonResultat 'Une variable temporaire
        'Le code déterminant le résultat
        R = MonResultat                 'Mise a jour de la variable module
        FichierSimulation = MonResultat 'Sortie de la fonction
    End Function
    Il suffit ensuite d'appeler les deux fonctions l'une apres l'autre avec la méthode Run.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Rfs
    With Application
        .Run "'" & dirpath & "BT.xls'!'FichierSimulation ""Frame""'"
        Rfs = .Run("'" & dirpath & "BT.xls'!ResultatFichierSimulation")
    End With
    Cordialement,

    Tirex28/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 92
    Par défaut
    Salut Tirex,

    Desole mais j'ai tj la meme erreur 1004 macro not founded. Il ouvre bien le fichier (il le trouve a l'adresse indiquee), mais c'est comme si il ne trouvait pas la macro dans ce fichier (comme aucune autre d'ailleurs). Il ne faut pas lui dire d'enable les macros lorsqu'il ouvre le fichier ? et si oui comment faire ?

    Merci

  6. #6
    Membre éprouvé Avatar de zebulon2212
    Inscrit en
    Juin 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2006
    Messages : 77
    Par défaut
    Tu certifie les macros de ton classeur et une fois le certificat enregistrer et accepter, tu n'aura plus de probleme

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/02/2014, 18h45
  2. [WD-2003] Executer une macro d'un autre document
    Par Kiki-31 dans le forum VBA Word
    Réponses: 2
    Dernier message: 21/06/2011, 13h14
  3. [XL-2010] Executer une macro depuis un autre classeur
    Par debdev dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/05/2011, 13h28
  4. [VBA-XL2007] Problème de lancement d'une macro d'un autre fichier au format xlsm
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/09/2008, 22h13
  5. Executer une macro dans un autre classeur
    Par nautygirl dans le forum Général VBA
    Réponses: 2
    Dernier message: 30/07/2007, 15h34

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