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-08T05:08:01+00:00

    Bonjour,

    Concernant...

    ... Et oublie la commande On Error Resume Next

    À plusieurs endroits j'ai des .SpecialCells(....donc je dois insrire On Error Resume Next...Non?

    Et quelle est la différence entre Resume Next et On error Resume Next?

    Merci à l'avance.

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

    0 commentaires Aucun commentaire
  2. Anonyme
    2013-11-07T19:00:59+00:00

    Un exemple de code :

    Déclaration de la variable dans le haut du module

    Dim Ok As Boolean

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

    Sub test()   'Macro principale

    Ok = False

    Call MaMacro("Feuil25")

    If Ok = True Then Exit Sub

    Call MaMacro2

    End Sub

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

     Sub MaMacro(N As String)

     Dim NomMacro As String

     Dim GestionErreur As String

    'Tu affecte à une variable le nom

     'de la macro dans chaque procédure

     NomMacro = "MaMacro"

    On Error GoTo GestionErreur

    Worksheets(N).Activate

    Exit Sub

    GestionErreur:

     MsgBox "Une erreur a été généré : """ & Err.Number & _

     ", " & Err.Description & """ dans la procédure suivante : " & NomMacro & "."

    Err.Clear

    Ok = True

    Exit Sub

    End Sub

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

    Sub MaMacro2()

    Dim NomMacro As String

    Dim GestionErreur As String

    'Tu affecte à une variable le nom

    'de la macro dans chaque procédure

    NomMacro = "MaMacro2"

    'Le code à exécuter

    MsgBox "Bonjour"

    Exit Sub

    GestionErreur:

     MsgBox "Une erreur a été généré : """ & Err.Number & _

     ", " & Err.Description & """ dans la procédure suivante : " & NomMacro & "."

    Err.Clear

    Ok = True

    Exit Sub

    End Sub

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

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

    0 commentaires Aucun commentaire
  3. Anonyme
    2013-11-07T18:01:06+00:00

    Merci encore...

    Concernant

    "Ce que tu n'as pas dit c'est ce que tu veux qui se passe si tu appelles dans

    une macro plusieurs macros et si la première macro génère une erreur. Que

    veux-tu qui se passe? Toutes les opérations sont suspendues et la macro

    principale s'arrête?"

    La réponse est Oui.

    Alors...

    Merci à l'avance.

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

    0 commentaires Aucun commentaire
  4. Anonyme
    2013-11-07T13:02:57+00:00

    Chaque procédure appelée doit contenir un code de gestion d'erreur

    comme dans mon exemple... Et oublie la commande On Error Resume Next

    Ce que tu n'as pas dit c'est ce que tu veux qui se passe si tu appelles dans

    une macro plusieurs macros et si la première macro génère une erreur. Que

    veux-tu qui se passe? Toutes les opérations sont suspendues et la macro

    principale s'arrête?

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

    0 commentaires Aucun commentaire