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
    2013-11-05T21:31:56+00:00

    Bonjour,

    J'ai un curieux problème.

    J'ai 2 classeur d'ouvert. À partir du classeur1 je lance un macro. Var_Model = le classeur2. Jusque là tout va.

    Dim LaMacroNotes As String

    LaMacroNotes = "'" & Var_Model & "'!Pro_RESETNOTESDESCRIPCOLS"

    Application.EnableEvents = False

    Application.Run LaMacroNotes

    Application.EnableEvents = False

    Mais ça bug dans l'exécution de la macro à la ligne 2 ici-bas. Donc la macro est bien lancée.

    Feuil12.Unprotect Feuil7.Range("CN_ValidShPwd").Value

    ligne 2 = Feuil12.Range("CN_NotesAffColsZone").EntireColumn.Hidden = False

    N.B.: Cela fonctionne très bien depuis plus de 3 ans. Et soudain...chez 2 usagers...ça bug à cet endroit. De plus sur mon ordi et sur les autres ordi...tout va bien.

    1 usager a Excel 2010 et windows 8

    1 autre usager a Excel 2010 et windows 7 service pack1 (et cela a toutjours fonctionné auparavant.

    Des idées?

    Merci à l'avance.

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

    0 commentaires Aucun commentaire
  2. DanielCo 107.1K Points de réputation
    2011-07-13T20:25:27+00:00

    OK.Bonne soirée.

    Daniel

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2011-07-13T17:46:20+00:00

    Excuse moi, c'est à ce message que je tentais de répondre ...

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

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

    | Ca ne fonctionne pas.

    Ceci fonctionne, mais on ne passe pas par une variable où l'on met toute la chaîne!

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

    Sub test1()

    Dim strProc As String

    Dim Var As String

    Dim Var_NomFichier As String

    Dim LaMacro As String

    strProc = "Test"

    Var = "MichD"

    Var_NomFichier = "c:\_Extrait_Fichier_regul.xlsx"

    Application.Run "'" & Var_NomFichier & "'!test", "MichD"

    Application.Run "'" & Var_NomFichier & "'!" & strProc, Var

    End Sub

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

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

    0 commentaires Aucun commentaire
  4. DanielCo 107.1K Points de réputation
    2011-07-13T17:17:15+00:00

    C'est ce que j'ai mis plus haut, non ?

    Sic:

    ____

    LaMacro = Var_NomFichier & "!" & strProc

    Application.Run LaMacro, Var

    ____

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

    0 commentaires Aucun commentaire