Executer une macro depuis un classeur vers un autre

Bonjour à tous,

Je suis bloqué dans mon projet et j'ai besoin de votre aide.

J'ai réalisé une macro "Test1" dans un classeur "Book1".

Depuis un bouton dans Book1, j'aimerai pouvoir lancer ma macro afin qu'elle trie des données dans la feuille "sheet2" du classeur "Book2".

J'ai essayé avec les infos ci-dessous :

J'ai bien mon fichier Book2.xls qui s'ouvre, mais rien ne se passe ensuite...

Sub Macro1()

'Ouvre le fichier Book1

On Error GoTo OuvertureFichierErreur
Dim MonApplication As Object
Dim MonFichier As String
Set MonApplication = CreateObject("Shell.Application")

MonFichier = "C:\Users\\Downloads\Book2.xls"
MonApplication.Open (MonFichier)

Set MonApplication = Nothing
Exit Sub

OuvertureFichierErreur:
Set MonApplication = Nothing
MsgBox "Erreur lors de l'ouverture de fichier..."

'Lancer la macro dans Sheet 2

Sheets("Sheet2").Select
Application.Run "'Book1.xlsm'& !Test1"

End Sub

Je compte sur vous ;)

Bonjour,

Voici un exemple avec une hypothétique macro Tri dépendant d'un paramètre worksheet :

Sub Macro1()
with workbooks.open("C:\Users\\Downloads\Book2.xls")
    Tri Sheets("Sheet2")
end with
End Sub

Sinon, il faudra poster le code de la macro Test1 à l'aide des balises </> du ruban d'icônes pour y voir plus clair.

Cdlt,

Merci pour votre réponse.

Cependant ce n'est pas exactement ce dont j'ai besoin.

En fait ce dont j'ai besoin, c'est du code me permettant de lancer la macro "Test1", qui est située dans le Book1, dans la Sheet2 du Book2.

Je vous en prie, c'était surtout pour montrer qu'il valait mieux selon moi passer par la méthode open de la collection workbooks plutôt que par l'objet shell.

Je pense qu'il faut surtout poster ici le code de la macro Test1 pour le savoir.

Mais sinon, bien que je doute que ce soit la meilleure manière d'agir, d'après ce que je vois, votre code peut-être simplifié ainsi :

Sub Macro1()
on error resume next
workbooks.open("C:\Users\\Downloads\Book2.xls").Sheets("Sheet2").activate
if err.number <> 0 then msgbox "Erreur : classeur ouvert ou inexistant ou feuille absente ou masquée", 16: exit sub
Application.Run "'Book1.xlsm'& !Test1"
end sub

Cdlt,

Rechercher des sujets similaires à "executer macro classeur"