Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA - Gestion de Compléments

Dudu2

XLDnaute Barbatruc
Bonjour,

Est-il possible de faire cette manip via le code d'un classeur ?

Le problème qui motive cette question est le suivant:
En gérant par VBA les Compléments, lorsqu'on ajoute un tout nouveau fichier .xlam, le classeur ne le "voit" pas et donc on ne peut pas l' "installer" (en terminologie Excel), perso je préfère le terme "activer". Il faut fermer puis ré-ouvrir Excel (tous les classeurs) pour qu'il mette à jour sa liste de compléments (en ajout ou en suppression) et qu'elle soit accessible aux classeurs qui s'ouvrent.

J'ajoute que:
VB:
Application.OnTime Now + TimeSerial(0, 0, 2), "OpenMe"
Application.Quit

Sub OpenMe()
    MsgBox "Back"
End Sub
Fonctionne sur le plan de la ré-ouverture mais ne rafraichit pas la liste des Compléments comme le fait un fermeture / ré-ouverture manuelle car il n'y a de réelle fermeture d'Excel.

Merci par avance.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Il ne le référence certainement pas dans le Projet VBA, ça c'est sûr.

Ce qui référence le Complément dans les compléments Excel c'est le 1er:
AddIns.Add Filename:=<chemin du classeur xlam>\<nom du classeur xlam>.xlam
Le nom du Complément référencé est le nom du classeur xlam.
 

patricktoulon

XLDnaute Barbatruc
a non chez moi la référence n'est pas le nom du xla c'est le nom du vbproject du xla
a moins que tu lui ai donné le même nom

ok pour la fenêtre vbe
pour le moment le xla est installé OK

mais maintenant met un module ou dans un des module de ton xlsm et
VB:
sub test()'cette sub est dans xlsm

Bonjour ' cette sub est dans ton xla

end sub
ça m’étonnerait que la sub "Bonjour" soit reconnue
fais moi plaisir fait le ce test simple
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
mais maintenant met un module ou dans un des module de ton xlsm et
Non, il ne le reconnaitra pas. Je n'ai pas besoin de faire le test.
C'est comme si tu avais 2 classeurs ouverts en même temps et que tu essayais d'appeler une macro de l'autre classeur directement par son nom. Il ne la reconnaitra pas.
 

patricktoulon

XLDnaute Barbatruc
Non, il ne le reconnaitra pas. Je n'ai pas besoin de faire le test.
C'est comme si tu avais 2 classeurs ouverts en même temps et que tu essayais d'appeler une macro de l'autre classeur. Il ne la reconnaitra pas.
ah!!!!!! enfin on y arrive
et ben c'est pas trop tôt

bon!!
alors tu va peut être m'expliquer a quoi te sert un xla INSTALLE dont on ne peut pas utiliser les fonctions ou macro

maintenant dans ton xlsm active la référence( du nom que tu a donné au vbproject du xla ou "vbproject"si tu lui a pas donné de non )
et relance la sub test

dis moi merci ça suffira

j’espère qu'après ça tu saura faire la différence entre installed et référence au xla activé

AMEN
 

Dudu2

XLDnaute Barbatruc
ah!!!!!! enfin on y arrive
Le but des Compléments Excel ce n'est pas d'être appelé par le VBA d'un autre classeur.
Je vois que tu mélanges encore les Compléments Excel et les Librairies / Réferences VBA.

Le but des Compléments Excel c'est d'avoir des Macros qui sont exécutables / applicables à un autre classeur ouvert. Ça n'a RIEN A VOIR AVEC du VBA ! Le lancement des macros des Compléments est autonome (sur des classes d'évènements, des touches, ...)

Allez, dis moi merci de t'avoir expliqué ce qu'est un Complément Excel.
 

patricktoulon

XLDnaute Barbatruc

mais quel est l'ostrogopiteque de Cro-Magnon qui a bien pu te mettre un tel raisonnement dans la tete
donne moi son nom que je lui mette des tartes

alors là je suis scié


ah oui là celle là elle bonne, tu viens de faire ma journée là

merci mais pas pour l'explication

j'étais certain que tu allais me sortir un truc de ce genre
a oui je vais faire un sondage
 

Dudu2

XLDnaute Barbatruc
Je comprends que ça doit être un choc pour toi. Tu es parti sur de fausses bases depuis 1 an et 16 jours et maintenant tu as la révélation .

Si tu as encore des doutes, consulte cette documentation de Microsoft:
A aucun moment on y parle d'aller naviguer dans les entrailles du VBA pour y cocher des références.
Et oui...
 

Dudu2

XLDnaute Barbatruc
Par contre je n'ai pas les infos sur les Compléments de type DLL. Je ne connais que les XLA et XLAM.
Il est possible qu'ils soient, eux, directement appelables en VBA. En fait je n'en connais rien.
 

patricktoulon

XLDnaute Barbatruc
non mon pauvre ami
tu peux me donner les liens que tu veux
je crois que (encore une fois ) tu interprète les choses a ta façon

me dire que qu'une macro ou fonction dans un xla(m) n'est pas faite pour être appelée d'un autre classeur
et EN VBA , c'est absurde
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Si tu y tiens vraiment, bien que ce ne soit pas le but initial, si le Complément est activé, rien ne t'empêche de le faire:
VB:
Sub a()
    Dim Complément As String
    Dim Macro As String
    
    Complément = "MesMacros.xlam"
    Macro = "Bonjour"
    
    Application.Run ("'" & Complément & "'!" & Macro)
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
tu te rend compte par toi même (j'èpere)que c'est absurde de faire un run sur un fichier ouvert
même si ça marche

va faire des sub ou fonction argumentée dans le xla toi avec app.run on va bien rigoler

non Dudu2 t'y es pas du tout là
sincèrement je ne sais pas ou tu es aller chercher ce raisonnement mais tu a tout faux

"macro complémentaires"
rien que le nom devrait titiller ton bulbe rachidien

alors certes un xla peut avoir des classe et même tourner en autonome si tu veux

mais avant tout un xla c'est un complément de macros ou fonction utilisable dans tout classeurs
a partir du moment ou il est cocher et sa reference activée dans le classeur l'utilisant
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…