Exécuter un Macro d'un autre fichier Excel DEJA ouvert ET sous une fenêtre différente

Mi_

XLDnaute Occasionnel
Bonjour le forum,

Dans la catégorie "exécuter les Macros d'un autre classeur Excel", on utilise AppExcel.Run "NomClasseur.xls!Macro"

Ce qui ouvre le fichier NomClasseur.xls et exécute le macro.

PAR CONTRE

J'ai deux fichiers ABC.xls et DEF.xls déjà ouverts (noms fixes, connus, toujours au même endroit), et ceci sous des sessions (fenêtres) Excel distinctes (Excel 2000). Donc le VBE d'un fichier ne voit pas le contenu VBA de l'autre.

Je souhaite quand même exécuter le code du fichier DEF.xls à partir de ABC.xls

Toute procédure AppExcel.Run "C:\DEF.xls!Macro" va ouvrir un doublon de DEF.xls ce que je ne veux pas. Mon DEF.xls est déjà ouvert et il est très bien comme ça !!

La fonction AppActivate (DEF.xls) marche très bien, elle m'active le fichier DEF.xls même si j'était sur ABC.xls. Mais je ne suis pas capable d'exécuter le code de DEF.xls qui est déjà ouvert, exécuter n'importe quel Sub présent dedans.

J'appelle à l'aide et je vous remercie d'avance pour tout conseil.
Bon dimanche,
Mi_
 

Roland_M

XLDnaute Barbatruc
Re : Exécuter un Macro d'un autre fichier Excel DEJA ouvert ET sous une fenêtre diffé

bonjour

pour t'aider, savoir si fichier chargé !?

For I = 1 To Workbooks.Count
If UCase(Workbooks(I).Name) = "DEF.XLS" Then MsgBox "Fichier DEF chargé"
If UCase(Workbooks(I).Name) = "ABC.XLS" Then MsgBox "fichier ABC chargé"
Next
 

Mi_

XLDnaute Occasionnel
Re : Exécuter un Macro d'un autre fichier Excel DEJA ouvert ET sous une fenêtre diffé

Bonjour Roland_M,

La fonction Workbooks.Count reconnaît uniquement les fichiers ouverts dans le cadre de la même session (application) Excel. Or moi j'ai ABC.xls et DEF.xls ouverts séparement, dans deux applications Excel distinctes (c'est voulu ainsi).
 

MichelXld

XLDnaute Barbatruc
Re : Exécuter un Macro d'un autre fichier Excel DEJA ouvert ET sous une fenêtre diffé

bonsoir


C'est possible à condition de connaitre au moins le chemin et le nom du classeur ouvert dans une autre instance :


Code:
Sub ClasseurAutreInstance()
    Dim Wb As Workbook
    Dim Chemin As String
    
    Chemin = "C:\dossier\nomClasseur.xls"
    
    Set Wb = GetObject(Chemin)
    If Not Wb Is Nothing Then _
        Wb.Parent.Run "'nomClasseur.xls'!Module1.nomMacro"
    
End Sub



bonne soirée
michel
Microsoft Excel MVP
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 518
dernier inscrit
hbenaoun63