Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ouvrir/Fermer une macro complémentaire

7 réponses
Avatar
cmoi
Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro pour
faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi

7 réponses

Avatar
papou
Bonjour
Si ta XLA est déjà présente dans la liste :
Application.AddIns("Macro complémentaire").Installed = True
En remplaçant par le nom apparaissant dans la liste quand tu fais Outils,
Macros Complémentaires

Sinon, il faut au préalable l'ajouter à la liste :
Application.AddIns.Add ("C:totomacrocomp.xla")

Cordialement
Pascal

"cmoi" a écrit dans le message de news:
47f35407$0$870$
Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro pour
faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi



Avatar
cmoi
Bonjour

Malheureusement il reste un problème :
Le code :
Application.AddIns("Macro complémentaire").Installed = True
ouvre non pas "MesMacros.xla", mais crée un nouveau classeur MesMacros1
comme si il ne s'agissait pas d'une macro complémentaire mais d'un modèle.
Ce nouveau classeur n'apparait que dans la fenètre vba et bien sûr les
macros ne sont pas reconnues.

Comment faire pour éliminer ce problème?

Merci

cmoi




"papou" a écrit dans le message
de news: %
Bonjour
Si ta XLA est déjà présente dans la liste :
Application.AddIns("Macro complémentaire").Installed = True
En remplaçant par le nom apparaissant dans la liste quand tu fais Outils,
Macros Complémentaires

Sinon, il faut au préalable l'ajouter à la liste :
Application.AddIns.Add ("C:totomacrocomp.xla")

Cordialement
Pascal

"cmoi" a écrit dans le message de news:
47f35407$0$870$
Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro
pour faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi







