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-06T20:15:39+00:00

    Bonjour,

    Oui...je sais cela maintenant. Ces options (cases) sont bien cochées...

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2013-11-06T14:24:31+00:00

    Bonjour,

    Si tu viens de faire une nouvelle installation, il ne faut pas oublier

    d'aller cocher dans les options d'Excel / Centre de gestion de la confidentialité /

    bouton : paramètres du centre de gestion de la  confidentialité / paramètres des macros /

    et cocher la case de la fenêtre : "Accès approuvé au modèle d'objet du projet VBA.

    Si cette option n'est pas cochée, aucune ligne de code ne s'exécutera!

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2013-11-06T14:13:48+00:00

    Bonjour,

    Merci. Mais ça ne fonctionne pas. Je ne sais pas si c'est dû à Windows 8. je vous explique...

    J'ai changé le code. Le code s'exécute maintenant dans le classeur1. Je ne lance plus la macro du classeur2.

    Mais il semble que ça soit dans Excel le problème. Car ça plante à des lignes comme Application.EnableEvents = false ou Application.Calculation = XLCalculationManual etc. et c'est probablement ce qui se passait même avec mon ancien code.

    J'ai remarqué une chose...si j'ouvre 3 classeurs par exemple et si je clique sur le X rouge en haut à droite...cela fait en sorte de vouloir fermer les 3 classeurs. Mais là il ferme qu'un classeur à la fois comme pour Excel 2013...même si l'usager est en 2010.

    Est-ce que cela a un impact et qu'alors il faut changer du code?

    Merci à l'avance.

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

    0 commentaires Aucun commentaire
  4. Anonyme
    2013-11-05T23:44:27+00:00

    Bonjour,

    La variable qui contient le nom du fichier où est la macro appelée

    doit aussi contenir l'extension contenue dans le nom du fichier...

    J'ai commenté les lignes de code...

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

    Sub test()

    Dim LaMacroNotes As String

    Dim Var_Model As String

    'Le nom du classeur doit aussi avoir son extension

    Val_Model = "Classeur1.xlsm"

    'Pour que cette syntaxe fonctionne, il faut que la macro

    'soit dans un MODULE STANDARD

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

    'Si la procédure appelée est dans un module feuille

    'tu dois ajouter le nom de l'objet Feuille visible seulement

    'dans la fenêtre VBA et non le nom de l'onglet de la feuille.

    'Comme ceci : Si l'objet Feuille s'appelle "Feuil1"

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

    Application.EnableEvents = False

    Application.Run LaMacroNotes

    Application.EnableEvents = True

    End Sub

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

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

    0 commentaires Aucun commentaire