Problème lien ODBC

Le
ti_wi_com
Bonjour,

J'ai récemment développé une macro sous Excel 2003, pour réaliser un lien
ODBC avec une table d'une base Access 2003.
Cette macro a marché parfaitement durant plusieurs mois, mais m'envoie
maintenant le message d'erreur "Erreur automation L'objet invoqué s'est
déconnecté de ses clients" sur la ligne ".RefreshBackgroundQuery" du code
ci-dessous

Ce problème est quasiment permanent (sur une quinzaine d'essais, j'ai réussi
une fois à établir la liaison ce matin, alors qu'avant cela marchait toujours)

Quelqu'un aurait il une idée de la provenance de ce problème?

D'avance merci

Code de la macro concernée:

Columns("A:B").Select
Selection.ClearContents
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=D:AppliAccesssuivi_depenses_ipaq.mdb;Mode=Share Deny
Write;Ext" _
, _
"ended Properties="""";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine
Type" _
, _
"=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk
Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Data" _
, _
"base Password="""";Jet OLEDB:Create System Databaseúlse;Jet
OLEDB:Encrypt Databaseúlse;Jet OLEDB:Don't Copy Locale on Compact=" _
, "False;Jet OLEDB:Compact Without Replica Repairúlse;Jet
OLEDB:SFPúlse"), _
Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("depenses")
.Name = "suivi_depenses_ipaq"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "D:AppliAccesssuivi_depenses_ipaq.mdb"
.Refresh BackgroundQuery:úlse
End With
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ti_wi_com
Le #20023891
Houps erreur.... ce n'est pas de l'ODBC, amis de l'OLE (comme vous l'aurez
sans doute vu dans le code)

"ti_wi_com" a écrit :

Bonjour,

J'ai récemment développé une macro sous Excel 2003, pour réaliser un lien
ODBC avec une table d'une base Access 2003.
Cette macro a marché parfaitement durant plusieurs mois, mais m'envoie
maintenant le message d'erreur "Erreur automation L'objet invoqué s'est
déconnecté de ses clients" sur la ligne ".RefreshBackgroundQuery" du code
ci-dessous...

Ce problème est quasiment permanent (sur une quinzaine d'essais, j'ai réussi
une fois à établir la liaison ce matin, alors qu'avant cela marchait toujours)

Quelqu'un aurait il une idée de la provenance de ce problème?

D'avance merci

Code de la macro concernée:

Columns("A:B").Select
Selection.ClearContents
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=D:AppliAccesssuivi_depenses_ipaq.mdb;Mode=Share Deny
Write;Ext" _
, _
"ended Properties="""";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine
Type" _
, _
"=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk
Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Data" _
, _
"base Password="""";Jet OLEDB:Create System Databaseúlse;Jet
OLEDB:Encrypt Databaseúlse;Jet OLEDB:Don't Copy Locale on Compact=" _
, "False;Jet OLEDB:Compact Without Replica Repairúlse;Jet
OLEDB:SFPúlse"), _
Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("depenses")
.Name = "suivi_depenses_ipaq"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "D:AppliAccesssuivi_depenses_ipaq.mdb"
.Refresh BackgroundQuery:úlse
End With


MichDenis
Le #20025971
Bonjour,

Je ne suis pas en réseau, difficile de tester quoi que ce soit !

As-tu essayé de simplifier le code de ta procédure ?

Un exemple :
'------------------------------------
Sub Test()
Dim Requete As String
dim Chemin as string,Fichier as string

chemin = "D:AppliAccess"
fichier = "suivi_depenses_ipaq.mdb"

'à définir
Requete = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE .....""

With Activesheet.QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=" & Chemin & fichier & ";" & _
"DefaultDir=" & Chemin & "" _
), Array("cel;DriverIdy0;MaxBufferSize 48;" & _
"PageTimeout=5;")), Destination:¬tiveSheetRange("A1"))

.CommandText = Array(Requete)
.Name = "Denis"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
End Sub
'------------------------------------



"ti_wi_com" discussion :
Houps erreur.... ce n'est pas de l'ODBC, amis de l'OLE (comme vous l'aurez
sans doute vu dans le code)

"ti_wi_com" a écrit :

Bonjour,

J'ai récemment développé une macro sous Excel 2003, pour réaliser un lien
ODBC avec une table d'une base Access 2003.
Cette macro a marché parfaitement durant plusieurs mois, mais m'envoie
maintenant le message d'erreur "Erreur automation L'objet invoqué s'est
déconnecté de ses clients" sur la ligne ".RefreshBackgroundQuery" du code
ci-dessous...

Ce problème est quasiment permanent (sur une quinzaine d'essais, j'ai réussi
une fois à établir la liaison ce matin, alors qu'avant cela marchait toujours)

Quelqu'un aurait il une idée de la provenance de ce problème?

D'avance merci

Code de la macro concernée:

Columns("A:B").Select
Selection.ClearContents
With ActiveSheet.QueryTables.Add(Connection:=Array( _
"OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User
ID­min;Data Source=D:AppliAccesssuivi_depenses_ipaq.mdb;Mode=Share Deny
Write;Ext" _
, _
"ended Properties="""";Jet OLEDB:System database="""";Jet
OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine
Type" _
, _
"=5;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk
Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Data" _
, _
"base Password="""";Jet OLEDB:Create System Databaseúlse;Jet
OLEDB:Encrypt Databaseúlse;Jet OLEDB:Don't Copy Locale on Compact=" _
, "False;Jet OLEDB:Compact Without Replica Repairúlse;Jet
OLEDB:SFPúlse"), _
Destination:=Range("A1"))
.CommandType = xlCmdTable
.CommandText = Array("depenses")
.Name = "suivi_depenses_ipaq"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.SourceDataFile = "D:AppliAccesssuivi_depenses_ipaq.mdb"
.Refresh BackgroundQuery:úlse
End With


Publicité
Poster une réponse
Anonyme