Lancer macro d'un autre classeur

Anonyme
2011-07-13T03:39:46+00:00

Bonjour,

Je souhaite lancer une macro d'un autre classeur. J'utilise le code ici-bas. je crois que mon probléme esy dû au fait que l'autre classeur...qui est ouvert...est une variable définie auparavant. (Var_NomFichier). J'ai cherché mais en vain. Comment réussir?

Merci à l'avance.

If Workbooks(Var_NomFichier).Sheets("Validations").Range("CN_MenuLangue").Value = 2 Then

Application.Run Workbooks(Var_NomFichier).Name & "!Pro_INTERFACEFR"

End If

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2011-07-13T09:40:44+00:00

Bonjour,

Excuter une macro d'un autre classeur:

A )

Nom de la macro : "test1"

Si ton classeur est fermé et que la macro appelée se retrouve dans un module standard :

Application.Run "'C:\Mes documents\Answer.xls'!test1"

Même chose, mais si le classeur est dj ouvert :

Application.Run "Answer.xls!test1"

B ) Si le nom de ton classeur contient des espaces :

L'utilisation des apostrophes simples "'" permet d'utiliser

un nom de classeur contenant des espaces , sans

ces dernières, point de salut.

Dim LaMacro As String

LaMacro = "'" & Workbooks("NomDuClasseur.xls") & "'!test1"

Application.Run LaMacro

C) Si la macro appelée est dans un module feuille du classeur au lieu d'être dans un module Standard :

Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille" que tu retrouves dans la fenêtre VBE (visual basic editor).

Dans la fenêtre de gauche de ton projet, la liste des feuilles est affichée dans ce format : "toto"("Feuil4")

toto = Nom de l'onglet de la feuille

Feuil4 = Proprit Name de l'objet Feuille (worksheet)

Dans la commande suivante, tu dois utiliser le nom de la feuille et non de l'onglet de la feuille

Si le fichier est ouvert :

Application.Run "modele.xls!Feuil4.test1"

Si le fichier est ferme :

Application.Run "'C:\Mes documents\Answer.xls'!Feuil4.test1"

Cette réponse a-t-elle été utile ?

9 personnes ont trouvé cette réponse utile.
0 commentaires Aucun commentaire

29 réponses supplémentaires

  1. Anonyme
    2011-07-13T16:58:47+00:00

    Bonjour Daniel,

    Comme ceci :

    '-------------------------------------

    Sub test()

    Dim strProc As String

    Dim Var As String

    Dim Var_NomFichier As String

    Dim LaMacro As String

    strProc = "Test"

    Var = "Denis"

    Var_NomFichier = "_Extrait_Fichier_regul.xlsx"

    'Cette syntaxe doit se limiter au nom du classeur seulement

    LaMacro = Var_NomFichier & "!" & strProc

    Application.Run LaMacro, Var

    'Cette syntaxe permet d'inclure ou non le chemin complet + le nom du classeur

    'ou seulement le nom du classeur. C'est l'approche la plus simple. En plus, elle

    'tient compte de la présence ou non des "espaces".

    LaMacro = "'" & Var_NomFichier & "'!" & strProc

    Application.Run LaMacro, Var

    'On peut aussi utiliser et passer en Dur un paramètre comme ceci :

    LaMacro = "'" & Var_NomFichier & "'!" & strProc

    Application.Run LaMacro, "MichD"

    End Sub

    '-------------------------------------

    Et dans un module standar de l'autre fichier Excel, ceci :

    '---------------------------

    Sub Test(Nom As String)

    MsgBox "MichD"

    End Sub

    '---------------------------

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. DanielCo 107.1K Points de réputation
    2011-07-13T15:36:50+00:00

    Non, d'ailleurs, essaie de tout mettre dans un string :

    Application.Run "Fichier.xls!Macro,""toto"""

    Ca ne fonctionne pas.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2011-07-13T15:03:48+00:00

    OK, ça va¸ ça je connaissais, mais je pensais qu'il était possible de tout créer directement dans la chaîne...

    Merci.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. DanielCo 107.1K Points de réputation
    2011-07-13T14:52:35+00:00

    A mmon avis, "il" n'aime pas que la virgule soit dans une chaîne; mets :

    LaMacro = Var_NomFichier & "!" & strProc

    Application.Run LaMacro, Var

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire