VBA : liste de toutes les références disponibles (activées ou non)

dionys0s

XLDnaute Impliqué
Bonjour le forum,

tout est dans le titre. J'aurais aimé savoir s'il était possible d'obtenir la liste de toutes les références disponibles.

Lorsqu'on parcourt les références d'un projet, on n'obtient malheureusement que celles qui sont déjà activées.

D'avance merci pour votre aide :cool:
 

DoubleZero

XLDnaute Barbatruc
Re : VBA : liste de toutes les références disponibles (activées ou non)

Bonjour, dionys0s, CISCO :), le Forum,

En attendant mieux, le code suivant liste les références actives... uniquement... dans le fichier actif.

Code:
Sub Références_actives()
' code de michdenis (merci !)
    Dim Ref As Object
    Dim Sh As Worksheet
    Dim a
    With ThisWorkbook
        Set Sh = .Worksheets("a")    ' nom onglet adapter
        For Each Ref In .VBProject.References
            a = a + 1
            With .VBProject.References(a)
                Sh.Range("A" & a) = .Name
                Sh.Range("B" & a) = .Description
                Sh.Range("C" & a) = .FullPath
                Sh.Range("D" & a) = .Major
                Sh.Range("E" & a) = .Minor
                Sh.Range("F" & a) = .GUID
            End With
        Next
        Sh.Range("A:F").EntireColumn.AutoFit
    End With
End Sub

A bientôt :)
 

dionys0s

XLDnaute Impliqué
Re : VBA : liste de toutes les références disponibles (activées ou non)

Re,

Je ne peux pas tellement être plus précis non... quelle que soit la machine, l'OS, quel que soit le contenu du fichier, je souhaitais savoir s'il était possible de lister toutes les références potentielles. Je savais déjà lister les actives (merci quand même DoubleZero) et donc j'aurais aimé lister les autres.
 

david84

XLDnaute Barbatruc
Re : VBA : liste de toutes les références disponibles (activées ou non)

Bonsoir dionys0s, CISCO, 00,
et si tu nous expliquais quel est le but de la manœuvre ?
Je suppose que si tu veux lister toutes les références disponibles c'est dans un but bien précis non ?
A+
 

dionys0s

XLDnaute Impliqué
Re : VBA : liste de toutes les références disponibles (activées ou non)

Re,

dans l'idée (et si j'y arrive) c'est pour une histoire de compatibilité Mac/PC. Activation/désactivation de références automatiquement à l'ouverture du classeur en fonction de l'OS.
 

david84

XLDnaute Barbatruc
Re : VBA : liste de toutes les références disponibles (activées ou non)

Le plus simple est d'utiliser une liaison tardive via un CreateObject comme cela tu n'as plus besoin de cocher les bibliothèques dont tu as besoin.
Ceci dit les bibliothèques propres à l'environnement Windows ne pourront pas être utilisées sous Mac.
A+
 

dionys0s

XLDnaute Impliqué
Bonjour le forum,

je ressuscite ce post. La question était restée en suspens à l'époque et je cherche encore un moyen de lister toutes les références disponibles (et pas seulement celles qui sont actives) pour en activer certaines. Je connais les liaisons tardives, mais j'aimerais m'en passer, les gains de performance sont substantiels.

J'ai fini par trouver une méthode qui utilise l'API Windows. J'ai donc accès aux références disponibles, notamment à leur description (le texte que l'on voit dans le VBE dans la liste des références), leur chemin d'accès (FileName) et leur GUID. Avec ça je peux vérifier les références actives et activer les manquantes avec la commande VBProject.References.AddFromFile(FileName).
Ca fonctionne, mais uniquement lorsque le résultat est inscrit en dur dans une feuille de calcul.
Si je liste les résultats dans une collection de classe, par exemple la référence "Microsoft Forms 2.0 Object Library" devient "Microsoft Forms 2.0 Object Library 0 O b j e c t L i b r a r y r a r y . 0 T y p e l i b r a r y L i b r a r y " et c'est comme ça pour toutes les références.

Y a-t-il un moyen de contourner ça et de récupérer le texte "propre" sans passer par une écriture dans une feuille de calcul ?

Bonne journée à tous.
 

Pièces jointes

  • List available references.xlsm
    47.2 KB · Affichages: 38

dionys0s

XLDnaute Impliqué
Voici ce que j'observe : lorsque le code suivant s'exécute :

VBA.png


Voici ce qui s'écrit dans l'onglet :
Worksheet.png

c'est à dire des chaînes de caractère normales,

et voici ce que j'obtiens dans la fenêtre d'exécution du VBE :
DebugPrint.png
 

Dranreb

XLDnaute Barbatruc
Personnellement je n'utilise jamais la fenêtre d'exécution, ni les instruction Debug.Print. Je n'ai jamais pu comprendre à quoi ça pouvait bien servir, ça ne fait que compliquer les chose inutiliment. Je mets seulement de temps à autre des espions pour déboguer. À part ça seul le résultat produit m'intéresse.
 
Dernière édition:

dionys0s

XLDnaute Impliqué
Certes, mais c'est juste pour dire que le contenu de la variable "lpDescription" contient une chaîne de caractères. Et que cette chaîne mise dans une cellule est différente :
Par exemple "Microsoft Scripting Runtime p t i n g R u n t i m e a r y s s i o n s 5 . 5 r y y i b r a r y L i b r a r y " devient "Microsoft Scripting Runtime" dans la cellule. C'est ce que je ne m'explique pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 596
Membres
103 252
dernier inscrit
Ersar