Programmer une Référence dans MS ACCESS

Fermé
Un Perdu - 26 mai 2012 à 20:22
 Un Perdu - 27 mai 2012 à 15:24
Bonjour à vous tous,

J'ai créer une base de donnés qui à pour but de Fonctionner sur plusieurs version de Microsoft Access mais j'ai la Référence Microsoft Excel 14.0 object librairy qui fonctionne parfaitement sur MS Office 2010. Cependant, que j'ouvre la Base de donnés sur MS office 2007, la Macro ne fonctionne pas sans que je retourne dans les Références pour aller cocher Microsoft Excel 12.0 object librairy...

Y a-t-il un moyen de programmer une ligne en VBA pour que la sélection de librairie se fasse automatiquement??

A voir également:

1 réponse

Utilisateur anonyme
27 mai 2012 à 02:19
Bonjour,

Oui c'est possible, je l'ai fait sous Excel,

ça ressemble à ceci :

Option Explicit
'

Public Function PresenceExtension() As Boolean
' Vérification de la présence d'une librairie

    Const StdModule = "vbext_ct_StdModule"
    
    Dim Chemin As String, Texte As String
  
    On Error Resume Next
  
    PresenceExtension = False
    With ThisWorkbook.VBProject.VBComponents
        'vbext_ct_StdModule provoque un erreur si
        'VBA Extensibility 5.3 n'est pas installée..
        .Add(vbext_ct_StdModule).Name = "TestVBA"
        If (Err <> 0) Then
            Texte = "Bibliothèque manquante" & vbCrLf
            Texte = Texte & "Cette application va tenter d'installer la bibliothèque manquante."
            MsgBox "Bibliothèque manquante" & vbCrLf
            'Installe la bibliothèque manquante
            Chemin = Application.Path
            Chemin = Mid(Chemin, 1, 1)
            Chemin = Chemin & ":\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
            .Parent.References.AddFromFile Chemin
            PresenceExtension = True
            MsgBox "Opération d'ajout réussi."
        Else
            .Remove .Item("TestVBA")
            PresenceExtension = True
        End If
    End With

End Function
'


cette bibliothèque te permettra de balayer les références
existante et ajouter celle que tu veux. Enfin sous Excel
c'est avec cette bibliothèque VBComponents que j'ai pu
manipuler ces objets les références.

Voici la méthode qui effectue une lecture des références présentes :

Function ScanListeReferences()

    Dim Ref As Reference
    Dim Message As String
    Dim Feuille As String
    Dim Compteur As Long
    
    On Error Resume Next
    
    Application.ScreenUpdating = False
    Feuille = ActiveSheet.Name
    Sheets("ListeReferencesDLL").Select
    Message = ""
    Cells.Clear
    Range("A1").Select
    
    Compteur = 2
    With ActiveSheet
        .Rows(1).Font.Bold = True
        .Rows(1).Font.Size = 9
        .Range("A1:C1").Value = Array("RÉFÉRENCES", "TYPE", "CHEMIN D'ACCÈS")

        For Each Ref In ActiveWorkbook.VBProject.References
            ActiveCell.Offset(Compteur, 0).Value = Ref.Name
            ActiveCell.Offset(Compteur, 1).Value = Ref.Type
            ActiveCell.Offset(Compteur, 2).Value = Ref.FullPath
            Compteur = (Compteur + 1)
            Message = Message & Ref.Name & vbCrLf
        Next Ref
        .Range("A1").CurrentRegion.Columns.AutoFit
    End With
    
    Columns("B:B").HorizontalAlignment = xlCenter
        
    Range("A1").Select
    Sheets(Feuille).Select
    Application.ScreenUpdating = True
    Message = "Voir la feuille ListeReferencesDLL"
    MsgBox FINAL & vbCrLf & vbCrLf & Message
    
End Function
'



c'est sans aucun doute une bonne piste de départ :-)

Cdt

Lupin
0
Merci, Je vais Tester cela au courant de la journée!
0