OVH Cloud OVH Cloud

Problème de synchronisation

3 réponses
Avatar
Serge
Bonjour,


Je remplis 1 feuille Excel Feuil1 avec des données issues de sql serveur et
ensuite j'additionne la colonne B + C par exemple.
Mon problème vient que mes données ne sont pas encore importées dans ma
feuille que mon code continue et additionne B + C et me renvoie donc 0.
Mon code :

Dim qt As QueryTable

sqlbestcustomer = "SELECT ..."
connstring1 = _
"ODBC;DSN=odbc1;UID=xx;PWD=yy;Database=VENTE"


With Worksheets("Feuil1")
.Activate
Cells.Select
Selection.ClearContents
With QueryTables.Add(Connection:=connstring1, _
Destination:=Worksheets("Feuil1").Range("B1"),
Sql:=sqlbestcustomer)
.Refresh
End With
End With
Set connstring1 = Nothing


'Calcul du cumul ---------> Mon pb est là, le code continue et n'attends
pas la fin de l'import !!!!!!!!!!!!

Range("H2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[-4]:RC[-1])"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H3000"), Type:=xlFillDefault
Range("H2:H3000").Select
Calculate

J'ai pensé à mettre 1 tempo mais la taille de mon import est variable,
délicat donc.

Merci de votre aide
Serge

3 réponses

Avatar
JpPradier
Re Serge

Une possibilité : Avant de lancer ta requete, tu ecris quelquechose ( par exemple "wait") dans B1.
Et une fois que tu as lancé ta requete, tu fais une boucle du genre :


Range("b1").value="wait"
-> requete

While range("b1") ="wait"
DoEvents
Wend

-> Calculs

j-p
Avatar
Serge
Re jp,

Non j'ai toujours mon Calcul = 0
par contre en mettant un point d'arrêt au niveau de While range("b1")
="wait"
ça marche.

@+
"JpPradier" a écrit dans le message
de news:
Re Serge

Une possibilité : Avant de lancer ta requete, tu ecris quelquechose ( par
exemple "wait") dans B1.
Et une fois que tu as lancé ta requete, tu fais une boucle du genre :


Range("b1").value="wait"
-> requete

While range("b1") ="wait"
DoEvents
Wend

-> Calculs

j-p



Avatar
Serge
Non erreur de ma part le système attend ............


Re jp,

Non j'ai toujours mon Calcul = 0
par contre en mettant un point d'arrêt au niveau de While range("b1")
="wait"
ça marche.

@+
"JpPradier" a écrit dans le message
de news:
Re Serge

Une possibilité : Avant de lancer ta requete, tu ecris quelquechose ( par
exemple "wait") dans B1.
Et une fois que tu as lancé ta requete, tu fais une boucle du genre :


Range("b1").value="wait"
-> requete

While range("b1") ="wait"
DoEvents
Wend

-> Calculs

j-p