Problème d'ouverture d'une macro complémentaire .xlam

Albatros86

XLDnaute Nouveau
Re coucou à toutes et tous,
Pas de signe de vie depuis août, je reviens néanmoins vers vous avec, comme toujours, avec un problème qui est au delà de mes compétences et connaissances en langage VBA :eek:

Situation :
  • J'ai un fichier Macro_Goliath.xlam qui regroupe la totalité de mes macros. Les macros sont inscrites dans des modules, avec public sub. J'ai également une macro inscrite dans le thsiworkbook(avec Private Sub Workbook_SheetActivate). Cette macro a pour fonction de copier des données d'une feuille à l'autre.


  • J'ai un fichier "Goliath.xlsm" qui en s'ouvrant, charge (à l'aide d'un code VBA) les macros contenues dans le fichier "Macro_Goliath.xlam". Je peux donc les utiliser sans problème. Par contre, la macro contenue dans le thisworkbook (avec Private Sub Workbook_SheetActivate) de Macro_Goliath.xlam ne s'actionne pas quand j'ouvre mon fichier Goliath.xlsm.

Ma question :
Comment puis-faire pour actionner la macro SheetActivate de thisworkbook dans le Macro_Goliath.xlam lorsque que j'ouvre le fichier Goliath.xlsm sans inscrire de code vba dans le fichier goliath.xlsm (C'est très important) ?

Fichiers sources :
Voici mes deux fichiers afin de clarifier mes propos.

Une idée les amis ?
 

Pièces jointes

  • Goliath II - Interne.xlsm
    48.5 KB · Affichages: 64
  • Macro_Goliath.xlam.zip
    60.7 KB · Affichages: 41
Dernière édition:

Albatros86

XLDnaute Nouveau
Re : Problème d'ouverture d'une macro complémentaire .xlam

Je confirme que cet exemple de code placé dans ThisWorkbook du classeur de macros est opérationnel :
VB:
Dim WithEvents Excel As Application

Private Sub Workbook_Open()
Set Excel = Application
End Sub

Private Sub Excel_WorkbookActivate(ByVal Wb As Workbook)
MsgBox Wb.Name, vbInformation, "Test"
End Sub

Excellent merci.
Par contre Excel me dit qu'il y a une erreur. Attribut incorrect dans la procédure Sub ou Fonction et ils souligne "WithEvents Excel As Application"
 

Dranreb

XLDnaute Barbatruc
Re : Problème d'ouverture d'une macro complémentaire .xlam

Le mot clé WithEvents est un attribut incorrect dans un module ordinaire ou dans une procédure, mais pas tout en tête du module ThisWorkbook ou juste après Option Explicit. Il ne peut s'appliquer qu'à une variable globale dans un module objet.
 
Dernière édition:

Albatros86

XLDnaute Nouveau
Re : Problème d'ouverture d'une macro complémentaire .xlam

Le mot clé WithEvents est un attribut incorrect dans un module ordinaire ou dans une procédure, mais pas tout en tête du module ThisWorkbook ou juste après Option Explicit.

J'ai été verifier où j'avais écrit le code. Il est bien dans thisworkbook de Macro_Goliath.xlam. Cela ne fonctionne pas. Il me met le message d'erreur. Par contre j'ai recopié votre code dans un fichier complémentaire vierge,lié à un classeur excel vierge. Et là miracle, cela fonctionne.

Je vais donc reprendre deux fichiers vierges etréecrire mes macros. Après toutes les modifications et tests, il est possible qu'il y ait des incohérences qui perturbent cette fonction. Je vous tiendrai informé. Merci pour ta solution...
 

job75

XLDnaute Barbatruc
Re : Problème d'ouverture d'une macro complémentaire .xlam

Re,

Quand j'essaie cette méthode, excel m'informe à l'ouverture du fichier goliath.xlsm une erreur 404. Objet requis et dans mon éditeur VBa il souligne la ligne suivante : Set WB(i).WB = Workbooks(i)
Une idée ?

Dans mes tests je n'ai jamais eu de bug.

Avez-vous bien créé le Module de classe en y plaçant tout le code que j'ai indiqué ?

A+
 

Albatros86

XLDnaute Nouveau
Re : Problème d'ouverture d'une macro complémentaire .xlam

Re,


Dans mes tests je n'ai jamais eu de bug.

Avez-vous bien créé le Module de classe en y plaçant tout le code que j'ai indiqué ?

A+

J'ai effectivement bien créé le module class. Je pense qu'au vu des diverses modifications réalisées sur ce fichier, il est possibles qu'il y ait des perturbations, des incohérences. Je n'avais pas pensé à tester ce code dans deux fichiers vierges. Je pense que, comme pour la proposition de Dranreb, l'erreur est survenue suite à tous mes test, motifs sur le fichier.

Cela m'apprendra à tester sur des fichiers vierges à l'avenir ;)

Quoiqu'il en soit, je suis satisfait de la solution proposée par Dranreb, et je vous remercie tous deux pour les multiples solutions que vous m'avez offert. Grace à vous, Excel est toujours un grand mystère, mais j'ai avancer d'un pas (de fourmis) ;).

Je testerai tout de même votre solution, ne serait-ce que par soucis de compréhension du dit code.

Y-a-t'il un moyen de nommer le sujet comme résolu ?
 

job75

XLDnaute Barbatruc
Re : Problème d'ouverture d'une macro complémentaire .xlam

Bonjour Albatros86, Bernard,

Au post #1 il est fait mention d'une macro SheetActivate.

Si je comprends bien il faut utiliser ce code :

Code:
Dim WithEvents Excel As Application

Private Sub Workbook_Open()
Set Excel = Application
End Sub

Private Sub Excel_SheetActivate(ByVal Sh As Object)
If Sh.Parent.Name = "Goliath.xlsm" Then
  MsgBox Sh.Parent.Name & " - " & Sh.Name, vbInformation, "Test"
  '-----
End If
End Sub
A+
 

Albatros86

XLDnaute Nouveau
Re : Problème d'ouverture d'une macro complémentaire .xlam

Bonjour Albatros86, Bernard,

Au post #1 il est fait mention d'une macro SheetActivate.

Si je comprends bien il faut utiliser ce code :

Code:
Dim WithEvents Excel As Application

Private Sub Workbook_Open()
Set Excel = Application
End Sub

Private Sub Excel_SheetActivate(ByVal Sh As Object 
If Sh.Parent.Name = "Goliath.xlsm" Then
  MsgBox Sh.Parent.Name & " - " & Sh.Name, vbInformation, "Test"
  '-----
End If
End Sub
A+

Oui job75 tu as raison.
Le code transmis or Danreb est utilisable avec des événements. Il suffit de changer l'événement de cette ligne de code

Code:
. Private Sub Excel_SheetActivate(ByVal Sh As Object

En remplaçant le SheetActivate par un autre événement, le code devrait fonctionner normalement, sans demander au fichier source d'exécuter l'événement de la macro complémentaire. Donc très utile dans mon cas

Merci à vous deux
 

Discussions similaires