XL 2016 VBA - Code pour ajouter / retirer un .xlam des compléments

Dudu2

XLDnaute Barbatruc
Bonjour,

Quelqu'un aurait-il une Macro toute faite pour ajouter / retirer un .xlam des compléments pris en compte.
Ça m'éviterait en cours de développement de chaque fois aller dans Fichier / Options / Compléments / Atteindre / cocher ou décocher le .xlam

Merci par avance.
 
Solution
Bonjour.
Si le nom du projet du xlam (qui doit alors être différent de l'habituel "VBAProject" des classeurs utilisateurs) est coché dans les références d'un des classeur utilisateurs ouverts, il n'est pas nécessaire que le complément soit activé: il est ouvert automatiquement. Cela dit oui, je crois qu'il existe une commande.
Trouvé :
VB:
    AddIns("CBx liées et Ctl associés").Installed = False
    AddIns("CBx liées et Ctl associés").Installed = True

Dranreb

XLDnaute Barbatruc
Bonjour.
Si le nom du projet du xlam (qui doit alors être différent de l'habituel "VBAProject" des classeurs utilisateurs) est coché dans les références d'un des classeur utilisateurs ouverts, il n'est pas nécessaire que le complément soit activé: il est ouvert automatiquement. Cela dit oui, je crois qu'il existe une commande.
Trouvé :
VB:
    AddIns("CBx liées et Ctl associés").Installed = False
    AddIns("CBx liées et Ctl associés").Installed = True
 

patricktoulon

XLDnaute Barbatruc
re
ou lala non!!!!
pour que le installed (true/false) il faut qu'elle soit coché dans les options
si le xla n'est pas dans le dossier des complément mais un dossier perso comme chez moi par exemple tu es chocolat
installed true false ne fait qu'ajouter la ref dans les références mais ne l'active pas selon les version excel
et pour peu que le dossier du xla(m) ne soit pas celui des addins , ben tu a un beau message d'erreur
perso je coche et installe a l'ouverture et decoce et désinstalle a la fermeture
pour plus de facilité je nomme le vbproject du xla du même nom que lui meme comme ca on s'i retrouve
sinon tu va te retrouver avec une ref vbproject dans les reference et pour peu que tu veuille enclenché plusieurs xla(m) ben là encore tu es chocolat

conclusion
  • à l'ouverture on add la ref au xla et installed true
  • à la fermeture on remove la ref au xla installed false
mon xlam s'appelle mesmacro2.xlam
je l'ai placé sur le bureau pour l'exemple
son vbproject.name est le même "mesmacro2"

a l'ouverture d'un classeur quelconque
VB:
Sub AddRefXla()
    cheminpersoxla = Environ("userprofile") & "\Desktop\mesmacros2.xlam"
    Dim vbProj As VBIDE.VBProject
    Set vbProj = ActiveWorkbook.VBProject
    vbProj.References.AddFromFile (cheminpersoxla)
AddIns("Mesmacros2").Installed = True
End Sub

a la fermeture de ce classeur
Code:
Sub SuPRefXla()
    cheminpersoxla = Environ("userprofile") & "\Desktop\mesmacros2.xlam"
    Dim vbProj As VBIDE.VBProject
    Set vbProj = ActiveWorkbook.VBProject
    vbProj.References.Remove vbProj.References("mesmacro2")
 AddIns("Mesmacros2").Installed = False
End Sub

voilà c'est net avant c'est net après
et pas besoins de la cocher dans les options
Enjoy;)

demo.gif
 

patricktoulon

XLDnaute Barbatruc
re
un dernier truc important quand meme
imaginons que tu ouvre un classeur quelconque et que tu add un xlam
tu bricolle sur ton classeur , blablabla , tu sauve ton classeur pour garder ton travail
tu enleve la ref au xlam
tu ferme ton classeur
quand tu le ré ouvrira tu aura ton xlam d'activé
c'est d'ailleurs pour ca que tu crois que le installed true/ false suffit, car tu a du faire un save as ou save tout court a un moment donné dans l'élaboration de ton projet quand le xlam etait activé
 

patricktoulon

XLDnaute Barbatruc
@Dudu2
je le répète c'est pas bon
j'ai tester mon calendar 4.4.1 je l'ai enregistré
je clique sur activer
j'ai bien la référence dans outils/références mais elle n'est pas cochée donc inutilisable dans le projet
comme je te l'ai dis ça marche chez toi par ce que tu a enregistré le classeur xlsm au moins une fois avec le xla activé

le le répète installed=(true/false) ne sert qu'a coché par vba le complément xla dans les options de l'application , en aucuns cas coche la ref dans les références du classeur actif
j'ai tester 15 fois pour être sur de ce que je dis

voilà ce que fait installed=.....
1637843096157.png


pour te la faire courte si tu add pas la ref au vbproject du complément installed te sert a rien
 

patricktoulon

XLDnaute Barbatruc
maintenant je vais te poser une question
d’après toi installer un complément PAR VBA !!!! (installed=true) est il utile ????

sachant que addfromfile l'active , le coche dans les refs et est donc utilisable immédiatement
sachant qu'a tout moment on peut le déactiver( décocher des refs) avec thisworkbook.vbproject.remove vbproject.references(nom du vbproject du xla )
 

Dudu2

XLDnaute Barbatruc
@patricktoulon,

Je vois pas le lien entre la référence cochée dans ton Classeur / Projet VBA et le fait que:
- Le classeur MesMacros.xlsm est enregistré en .xlam dans C:\Users\Moi\AppData\Roaming\Microsoft\AddIns\MesMacros.xlam
- La référence MesMacros ajoutée AddIns.Add Filename:=C:\Users\Moi\AppData\Roaming\Microsoft\AddIns\MesMacros.xlam
- La référence MesMacros installée: Application.AddIns(C:\Users\Moi\AppData\Roaming\Microsoft\AddIns\MesMacros.xlam).Installed = True

Je n'ai pas mis ce fichier sans le tester et chez moi tout marche parfaitement sans avoir "enregistré le classeur xlsm au moins une fois avec le xla activé".
De plus je n'ai rien à cocher dans les Outils/References d'aucun classeur pour obtenir le résultat recherché.
Tout classeur ouvert bénéficie des macros de MesMacros.

Je ne sais pas ce que tu veux faire avec tes références. Mais pour moi, cet utilitaire remplit 100% de ce que je lui demande.

Je n'arrive pas à joindre le GIF pour cause de fichier trop volumineux (1 650 KO !!)
 

Dudu2

XLDnaute Barbatruc
Je viens de tester et ça:
d’après toi installer un complément PAR VBA !!!! (installed=true) est il utile ????
sachant que addfromfile l'active
C'est faux !
Après le AddIns.Add Filename:=<fichier> il faut bien un Application.AddIns(<fichier>).Installed = True
Sinon la case n'est pas cochée dans les options / compléments.
 

patricktoulon

XLDnaute Barbatruc
re

C'est faux !
Après le AddIns.Add Filename:=<fichier> il faut bien un Application.AddIns(<fichier>).Installed = True
Sinon la case n'est pas cochée dans les options / compléments.

re
tu es testard moi aussi
c'est ce que j'essaie de t'expliquer depuis tout a l'heure
installed ne marche que si la ref est coché dans les options

demo.gif


je t'ai donné la solution pour activer un complément dans les options et coché en même temps la ref dans les refs dans VBE pour s'en servir
comme tu peux le voir sur la démo en image installed tout seul ne marche pas tout seul
c'est impossible d'ailleurs comment pourrait il faire surtout si c'est un addins qui n'est pas dans le dossier prévu pour ces fichiers complément


si ca marche chez toi et de cela j'en suis sur c'est que tu a enregistrer un xlsm avec comme nom de vbproject "vbproject" et comme tout les classeur d'origine ont ce nom comme vbproject ben ton xla s'active avec installed true forcement( je l'ai deja vu ca sur dvp)
le demandeur se demandait pourquoi son xla etait present dans tout ses classeurs alors qu'il ne l'avait pas coché dans les options

tout les classeurs devraient avoir le propre nom de vbproject ce devrait être un réflexe

je le répète haut et fort une dernière fois

pour utiliser addins(xxxxx).installed
il faut d'abords qu'il soit déjà coché dans les options /complements/atteindre
si c'est pas le cas Ou!!! si le xla est dans un dossier perso bye!!bye!!!
 

patricktoulon

XLDnaute Barbatruc
re non visiblement
mais tu reviendra me voir j'en suis sur ;)moi ou quelqu'un d'autre bien sur (mais tu reviendra)
si tu crois que
set myaddin= addins.add (filename:="xxxxx")
myaddin.installed=true


suffit a pouvoir utiliser les fonctions de cet add_in tu te trompe grandement
démonstration sans équivoque
on voit bien le xlam faire son apparition dans VBA
la sub ne marchera pas
demo.gif



on refait la même opération mais après on active la ref dans les refs


demo.gif


je te le redis tu reviendra me voir car tu va avoir des problème avec ton xla 😅
tu n'arrivera plus en t'en dépêtrer

là si tu veux pas l'entendre je peux plus rien ;)
 
Dernière édition:

Discussions similaires