XL 2016 base de données Access depuis un fichier Excel.

gothc

XLDnaute Occasionnel
Bonjour le forum j'ai un probleme avec mon fichier quand il demarre j'ai une erreur

erreur de compilation projet ou bibliothèque introuvable
Set BD_Employes = DAO.OpenDatabase(ActiveWorkbook.Path & "\BD_Employés.mdb", False, False)

j'ai bien mon dossier EMPLOYES avec mon fichier excel et mon fichier access BD_Employés.mdb
Merci de votre aide



VB:
Private Sub Workbook_Open()
    Dim Base_Analyse As Database
    Dim Table_ANALYSE As Recordset
   
    Application.EnableEvents = True
   
   
    Sheets("Employés").EMP_liste_rubriques.Clear

Sheets("Employés").EMP_liste_rubriques.AddItem "Col. Sélectionnées"
Sheets("Employés").EMP_liste_rubriques.AddItem "TOUT"
Sheets("Employés").EMP_liste_rubriques.AddItem "TELEPHONIE"
Sheets("Employés").EMP_liste_rubriques.AddItem "RENSEIGNEMENTS_GENERAUX"
Sheets("Employés").EMP_liste_rubriques.AddItem "CACES"
Sheets("Employés").EMP_liste_rubriques.AddItem "PERMIS"
Sheets("Employés").EMP_liste_rubriques.AddItem "HABILITATIONS"
Sheets("Employés").EMP_liste_rubriques.AddItem "SECOURISME"
Sheets("Employés").EMP_liste_rubriques.AddItem "MEDICAL"



        Set BD_Employes = DAO.OpenDatabase(ActiveWorkbook.Path & "\BD_Employés.mdb", False, False)
        Set Table_employes = BD_Employes.OpenRecordset("SELECT Employés.* " & _
        "FROM Employés " & _
        "ORDER BY Employés.Nom ASC", dbOpenDynaset)
       
        If Table_employes.RecordCount = 0 Then GoTo 888
        Table_employes.MoveFirst
        Table_employes.MoveLast
        aa = Table_employes.RecordCount
       
        Sheets("Fiche individuelle").fi_liste_employes.Clear
        Table_employes.MoveFirst
        ligne = 1
            Sheets("Fiche individuelle").fi_liste_employes.AddItem
       
        For bb = 0 To aa - 1
       
            Sheets("Fiche individuelle").fi_liste_employes.AddItem
            Sheets("Fiche individuelle").fi_liste_employes.List(ligne, 0) = Table_employes.Fields("N°_Enr").Value
            On Error Resume Next
            Sheets("Fiche individuelle").fi_liste_employes.List(ligne, 1) = Table_employes.Fields("Nom").Value
            On Error Resume Next
            Sheets("Fiche individuelle").fi_liste_employes.List(ligne, 2) = Table_employes.Fields("Prénom").Value
            Table_employes.MoveNext
           
            ligne = ligne + 1
       
        Next bb
       
       
888:
        Table_employes.Close
        Set Table_employes = Nothing
       
    BD_Employes.Close
    Set BD_Employes = Nothing
   
    Sheets("Employés").Activate
    Sheets("Employés").ScrollRow = 10
   
BD_Aniv_Saint.Show
 

gothc

XLDnaute Occasionnel
Sans titre.jpg
 

dysorthographie

XLDnaute Accro
Bonsoir,
ADO c'est plus souple que DAO!
VB:
Sheets("Fiche individuelle").fi_liste_employes.Clear
With CreateObject("Adodb.connection")
   .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\BD_Employés.mdb;"
   Sheets("Fiche individuelle").fi_liste_employes.Column = .Execute("SELECT Employés.* FROM Employés ORDER BY Employés.Nom ASC").GetRows
   .Close
End With
 

dysorthographie

XLDnaute Accro
Bonjour,
VB:
Private Sub Workbook_Open()
Application.EnableEvents = True
Sheets("Employés").EMP_liste_rubriques.List = Array("TOUT","TELEPHONIE","RENSEIGNEMENTS_GENERAUX","CACES","PERMIS","HABILITATIONS","SECOURISME","MEDICAL")

Sheets("Fiche individuelle").fi_liste_employes.Clear
With CreateObject("Adodb.connection")
   .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\BD_Employés.mdb;"
   Sheets("Fiche individuelle").fi_liste_employes.Column = .Execute("SELECT Employés.* FROM Employés ORDER BY Employés.Nom ASC").GetRows
   .Close
End With
     
 
    Sheets("Employés").Activate
    Sheets("Employés").ScrollRow = 10
 
BD_Aniv_Saint.Show
 

dysorthographie

XLDnaute Accro
Bonsoir à tous



Et il y a pas mal d'années Microsoft annonçait déjà le "End Life Cycle" de DAO, je ne sais même pas si il est encore accessible sur les dernières versions 365 et 2019....

Lui préférer ADO sans hésitation !

Bonne nuit
@+Thierry
Si si je suis sur 365 pro 64 bits mais utiliser DAO en dehors d'Access est une hérésie !

En dot.net on utilise une autre technologies mais Ado est accessible bien que pas recommandé. Pas suffisamment sécurisé.
Ado reste cependant la méilleur techno pour VBA.
 
Dernière édition:

dysorthographie

XLDnaute Accro
bonjour,
donc je te redonne le code qu'il faut mettre en lieu et place de l’existant!
VB:
Private Sub Workbook_Open()
    Application.EnableEvents = True
    Sheets("Employés").EMP_liste_rubriques.List = Array("Col. Sélectionnées", "TOUT", "TELEPHONIE", "RENSEIGNEMENTS_GENERAUX", "CACES", "PERMIS", "HABILITATIONS", "SECOURISME", "MEDICAL")

    Sheets("Fiche individuelle").fi_liste_employes.Clear
    With CreateObject("Adodb.connection")
       .Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\BD_Employés.mdb;"
       Sheets("Fiche individuelle").fi_liste_employes.Column = .Execute("SELECT Employés.* FROM Employés ORDER BY Employés.Nom ASC").GetRows
       .Close
    End With
   
    Sheets("Employés").Activate
    ActiveWindow.ScrollRow = 10
   
BD_Aniv_Saint.Show
End Sub
 

Statistiques des forums

Discussions
315 096
Messages
2 116 182
Membres
112 677
dernier inscrit
Justine11