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 :

Exécuter une macro dans un autre classeur - Application.run avec ou sans paramètre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut Exécuter une macro dans un autre classeur - Application.run avec ou sans paramètre
    Même s'il peut être utilisé pour une procédure placée dans le classeur lui même, Application.run est essentiellement utilisé pour exécuter un procédure située dans un autre classeur ouvert.

    [VBA – Excel]
    Sans paramètre :
    Syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Run "Fichier.xls!'LaMacro'"
    Exécute la procédure LaMacro située dans le fichier "Fichier.xls"

    Ligne de commande placé dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        LigneDeCommande = "Fichier.xls! 'LaMacro'"
        Application.Run LigneDeCommande
    Avec paramètre :
    Syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Run "'Fichier.xls'!LaMacro", "LeParamètre"
    Ligne de commande placé dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        LigneDeCommande = "Fichier.xls!'LaMacro """ & "LeParamètre" & """'"
        Application.Run LigneDeCommande
    Ecrire la ligne de commande dans l'objet ThisWorkbook d'un classeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim NomClasseur$, LeParametre$, NoLigne As Long
        NomClasseur = "UnClasseur.xls" 'Classeur ouvert <> ThisWorkbook.name
        LeParametre = "La donnée"
        With ThisWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule 'A adapter
            NoLigne = .CountOfLines
            .InsertLines NoLigne + 1, "Private Sub Workbook_Open()"
            .InsertLines NoLigne + 2, "    Application.Run """ & "'" & NomClasseur & "'!NomDeLaMacro"", """ & LeParametre & """"
            .InsertLines NoLigne + 3, "End sub"
        End With
    Correction :
    Le nom du fichier contenant la macro lancée par Application.run ne doit pas inclure le chemin

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut Utiliser Application.run pour faire appel à une fonction
    Outre les subroutines, Application.run peut être utilisé pour récupérer le résultat d'une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Result As String
        Result = Application.Run("LeClasseur.xls!'Palindrome'", "Elu par cette crapule")
        MsgBox StrReverse(Result)

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir Ouskel'n'or

    Peut-on appeler une macro d'un autre classeur ?


    bonne soirée
    michel

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Bonsoir Michel,
    En effet mais ce n'est pas la même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function Palindrome(LeMot) As String
         For i = Len(LeMot) To 1 Step -1
              Palindrome = Palindrome + Mid(LeMot, i, 1)
         Next
    End Function


    J'ai chercher à "Comment... " pour être bien certain... c'est à "Peut-on..." que j'aurais dû chercher
    De même, j'ai cherché dans la FAQ la manière la plus simple d'écrire une procédure par macro mais ne l'ai pas trouvée. Et pourtant je l'ai eu lue.

    Mais je réponds à ton "observation" :
    Citation Envoyé par SilkyRoad
    bonsoir Ouskel'n'or

    Peut-on appeler une macro d'un autre classeur ?

    bonne soirée
    michel
    Oui, mais peut-être le développement des différentes méthodes d'utilisation apporterait-il un plus.

    Edit
    Pour illustrer mon observation, tu peux toujours jeter un oeil ici

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    rebonsoir


    Oui, mais peut-être le développement des différentes méthodes d'utilisation apporterait-il un plus.
    Oui effectivement.
    dans ce cas il y a aussi un article à ce sujet:

    http://silkyroad.developpez.com/VBA/...sicEditor/#LVI


    bonne soirée
    michel

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as raison.

Discussions similaires

  1. [XL-2010] Ouverture d'une macro dans un autre classeur et retour.
    Par fredoos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/06/2015, 23h20
  2. Exécuter une macro dans un autre classeur
    Par Claire IZ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2014, 20h37
  3. copie d'une macro dans un autre classeur
    Par guypilote dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/08/2009, 17h58
  4. Exécuter une macro dans une autre macro
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/02/2008, 13h17
  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