VBA EXCEL. Faire attendre la fin d'une query pour continuer.

VBA EXCEL. Faire attendre la fin d'une query pour continuer. - VB/VBA/VBS - Programmation

Marsh Posté le 29-07-2005 à 11:16:59    

Voila, en gros j'ai une query sur une bdd externe qui se lance pour remplir une feuille, tout ça dans une macro. probleme, la query se lance et la macro continue a s'executer avant que les données soient inscrites sur la feuille.
 
j'ai essayer de faire une boucle pour attendre qu'une valeur change sur la table mais ça ralentit enormement le process, j'ai aussi tenté de mettre une operation sur un changement dans la worksheet. mais visiblement 'lecriture des donénes de la db n'est pas considerée comme un changement. j'ai tenté avec un temporisateur mais le prob c'est que ça arrete vraiment toute les operation, y compris la recherche dans la base.
 
donc je suis un peu bloqué la, si vous avez des idées?

Reply

Marsh Posté le 29-07-2005 à 11:16:59   

Reply

Marsh Posté le 29-07-2005 à 11:36:07    

eraser17 a écrit :

Voila, en gros j'ai une query sur une bdd externe qui se lance pour remplir une feuille, tout ça dans une macro. probleme, la query se lance et la macro continue a s'executer avant que les données soient inscrites sur la feuille.
 
j'ai essayer de faire une boucle pour attendre qu'une valeur change sur la table mais ça ralentit enormement le process, j'ai aussi tenté de mettre une operation sur un changement dans la worksheet. mais visiblement 'lecriture des donénes de la db n'est pas considerée comme un changement. j'ai tenté avec un temporisateur mais le prob c'est que ça arrete vraiment toute les operation, y compris la recherche dans la base.
 
donc je suis un peu bloqué la, si vous avez des idées?


assure toi par un msgbox que la requete est terminée

Reply

Marsh Posté le 29-07-2005 à 11:39:14    

ouai donc ça sera pas entierement automatique :/

Reply

Marsh Posté le 29-07-2005 à 11:39:58    

ben un booléen alors =)

Reply

Marsh Posté le 29-07-2005 à 11:42:13    

un booléen? ou?

Reply

Marsh Posté le 29-07-2005 à 11:58:50    

eraser17 a écrit :

un booléen? ou?


tu initialises un booléen à false par exemple
tu fais une boucle while bool = false tu fais rien
et tu demandes à ta requete de modifier ce booléen à true pour continuer.
tu vois mon raisonnement ou pas?

Reply

Marsh Posté le 29-07-2005 à 12:02:08    

ouai je vois.
 
c'est un peu le meme truc que quand je fait une boucle pour verifier que la valeur d'une cellule est vide koi [:dawa]

Reply

Marsh Posté le 29-07-2005 à 12:08:41    


si ca marche sans faire ramer... ^^

Reply

Marsh Posté le 29-07-2005 à 12:22:23    

le prob c'est que ça foire, quand je fais ça, ca reste dans la boucle et la requete ne s'affiche jamais [:figti]

Reply

Marsh Posté le 29-07-2005 à 12:48:45    

eraser17 a écrit :

le prob c'est que ça foire, quand je fais ça, ca reste dans la boucle et la requete ne s'affiche jamais [:figti]


mais ta query elle fait quoi exactement ?
tu ne peux pas mettre le booléen en global et le modifier en faite de requete?

Reply

Marsh Posté le 29-07-2005 à 12:48:45   

Reply

Marsh Posté le 29-07-2005 à 13:02:44    

ma query elle crée une nouvelle feuille, ensuite elle va chercher quelque millier de données dans une database distante et elle les recopie dans une feuille excel.
 
le probleme c'est que dès que la query est lancée la macro se poursuit alors que les données sont pas encore sur la feuille.
 
et si je met un boucle qui attend les donée ça bloque et elles n'arrivent jamais.

Reply

Marsh Posté le 29-07-2005 à 13:05:53    

meme chose si je mets un msgbox, tant qu'il est a l'écran les donneés n'arrivent pas.

Reply

Marsh Posté le 29-07-2005 à 13:09:23    

eraser17 a écrit :

meme chose si je mets un msgbox, tant qu'il est a l'écran les donneés n'arrivent pas.


je comprends pas alors :sweat:  l'idée c'est de faire ta query comme une fonction, car seulement une fois que la fonction se termine la macro continue...

Reply

Marsh Posté le 29-07-2005 à 13:23:10    

jpcheck a écrit :

je comprends pas alors :sweat:  l'idée c'est de faire ta query comme une fonction, car seulement une fois que la fonction se termine la macro continue...


 
ben meme si je fait une fonction rien que pour la query, et que j'appelle cette fonction dans une autre macro, ça foire. parceque excell considere que la commande est terminée des que la query est lancée, pas dès qu'elle est finie :o
 
c chiant :/

Reply

Marsh Posté le 29-07-2005 à 13:27:47    

eraser17 a écrit :

ben meme si je fait une fonction rien que pour la query, et que j'appelle cette fonction dans une autre macro, ça foire. parceque excell considere que la commande est terminée des que la query est lancée, pas dès qu'elle est finie :o
 
c chiant :/


pourquoi une autre macro forcément, tu ne peux pas faire un truc du style :
 
sub main()
querybidon()
suiteducode...
end sub
 
sub querybidon()
trucmuche...
end sub
 
??

Reply

Marsh Posté le 29-07-2005 à 14:09:57    

ouai mais ça foire aussi. bon c'est pas grave j'ai modifier mon interface pour integrer ça, tant pis.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed