Ignorer initialisation OLE DB ouverture Excel

Bonjour,

y'a t-il moyen d'intégrer au code VBA à l'ouverture quelque chose pour initialiser automatiquement la connexion à la base Access ? cf image ci-jointe

capture

Ce message s'affiche lorsque j'ouvre mon fichier sur un autre PC. Etant donné que de nombreux collègues vont utiliser ce fichier, j'aimerais qu'ils n'aient pas à me demander où cliquer.

Merci !

Bonjour,

la réponse est oui sûrement. mais sans le code difficile de t'aider davantage. (mets-nous la macro en question).

Aucune macro, c'est juste un tableau que j'ai importé depuis Access.

Onglet Données => "Depuis Access...", et j'ai sélectionné la base puis la table.

Je n'obtiens pas le même écran que toi lorsque je fais une importation de données depuis une table access. Je ne peux donc pas t'aider.

si quelque d'autre a une idée ?

Si tu mets le fichier excel + la base access dans un autre dossier et que t'ouvres à nouveau excel, peut-être auras-tu le message

Bonjour,

essaie ceci

Private Sub Workbook_Open()

  dbfile = "Database1.accdb" '<- mettre le nom du fichier access
  dbfile = ThisWorkbook.Path & "\" & dbfile '<- on suppose que la DB est dans le même répertoire que le classeur

    With ActiveWorkbook.Connections(1).OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array("Employees Extended")
        .CommandType = xlCmdTable
        .Connection = Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & dbfile & ";Mode=ReadWrite;Extended Properties=""""" _
        , _
        ";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Databa" _
        , _
        "se Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Je" _
        , _
        "t OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Com" _
        , _
        "pact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" _
        )
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = dbfile
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
    End With
    ActiveWorkbook.Connections("Database1").Refresh
    ActiveWorkbook.RefreshAll
End Sub

Merci, ça semble être un truc du genre.

Malheuresement, j'ai une erreur 1004 dès la ligne With ActiveWorkbook.Connections(1).OLEDBConnection

J'ai cherché sur google, mais j'ai pas trouvé la cause.

ActiveWorkbook.Connections(1).Name me renvoie bien le nom de la bonne connexion pourtant.

Galven a écrit :

Merci, ça semble être un truc du genre.

Malheuresement, j'ai une erreur 1004 dès la ligne With ActiveWorkbook.Connections(1).OLEDBConnection

J'ai cherché sur google, mais j'ai pas trouvé la cause.

ActiveWorkbook.Connections(1).Name me renvoie bien le nom de la bonne connexion pourtant.

j'ai laissé le nom de ma table de test dans la commande il faut aussi que tu changes cette instruction, l'erreur pourrait bien provenir de là.

Private Sub Workbook_Open()

  dbfile = "Database1.accdb" '<- mettre le nom du fichier access
 dbfile = ThisWorkbook.Path & "\" & dbfile '<- on suppose que la DB est dans le même répertoire que le classeur

    With ActiveWorkbook.Connections(1).OLEDBConnection
        .BackgroundQuery = True
        .CommandText = Array("Employees Extended") ' changer ici le nom de la table 
        .CommandType = xlCmdTable
        .Connection = Array( _
        "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & dbfile & ";Mode=ReadWrite;Extended Properties=""""" _
        , _
        ";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Databa" _
        , _
        "se Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Je" _
        , _
        "t OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Com" _
        , _
        "pact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False" _
        )
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = dbfile
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
    End With
    ActiveWorkbook.Connections("Database1").Refresh
    ActiveWorkbook.RefreshAll
End Sub

En faisant du pas à pas, ça bloque directement à la ligne "With ActiveWorkbook.Connections(1).OLEDBConnection" où j'ai l'erreur 1004. Peu importe ce qu'il y a après du coup. :/

Ca peut pas être dû à une référence manquante ?

reférence manquante je ne pense pas.

essaie en mettant le nom de la connexion plutot que son indice

with With ActiveWorkbook.Connections("nom de ta connexion").OLEDBConnection

Déjà essayé, pas plus de succès !

re-Bonsoir,

j'ai généré ce code avec l'enregistreur de macro. en suivant les étapes pour arriver à la fenêtre que tu as mise dans le début de ce post et en faisant les corrections pour que cela fonctionne.

tu peux essayer de faire la même chose et ensuite adapter le code comme je l'ai fait (chez moi cela fonctionne).

voici les références que j'ai (à tout hasard)

references settings

Ah, grâce à l'enregistreur de macro, je m'aperçois que c'est une ODBCConnection et non une OLEDBConnection!

Merci pour l'aide

Rechercher des sujets similaires à "ignorer initialisation ole ouverture"