Activation références VBA

Bonjour le Forum,

Je souhaiterais savoir s'il y a moyen d'activer automatiquement les références VBA d'un fichier lorsqu'il est ouvert sur un autre ordinateur, pour éviter les erreurs d'exécution.

ça m'arrive souvent lors de la création de nouvelle procédure (Macro) et que j'essaye de l'ouvrir sur mon PC au boulot, il beugue tout le temps.

Merci d'avance

Bonjour,

Tu peux vérifier si la référence existe et sinon utiliser le LateBinding :

Option Explicit
Sub Test()
' Vérifier que référence suivante est activée (EarlyBinding)
' - Microsoft Scripting Runtime - {420B2830-E718-11CF-893D-00A0C9054228}
' et sinon utilise le LateBinding
'
Dim Référence
Dim IsEarlyBinding As Boolean
For Each Référence In ThisWorkbook.VBProject.References
  If Référence.GUID = "{420B2830-E718-11CF-893D-00A0C9054228}" Then
    IsEarlyBinding = True
    Exit For
  End If
Next

#If IsEarlyBinding Then
  Dim u As Scripting.Dictionary
  Dim m As Scripting.Dictionary
  Set u = New Scripting.Dictionary
  Set m = New Scripting.Dictionary
#Else
  Dim u As Object
  Dim m As Object
  Set u = CreateObject("Scripting.Dictionary")
  Set m = CreateObject("Scripting.Dictionary")
#End If

  ' suite du code

End Sub

Cela marche pour toutes les librairies ?

Si non il y a une table des Référence.GUID ?

Il faut que la librairie soit installée sur le PC, tu peux alors l'ajouter.

Pour trouver le GUID, tu peux lister les librairies cochées dans un classeur (sinon il faut analyser le registre Windows HKEY_CLASSES_ROOT\TypeLib\ ) :

Option Explicit
Option Private Module

Sub AjoutRéférence()
'Exemple pour ajouter une référence
Dim Référence
  For Each Référence In ActiveWorkbook.VBProject.References
    If Référence.GUID = "{0002E157-0000-0000-C000-000000000046}" Then Exit Sub
  Next
  On Error GoTo fin
  ActiveWorkbook.VBProject.References.AddFromGuid _
    GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=0
Exit Sub
fin:
  On Error GoTo 0
  MsgBox "Impossible d'activer la référence" & vbLf & _
         "Microsoft Visual Basic for Applications Extensibility"
  End
End Sub

Sub ListerRéferences()
' Liste les références du Projet
' 11/07/10 Patrice33740
'
Const nomMsg$ = "Lister les références"
Const errWbk$ = "Ouvrir un classeur avant d'éxécuter cette commande."
Const errRef$ = "Ce classeur ne contient aucune reference."
'
Dim wbkCible As Excel.Workbook            'Classeur à examiner
Dim wbkRapport As Excel.Workbook          'Rapport
Dim cell As Excel.Range                   'Cellule rapport
Dim références As VBIDE.References        'Collection des références
Dim Référence As VBIDE.Reference          'Référence
  'Vérifier le classeur
  If Application.ActiveWorkbook Is Nothing Then
    MsgBox errWbk, vbCritical, nomMsg
    Exit Sub
  End If
  Set wbkCible = Application.ActiveWorkbook
  'Vérifier la collection de références
  Set références = wbkCible.VBProject.References
  If références Is Nothing Then
    MsgBox errRef, vbCritical, nomMsg
    Exit Sub
  End If
  'Ajouter le rapport
  Set wbkRapport = Application.Workbooks.Add(xlWBATWorksheet)
  Set cell = wbkRapport.Worksheets(1).Range("A1")
  cell.Offset(, 1).Formula = "Fichier"
  cell.Offset(1, 1).Formula = "Chemin"
  cell.Offset(, 2).Formula = wbkCible.Name
  cell.Offset(, 2).Font.Bold = True
  cell.Offset(1, 2).Formula = wbkCible.Path
  Set cell = cell.Offset(3)
  'Titres de colonne
  cell.Offset(, 0).Formula = "Name"
  cell.Offset(, 1).Formula = "IsBroken"
  cell.Offset(, 2).Formula = "FullPath"
  cell.Offset(, 3).Formula = "GUID"
  cell.Offset(, 4).Formula = "Minor"
  cell.Offset(, 5).Formula = "Major"
  cell.Offset(, 6).Formula = "BuiltIn"
  cell.Offset(, 7).Formula = "Description"
  cell.CurrentRegion.Font.Bold = True
  Set cell = cell.Offset(1)
  'Lister les propiétes des références
  For Each Référence In références
    On Error Resume Next
    cell.Offset(, 0).Formula = Référence.Name
    cell.Offset(, 1).Formula = Référence.IsBroken
    cell.Offset(, 2).Formula = Référence.FullPath
    cell.Offset(, 3).Formula = Référence.GUID
    cell.Offset(, 4).Formula = Référence.Minor
    cell.Offset(, 5).Formula = Référence.Major
    cell.Offset(, 6).Formula = Référence.BuiltIn
    cell.Offset(, 7).Formula = Référence.Description
    On Error GoTo 0
    Set cell = cell.Offset(1)
  Next Référence
  cell.CurrentRegion.EntireColumn.AutoFit
End Sub

RE

Merci

Le souci c'est pour les librairies qui change d'une version Office à une autre... C'est bien de pouvoir vérifier

Woaw, c'est magnifique !!!

Si je comprends bien il faut mettre ce code au début des procédures pour que la vérification des références soit faites.

Rechercher des sujets similaires à "activation references vba"