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
Je crois qu'on va en rester là. On ne va pas en discuter des heures. Tu m'as fait part de ta conception de la chose et nous ne sommes pas d'accords. Ben c'est pas grave.

J'ai un souci d'OTCI et j'essaie d'appeler le Service des Amendes de l'administration fiscale. Peut-être 40, 50 fois. Pas de système de mise en attente, rejet systématique. Si y a un XLDNaute qui a des entrées, je suis preneur !
 

patricktoulon

XLDnaute Barbatruc
les complément dll d'origine
sont dispo directe dans
les fonctions excel(formule)
ou
worksheetfunction.nomdefonction(....) en vba
si tu veux pousser plus loins là encore il faut aller cocher les ref
voir même obligatoire sur certaines dll qui n'ont pas de signature microsoft
 

patricktoulon

XLDnaute Barbatruc
re
tiens
VB:
Sub test()
    Dim tbl(1 To 1000, 1 To 4)
    Dim Ref As Reference
    Dim a&
    Dim NameProject$

    For Each addinx In AddIns
        a = a + 1

        tbl(a, 1) = addinx.Name

        tbl(a, 2) = addinx.Path

        tbl(a, 3) = addinx.Installed

        tbl(a, 4) = False

        If addinx.Installed Then

            NameProject = Workbooks(addinx.Name).VBProject.Name

            For Each Ref In ThisWorkbook.VBProject.References
                tbl(a, 4) = True
                If InStr(1, addinx.Name, ".xla") > 0 Then
                    If Ref.Name = NameProject Then tbl(a, 4) = True Else tbl(a, 4) = False
                End If

            Next Ref

        End If

    Next
    Cells.Clear
    Cells(1, 1).Resize(, 4) = Array("chemin", "nom", "installé", "actif")

    Cells(2, 1).Resize(a, 4) = tbl
    Columns("A:d").AutoFit
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonsoir Le Fil , Patrick
@patrick , lorsque je lance ta procédure et que les Compléments ne sont pas Cochés pas de problème affichage de la Liste sur la feuille;
Si je coche un ou tous les Compléments , là Message d'erreur.
"l'indice n'appartient pas a la sélection"
à ce niveau
VB:
 NameProject = Workbooks(addinx.Name).VBProject.Name

Question quelle référence dois-je cocher pour ?
Code:
Dim Ref As Reference
Merci par avance!
Jean marie