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-13T13:30:08+00:00

    Bonjour Daniel,

    Une petite question : (à la fin)

    D'abord, on peut utiliser ce type de syntaxe avec des variables et y inclure des paramètres définis comme argument dans la procédure appelée comme ceci :

    On peut employer autant de paramètres que l'on désire en les séparant par une virgule...

    Que le fichier soit ouvert ou non, il est toujours loisible d'utiliser le chemin et le nom complet du fichier comme ceci :

    Var_NomFichier = "c:\_Extrait_Fichier_regul.xlsx"

    Évidemment, si le fichier est ouvert, on peut omettre de mentionner son chemin...

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

    Sub test1()

    Dim strProc As String

    Dim Var As String

    Dim Var_NomFichier As String

    Dim LaMacro As String

    strProc = "Test"

    Var = "Denis"

    Var_NomFichier = "c:\_Extrait_Fichier_regul.xlsx"

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

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

    End Sub

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

    Ma question est simple : Si je veux réunir dans une variable la chaîne de caractères nécessaires pour la méthode : Application.Run, j'éprouve un problème de syntaxe si j'essaie de la définir avec un paramètre.

    Sans paramètre, la bonne syntaxe va comme suit :

    Dim LaMacro As String

    LaMacro = "'" & Var_NomFichier & "'!test"

    Application.Run LaMacro

    Quelle est la bonne syntaxe lorsque l'on ajoute un paramètre ???

    LaMacro = Var_NomFichier & "!" & strProc & ", " & Var

    Application.Run LaMacro

    Il doit me manquer des guillemets quelque part... ;-))

    Merci

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

    0 commentaires Aucun commentaire
  2. DanielCo 107.1K Points de réputation
    2011-07-13T11:20:40+00:00

    Non; je n'ai pas essayé tous les caractères valides, mais pour la barre de soulignement, ce n'est pas la peine.

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2011-07-13T10:33:48+00:00

    Merci beaucoup. Cela a réussi. J'ai cependant eu à apporter un petit ajustement. C'est que les noms des fichiers contiendront des barres de soulignements. Ex: ABC_2011.xls.

    Un peu partout on peut lire que si le nom du fichier contient des "espaces" il faut adapter la macro. Voici ici-bas ce que j'ai utilisé car le nom du classeur est une variable.

    Mais je crois qu'on peut préciser en mentionnant que non seulement si le nom du classeur contient des espaces...mais aussi...des barres de soulignement (ou peut-être d'autres caractères?) on doit adapter la macro comme ici-bas.

    Dim LaMacroFr As String

    LaMacroFr = "'" & Var_NomFichier & "'!Pro_INTERFACEFR"

    Application.Run LaMacroFr

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

    0 commentaires Aucun commentaire
  4. DanielCo 107.1K Points de réputation
    2011-07-13T09:08:02+00:00

    Bonjour,

    La syntaxe est :

    Application.Run Var_NomFichier & "!Pro_INTERFACEFR"

    Cordialement.

    Daniel

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

    0 commentaires Aucun commentaire