Programmer une Référence dans MS ACCESS

Un Perdu -  
 Un Perdu -
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??

1 réponse

  1. Utilisateur anonyme
     
    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
    1. Un Perdu
       
      Merci, Je vais Tester cela au courant de la journée!
      0