Temporisation de macro: pour les + aguerris

emmanuel75

XLDnaute Junior
Bonjour à tous,
Voilà, je dispose d'un navigateur intégré à excel, qui me permet de traiter les informations des pages visitées sur le web.
Je dispose de plusieurs boutons. Le souci que je rencontre à un certain moment du programme est le suivant:
j'ai un bouton qui me permet de cliquer automatiquement sur un onglet à l'intérieur de la page web
j'ai un autre bouton qui traite les données de la page visitée.
Le PROBLEME EST LE SUIVANT:
Lorsque je demande à mon WebBrowser d'appliquer la macro du premier bouton puis celle du deuxième, l'onglet n'a pas le temps de changer que le traitement du deuxième bouton se fait déjà !!!
Ma procédure se fait à l'intérieur d'un WebBrowser1_DocumentComplete()

J'ai essayé "Application.Waitnow+timevalue..." mais rien n'y fait !!!
Au secours !

Emmanuel
 

emmanuel75

XLDnaute Junior
Re : Temporisation de macro: pour les + aguerris

Bonsoir à tous,

Pour rappeler le problème auquel je suis confronté, je dispose de deux boutons dans mon premier feuillet, gilbert_RGI m'a judicieusement conseillé d'utiliser la synthaxe "Application.OnTime Now + TimeValue("00:00:15"), "Procedure n°2", ceci afin de bien appliquer l'exécution du deuxième bouton après la fin de l'exécution de mon premier bouton. Mais voilà : j'ai une erreur "variable objet non défini".
Car je le rappelle, je travaille avec l'objet WebBrowser1 dans ma première feuille mais dans les modules, Excel ne me reconnait pas mon objet WebBrowser1 !!!

Comment faire ? Je tourne en rond ! Au secours !

Emmanuel
 

emmanuel75

XLDnaute Junior
Re : Temporisation de macro: pour les + aguerris

Re...

Cà y est, en essayant une petite astuce trouvé sur le web...pas très glorieux...mais çà fonctionne !!!
Je rédige ce post pour tous ceux qui un jour aurait un besoin similaire de faire patienter une tâche sans utiliser la méthode "WAIT".

Mes deux procédures étaient séparées au départ que par DoEvents, de manière que la première se termine avant que la deuxième ne commence. Mais çà ne suffisait pas.

Une boucle toute simple peut suffire. Dans mon exemple:

Procédure1
For i = 1 To 100000
DoEvents
Next i
Procédure2

Voilà !!!
 

emmanuel75

XLDnaute Junior
Re : Temporisation de macro: pour les + aguerris

Dans l'exemple,
la boucle for i=1 to 100000 provoque un message d'erreur "Dépassement de capacité"

Par contre en imbriquant deux boucles l'une dans l'autre, on évite le message.

For i=1 to 10
For j=1 to 10000
DoEvents
next j
next i

Bonne soirée
 

Pierrot93

XLDnaute Barbatruc
Re : Temporisation de macro: pour les + aguerris

Bonjour Emmanuel, Gilbert

regarde peut être le code ci-dessous, si j'ai bien compris... permet d'attendre qu'un "webBrowser" soit chargé....

Code:
Do
doEvents
Loop While webBrowser1.Busy

bonne journée
@+
 

Discussions similaires