Intégrer une variable dans une chaîne de connexion
Bonjour,
Par enregistrement auto macro, j'ai obtenu les lignes de code suivantes (modification d'une chaîne de connexion d'un tableau croisé).
J'aimerais pouvoir associer le texte en bleu (Data Source=...) à une variable et appeler cette variable dans la propriété .Connection.
J'ai essayé d'intégrer la variable avec des "" & "" au milieu du texte, mais ça ne fonctionne pas.
Merci pour votre aide,
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| With ActiveWorkbook.Connections("ECROUS G").OLEDBConnection
.BackgroundQuery = True
.CommandText = Array("'ECROUS G$'")
.CommandType = xlCmdTable
.Connection = Array( _
"OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=\\C:\doc\CARTO TEST.xlsm;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";" _
, _
"Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=37;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;Jet OLEDB:Bypass UserInfo Validation=" _
, "False")
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
.ServerFillColor = False
.ServerFontStyle = False
.ServerNumberFormat = False
.ServerTextColor = False
End With
With ActiveWorkbook.Connections("ECROUS G")
.Name = "ECROUS G"
.Description = ""
End With
ActiveWorkbook.Connections("ECROUS").Refresh |
Yess ça marche pour moi également !
Salut, je déterre cette discussion juste pour :
- dire merci à antonysansh
- confirmer que ça marche également pour une chaîne de connexion vers une base Access
Pour ma part, j'ai rencontré un petit problème supplémentaire, après le premier "replace(maChaîneDeConnexion, **L'endroitDeLaVariable**, LaValeurDeLaVariable), ma chaîne de connexion était légèrement altérée : l'utilisation de la fonction Replace avait changé les paires de guillemets doubles (valeurs vides pour certains paramètres de la chaîne de connexion) en un seul guillemet double (par exemple Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=5 était devenu Jet OLEDB:Registry Path=";Jet OLEDB:Engine Type=5)
Donc j'ai juste rajouté un second Replace :
Code:
maChaîneDeConnexion = Replace(maChaîneDeConnexion, "=" & Chr$(34), "=" & Chr$(34) & Chr$(34))
Ensuite, il reste effectivement à actualiser la connexion, sans message d'erreur pour ma part. Le message d'erreur de Muchek était peut-être dû à ce genre de remplacements abusifs qui s'autocorrige ensuite (mais ce n'était pas mon cas).