VBA MAJ une source externe SQL requete
Bonjour,
Je vous demande le secoure parce que j'ai essayé plein de moyen, mais c'est toujours pas réussit.
Je voudrais mettre à jour une source externe avec VBA, ensuite copier ces données là dans une feuille.
sachant que ces données de connexion externe variées en fonction de 2 paramétrés (date début et date de fin).
avec le code vba suivant, Le système n'attend pas les données soient mises à jour, il copie les anciennes données, donc c'est faut!!
Application.ScreenUpdating = False
ActiveWorkbook.Connections("Lancer la requête à partir de KEOPS").ODBCConnection.Refresh
ActiveWorkbook.RefreshAll
Application.ScreenUpdating = True
Application.Wait now + TimeValue("0:00:5")
J'ai essayé le code suivant, ca rend la même chose.
With ActiveWorkbook.Connections("Lancer la requête à partir de KEOPS"). _
ODBCConnection
.BackgroundQuery = True
.CommandText = Array( _
"SELECT KF$VOLS1.KVO_CODAVION, KF$VOLS1.KVO_DEPGM" _
, _
& "FROM KEOPSDTA.KF$VOLS1" & Chr(13) & "" & Chr(10) & "where KF$VOLS1.KVO_DEPGMT>= ?" & Chr(13) & "" & Chr(10) & "and KF$VOLS1.KVO_DEPGMT<=?" )
.Connection = "ODBC;DSN=KEOPS;"
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
With ActiveWorkbook.Connections("Lancer la requête à partir de KEOPS")
.name = "Lancer la requête à partir de KEOPS"
.Description = ""
End With
ActiveWorkbook.Connections("Lancer la requête à partir de KEOPS").Refresh
ActiveWorkbook.RefreshAll
Pourriez vous me donner un peu de conseil...
Merci d'avance
bonjour,
Heu... J'suis pas très familiarisé avec ce genre de sport mais...
Je crois que pour ce genre de travail il est préférable d'utiliser :
BackgroundQuery = False
Ensuite tu peux essayer quelque chose sur la base de ça :
Public Sub Refresh()
'refresh
ActiveWorkbook.RefreshAll
Do Events 'tester avec ou sans
suite = Now + TimeValue("00:00:10") 'hh:mm:ss
Application.OnTime suite, "TaMacroSuiteDuProg"
End Sub
Hum... C'est juste l'idée hein... Tu lances ton refresh et tu demandes à VBA de lancer ta macro de travail dans 5" ou 10"
Je suis convaincu qu'il y a des procédures plus speed mais désolé, je ne suis assez pointu pour aller plus loin...
A+
galopin01,
Ca fonctionne ton procédure de Refresh!!!!!!
Merci merci merci!!!!
T'es génal!!