Avatar
Frédéric Sigonneau
Une autre approche pourrait être de laisser ta macro complémentaire disponible
en permanence (=cochée dans la liste de la boite de dialogue 'OutilsMacros
complémentaires...'), et de la rendre disponible aux classeurs qui t'intéresse
en établissant une référence vers cette macro à l'ouverture des classeurs voulus
et en la supprimant à leur fermeture.
Les bouts de code pour établir et supprimer une référence :

'======================== Sub AjouteRéférence2()
'nom du classeur auquel renvoie la référence (à adapter):
' "D: 6OfficeVBAClasseurTestXla.Xla"
'nom du projet VBA de ce classeur (à adapter):
' "ClasseurTestXla(ClasseurTestXla.Xla)"

ThisWorkbook.VBProject.References.AddFromFile _
"D: 6OfficeVBAClasseurTestXla.Xla"
End Sub

Sub EnlèveRéférence2()
With ThisWorkbook.VBProject.References
.Remove .Item("ClasseurTestXla")
End With
End Sub
'========================
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro pour
faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi




Avatar
cmoi
Bonsoir,

D'une part cette méthode ne me convient pas vraiment pour les deux raisons
indiquées dans mon premier post du 2 avril.
D'autre part elle provoque deux erreurs:
- Si la macro complémentaire est disponible, j'obtiens une erreur 32813: Nom
de module, de projet ou de bibliothèque d'objet déjà utilisé.
- Dans le cas contraire, j'ai une erreur 48: Erreur de chargement de la dll.

Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?

cmoi


"Frédéric Sigonneau" a écrit dans le message de news:

Une autre approche pourrait être de laisser ta macro complémentaire
disponible en permanence (=cochée dans la liste de la boite de dialogue
'OutilsMacros complémentaires...'), et de la rendre disponible aux
classeurs qui t'intéresse en établissant une référence vers cette macro à
l'ouverture des classeurs voulus et en la supprimant à leur fermeture.
Les bouts de code pour établir et supprimer une référence :

'======================== > Sub AjouteRéférence2()
'nom du classeur auquel renvoie la référence (à adapter):
' "D: 6OfficeVBAClasseurTestXla.Xla"
'nom du projet VBA de ce classeur (à adapter):
' "ClasseurTestXla(ClasseurTestXla.Xla)"

ThisWorkbook.VBProject.References.AddFromFile _
"D: 6OfficeVBAClasseurTestXla.Xla"
End Sub

Sub EnlèveRéférence2()
With ThisWorkbook.VBProject.References
.Remove .Item("ClasseurTestXla")
End With
End Sub
'======================== >
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro
pour faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi




Avatar
Frédéric Sigonneau
Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?


D'abord, vérifier que ta macro complémentaire est bien enregistrée au format
.xla : ta réponse à papou laisse un doute à ce sujet.
Pour vérifier : la propriété IsAddin du classeur (module ThisWorkbook) doit être
sur True.

Ensuite, pour manipuler une macro complémentaire dans la collection Addins, elle
doit avoir une propriété Title renseignée (ou alors il faut passer en revue
toutes les macros disponibles pour retrouver son index).
Pour cela, alors que la propriété IsAddin est sur False, dans Excel dérouler le
menu Fichier puis Propriétés et dans l'onglet Résumé renseigner le champ titre.
Enregistrer.
Tu n'es pas au bout de tes peines.
Si tu as installé ta macro manuellement alors que cette propriété n'était pas
renseignée, elle apparaît dans la liste des macros avec un "faux" titre (le nom
du fichier sans l'extension). Il faut provoquer la suppression de ce nom.
Pour cela, fermer Excel, dans l'explorateur renommer la macro complémentaire (de
maMacro.xla en __maMacro.xla par ex). Puis réouvrir Excel. Si la macro était
installée avant la fermeture, Excel va la chercher et ne pas la trouver. Et
demander si tu veux la supprimer de la liste. Répondre Oui. Si elle n'était pas
installée, tenter de la faire. Même réaction d'Excel, même réponse.
Ensuite refermer Excel, retourner dans l'explorateur, redonner à la macro son
nom initial, réouvrir Excel et réinstaller la macro. Elle devrait maintenant
apparaître dans la liste avec le titre que tu lui as donné.
Et pouvoir être installée et désintallée avec le code

Application.AddIns("Titre de la macro").Installed = True

(tout ça pour Excel 2003 mais valide avec 2002, et sans doute 2000 et 97. Pour
2007 je ne sais pas).

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonsoir,

D'une part cette méthode ne me convient pas vraiment pour les deux raisons
indiquées dans mon premier post du 2 avril.
D'autre part elle provoque deux erreurs:
- Si la macro complémentaire est disponible, j'obtiens une erreur 32813: Nom
de module, de projet ou de bibliothèque d'objet déjà utilisé.
- Dans le cas contraire, j'ai une erreur 48: Erreur de chargement de la dll.

Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?

cmoi


"Frédéric Sigonneau" a écrit dans le message de news:

Une autre approche pourrait être de laisser ta macro complémentaire
disponible en permanence (=cochée dans la liste de la boite de dialogue
'OutilsMacros complémentaires...'), et de la rendre disponible aux
classeurs qui t'intéresse en établissant une référence vers cette macro à
l'ouverture des classeurs voulus et en la supprimant à leur fermeture.
Les bouts de code pour établir et supprimer une référence :

'======================== >> Sub AjouteRéférence2()
'nom du classeur auquel renvoie la référence (à adapter):
' "D: 6OfficeVBAClasseurTestXla.Xla"
'nom du projet VBA de ce classeur (à adapter):
' "ClasseurTestXla(ClasseurTestXla.Xla)"

ThisWorkbook.VBProject.References.AddFromFile _
"D: 6OfficeVBAClasseurTestXla.Xla"
End Sub

Sub EnlèveRéférence2()
With ThisWorkbook.VBProject.References
.Remove .Item("ClasseurTestXla")
End With
End Sub
'======================== >>
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro
pour faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi








Avatar
cmoi
Bonsoir et merci

La macro est bien enregistrée au format .xla. Elle s'appelle "MacrosRP.xla"
La propriété IsAddin renvoie bien vrai
J'ai bien un titre défini dans les propriétés (non pas dans Excel car non
accessible, mais dans l'explorateur Windows). Ce titre apparaît bien dans la
liste des macros complémentaires (menu Outils>Macros complémentaires)
Jusqu'ici tout est OK
Mais c'est le code :
Application.AddIns("Titre de la macro").Installed = True
qui pose un problème. Ce code se trouve dans le Workbook_Open d'un modèle
.xlt qui utilise la macro complémentaire .xla
Après exécution, la macro est bien cochée dans le menu Macros
complémentaires avec le bon titre, mais lorsque j'ouvre la fenêtre vba, la
macro apparait comme si c'était un nouveau classeur établi sur un modèle,
c'est à dire "MacrosRP1" sans l'extension .xla (ou "MacrosRP2", "MacrosRP3"
si je ferme et ouvre plusieurs fois mon modèle sans fermer Excel). Ce
phénomène se produit aussi bien quand j'ouvre mon fichier xlt que lorsque je
crée un nouveau classeur basé sur ce modèle.
A l'inverse si je désinstalle la macro, la réinstalle, que je ferme Excel,
puis que je l'ouvre à nouveau, la macro apparait dans la fenêtre vba sous
son vrai nom de fichier "MacrosRP.xla".
Ce qui signifie que si la macro est installée manuellement elle est
correctement installée, si elle est installée par vba, elle s'ouvre en tant
que nouveau fichier non enregistré.
Si je crée un nouveau document basé sur mon modèle .xlt, la macro .xla
n'apparait pas du tout dans la fenêtre vba.
Enfin et c'est là que c'est gênant le code qui suit l'installation ne
s'exécute pas:
Dans la macro appelante, j'ai:

Private Sub Workbook_Open()
Application.AddIns("Titre de la macro").Installed = True
End Sub

Private Sub Workbook_Activate()
If Application.AddIns("Macros Réflexe-Partage").Installed Then
MsgBox "MacrosRP installée" 'Ce message s'affiche
Else
MsgBox "MacrosRP NON installée" 'Ce message ne s'affiche pas
End If
Une_routine_de_la_macro_complémentaire ' Cette routine ne s'exécute pas
End Sub

Si j'arrête l'exécution et que j'appelle
Une_routine_de_la_macro_complémentaire à partir du menu Outils>Macro>Macros,
elle s'exécute normalement.

J'espère qu'après tout ça, je n'embêtrais plus personne avec ce problème.

cmoi

"Frédéric Sigonneau" a écrit dans le message de news:

Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?


D'abord, vérifier que ta macro complémentaire est bien enregistrée au
format .xla : ta réponse à papou laisse un doute à ce sujet.
Pour vérifier : la propriété IsAddin du classeur (module ThisWorkbook)
doit être sur True.

Ensuite, pour manipuler une macro complémentaire dans la collection
Addins, elle doit avoir une propriété Title renseignée (ou alors il faut
passer en revue toutes les macros disponibles pour retrouver son index).
Pour cela, alors que la propriété IsAddin est sur False, dans Excel
dérouler le menu Fichier puis Propriétés et dans l'onglet Résumé
renseigner le champ titre.
Enregistrer.
Tu n'es pas au bout de tes peines.
Si tu as installé ta macro manuellement alors que cette propriété n'était
pas renseignée, elle apparaît dans la liste des macros avec un "faux"
titre (le nom du fichier sans l'extension). Il faut provoquer la
suppression de ce nom.
Pour cela, fermer Excel, dans l'explorateur renommer la macro
complémentaire (de maMacro.xla en __maMacro.xla par ex). Puis réouvrir
Excel. Si la macro était installée avant la fermeture, Excel va la
chercher et ne pas la trouver. Et demander si tu veux la supprimer de la
liste. Répondre Oui. Si elle n'était pas installée, tenter de la faire.
Même réaction d'Excel, même réponse.
Ensuite refermer Excel, retourner dans l'explorateur, redonner à la macro
son nom initial, réouvrir Excel et réinstaller la macro. Elle devrait
maintenant apparaître dans la liste avec le titre que tu lui as donné.
Et pouvoir être installée et désintallée avec le code

Application.AddIns("Titre de la macro").Installed = True

(tout ça pour Excel 2003 mais valide avec 2002, et sans doute 2000 et 97.
Pour 2007 je ne sais pas).

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonsoir,

D'une part cette méthode ne me convient pas vraiment pour les deux
raisons indiquées dans mon premier post du 2 avril.
D'autre part elle provoque deux erreurs:
- Si la macro complémentaire est disponible, j'obtiens une erreur 32813:
Nom de module, de projet ou de bibliothèque d'objet déjà utilisé.
- Dans le cas contraire, j'ai une erreur 48: Erreur de chargement de la
dll.

Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?

cmoi


"Frédéric Sigonneau" a écrit dans le message de news:

Une autre approche pourrait être de laisser ta macro complémentaire
disponible en permanence (=cochée dans la liste de la boite de dialogue
'OutilsMacros complémentaires...'), et de la rendre disponible aux
classeurs qui t'intéresse en établissant une référence vers cette macro
à l'ouverture des classeurs voulus et en la supprimant à leur fermeture.
Les bouts de code pour établir et supprimer une référence :

'======================== >>> Sub AjouteRéférence2()
'nom du classeur auquel renvoie la référence (à adapter):
' "D: 6OfficeVBAClasseurTestXla.Xla"
'nom du projet VBA de ce classeur (à adapter):
' "ClasseurTestXla(ClasseurTestXla.Xla)"

ThisWorkbook.VBProject.References.AddFromFile _
"D: 6OfficeVBAClasseurTestXla.Xla"
End Sub

Sub EnlèveRéférence2()
With ThisWorkbook.VBProject.References
.Remove .Item("ClasseurTestXla")
End With
End Sub
'======================== >>>
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro
pour faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi









Avatar
Frédéric Sigonneau
Je n'ai jamais rencontré ce problème personnellement. Cependant, d'après ce que
tu décris, c'est au moment de la création d'un nouveau classeur basé sur ton
modèle que tu rencontres le problème.
Je fais l'hypothèse que par contre il n'y a pas de problème
lorsque le classeur n'est plus un modèle (cad lorsqu'il a été enregistré et nommé).
Si c'est bien le cas, je te suggère 2 solutions possibles :
- soit interdire l'installation de la macro complémentaire si le classeur n'a
pas été enregistré en faisant un test sur son nom :

If ThisWorkbook.Path="" Then Exit Sub

- soit, après le test, signaler qu'il faut d'abord enregistrer le classeur avant
de continuer.

A suivre...

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonsoir et merci

La macro est bien enregistrée au format .xla. Elle s'appelle "MacrosRP.xla"
La propriété IsAddin renvoie bien vrai
J'ai bien un titre défini dans les propriétés (non pas dans Excel car non
accessible, mais dans l'explorateur Windows). Ce titre apparaît bien dans la
liste des macros complémentaires (menu Outils>Macros complémentaires)
Jusqu'ici tout est OK
Mais c'est le code :
Application.AddIns("Titre de la macro").Installed = True
qui pose un problème. Ce code se trouve dans le Workbook_Open d'un modèle
..xlt qui utilise la macro complémentaire .xla
Après exécution, la macro est bien cochée dans le menu Macros
complémentaires avec le bon titre, mais lorsque j'ouvre la fenêtre vba, la
macro apparait comme si c'était un nouveau classeur établi sur un modèle,
c'est à dire "MacrosRP1" sans l'extension .xla (ou "MacrosRP2", "MacrosRP3"
si je ferme et ouvre plusieurs fois mon modèle sans fermer Excel). Ce
phénomène se produit aussi bien quand j'ouvre mon fichier xlt que lorsque je
crée un nouveau classeur basé sur ce modèle.
A l'inverse si je désinstalle la macro, la réinstalle, que je ferme Excel,
puis que je l'ouvre à nouveau, la macro apparait dans la fenêtre vba sous
son vrai nom de fichier "MacrosRP.xla".
Ce qui signifie que si la macro est installée manuellement elle est
correctement installée, si elle est installée par vba, elle s'ouvre en tant
que nouveau fichier non enregistré.
Si je crée un nouveau document basé sur mon modèle .xlt, la macro .xla
n'apparait pas du tout dans la fenêtre vba.
Enfin et c'est là que c'est gênant le code qui suit l'installation ne
s'exécute pas:
Dans la macro appelante, j'ai:

Private Sub Workbook_Open()
Application.AddIns("Titre de la macro").Installed = True
End Sub

Private Sub Workbook_Activate()
If Application.AddIns("Macros Réflexe-Partage").Installed Then
MsgBox "MacrosRP installée" 'Ce message s'affiche
Else
MsgBox "MacrosRP NON installée" 'Ce message ne s'affiche pas
End If
Une_routine_de_la_macro_complémentaire ' Cette routine ne s'exécute pas
End Sub

Si j'arrête l'exécution et que j'appelle
Une_routine_de_la_macro_complémentaire à partir du menu Outils>Macro>Macros,
elle s'exécute normalement.

J'espère qu'après tout ça, je n'embêtrais plus personne avec ce problème.

cmoi

"Frédéric Sigonneau" a écrit dans le message de news:

Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?
D'abord, vérifier que ta macro complémentaire est bien enregistrée au

format .xla : ta réponse à papou laisse un doute à ce sujet.
Pour vérifier : la propriété IsAddin du classeur (module ThisWorkbook)
doit être sur True.

Ensuite, pour manipuler une macro complémentaire dans la collection
Addins, elle doit avoir une propriété Title renseignée (ou alors il faut
passer en revue toutes les macros disponibles pour retrouver son index).
Pour cela, alors que la propriété IsAddin est sur False, dans Excel
dérouler le menu Fichier puis Propriétés et dans l'onglet Résumé
renseigner le champ titre.
Enregistrer.
Tu n'es pas au bout de tes peines.
Si tu as installé ta macro manuellement alors que cette propriété n'était
pas renseignée, elle apparaît dans la liste des macros avec un "faux"
titre (le nom du fichier sans l'extension). Il faut provoquer la
suppression de ce nom.
Pour cela, fermer Excel, dans l'explorateur renommer la macro
complémentaire (de maMacro.xla en __maMacro.xla par ex). Puis réouvrir
Excel. Si la macro était installée avant la fermeture, Excel va la
chercher et ne pas la trouver. Et demander si tu veux la supprimer de la
liste. Répondre Oui. Si elle n'était pas installée, tenter de la faire.
Même réaction d'Excel, même réponse.
Ensuite refermer Excel, retourner dans l'explorateur, redonner à la macro
son nom initial, réouvrir Excel et réinstaller la macro. Elle devrait
maintenant apparaître dans la liste avec le titre que tu lui as donné.
Et pouvoir être installée et désintallée avec le code

Application.AddIns("Titre de la macro").Installed = True

(tout ça pour Excel 2003 mais valide avec 2002, et sans doute 2000 et 97.
Pour 2007 je ne sais pas).

FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonsoir,

D'une part cette méthode ne me convient pas vraiment pour les deux
raisons indiquées dans mon premier post du 2 avril.
D'autre part elle provoque deux erreurs:
- Si la macro complémentaire est disponible, j'obtiens une erreur 32813:
Nom de module, de projet ou de bibliothèque d'objet déjà utilisé.
- Dans le cas contraire, j'ai une erreur 48: Erreur de chargement de la
dll.

Si possible, j'aimerais mieux faire marcher la méthode :
Application.AddIns("Macro complémentaire").Installed = True
Que faire ?

cmoi


"Frédéric Sigonneau" a écrit dans le message de news:

Une autre approche pourrait être de laisser ta macro complémentaire
disponible en permanence (=cochée dans la liste de la boite de dialogue
'OutilsMacros complémentaires...'), et de la rendre disponible aux
classeurs qui t'intéresse en établissant une référence vers cette macro
à l'ouverture des classeurs voulus et en la supprimant à leur fermeture.
Les bouts de code pour établir et supprimer une référence :

'======================== >>>> Sub AjouteRéférence2()
'nom du classeur auquel renvoie la référence (à adapter):
' "D: 6OfficeVBAClasseurTestXla.Xla"
'nom du projet VBA de ce classeur (à adapter):
' "ClasseurTestXla(ClasseurTestXla.Xla)"

ThisWorkbook.VBProject.References.AddFromFile _
"D: 6OfficeVBAClasseurTestXla.Xla"
End Sub

Sub EnlèveRéférence2()
With ThisWorkbook.VBProject.References
.Remove .Item("ClasseurTestXla")
End With
End Sub
'======================== >>>>
FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://frederic.sigonneau.free.fr

Bonjour,

Avec vba, je voudrais charger automatiquement une macro complémentaire
'mesmacros.xla' à l'ouverture de CERTAINSclasseurs et la décharger à la
fermeture de ces mêmes classeurs. Ceci pour deux raisons :
- Dans le cas général (classeurs pour lesquels ce n'est pas prévu) les
macros contenues dans 'mesmacros.xla' ne doivent pas être accessibles.
- Le temps de chargement est relativement long.
Quel serait le code à insérer dans les classeurs nécessitant la macro
pour faire l'équivalent du menu Outils>Macro complémentaires ?

Bonne journée à tous

cmoi