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-08T15:35:54+00:00

    Voici un exemple complet.

    Utilise un tout nouveau classeur et copie

    tout ce qui suit dans un module.

    Utilise le mode pas à pas pour exécuter la procédure "Test"

    Comme il n'y a rien dans le classeur, cette ligne de code va

    générer une erreur de type 1004

    Set Rg = ActiveSheet.Range("A1:A10").SpecialCells(xlCellTypeFormulas)

    Observe ce qui se passe...il va aller faire un tour dans la gestion

    d'erreur et comme c'est une erreur 1004 il va continuer l'exécution

    à la ligne de code suivante de la procédure.

    Pour toute autre sorte d'erreur, il va mettre fin à l'exécution du code.

    Je ne peux rien faire de plus pour toi sur ce sujet!

    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, Rg As Range

    Dim GestionErreur As String

    'Tu affecte à une variable le nom

    'de la macro dans chaque procédure

    NomMacro = "MaMacro"

    On Error GoTo GestionErreur

    Set Rg = ActiveSheet.Range("A1:A10").SpecialCells(xlCellTypeFormulas)

    MsgBox "La ligne précédente génère une erreur 1004." & _

        "La procédure de gestion d'erreur permet de " & _

        "de reprendre l'exécution directement à cette ligne."

    Exit Sub

    GestionErreur:

    If Err.Number = 1004 Then

        Err.Clear

        Resume Next

    Else

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

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

         Err.Clear

         Ok = True

    End If

    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:

    If Err.Number = 1004 Then

        Err.Clear

        Resume Next

    Else

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

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

         Err.Clear

         Ok = True

    End If

    Exit Sub

    End Sub

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

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

    0 commentaires Aucun commentaire