Pause VBA idem point d'arrêt
Fermé
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
-
Modifié par tchernosplif le 19/06/2015 à 23:08
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 - 21 juin 2015 à 12:40
tchernosplif Messages postés 600 Date d'inscription dimanche 8 novembre 2009 Statut Membre Dernière intervention 21 juin 2015 - 21 juin 2015 à 12:40
4 réponses
JvDo
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
858
19 juin 2015 à 23:55
19 juin 2015 à 23:55
Bonjour,
comment s'ouvre ton fichier excel?
Dans IE ou dans excel?
Ne peux- tu pas tester le chargement de ce fichier dans l'une ou l'autre appli et attendre avec une simple boucle while -wend?
As-tu un exemple à nous transmettre sur cjoint?
Cordialement
comment s'ouvre ton fichier excel?
Dans IE ou dans excel?
Ne peux- tu pas tester le chargement de ce fichier dans l'une ou l'autre appli et attendre avec une simple boucle while -wend?
As-tu un exemple à nous transmettre sur cjoint?
Cordialement
cousinhub29
Messages postés
977
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
21 décembre 2024
348
20 juin 2015 à 00:08
20 juin 2015 à 00:08
Bonsoir,
A tout hasard...
Pour attendre le chargement complet....
Bonne soirée
A tout hasard...
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
Pour attendre le chargement complet....
Bonne soirée
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
Modifié par tchernosplif le 20/06/2015 à 13:04
Modifié par tchernosplif le 20/06/2015 à 13:04
Bonjour,
J'avais déjà essayé d'utiliser une boucle et de vérifier ie.readystate, mais le problème est que pour ouvrir un autre fichier via IE , il faut impérativement que la macro soit arrêtée.
En fait j'ai contourné le problème en coupant ma macro en 2.
A la fin de la première partie, je génère un fichier vbs qui s'exécute juste après.
le fichier vbs commence par une longue pause; pendant ce temps le fichier à ouvrir s'ouvre. (il faudrait que j'essaie une boucle pour vérifier que le fichier est complétement ouvert plutôt que faire une pause)
Ensuite le fichier vbs sélectionne le fichier de départ et lance la deuxième partie via un raccourci clavier prédéfini. (modification, enregistrement et fermeture du deuxième fichier)
Pour finir, je reprends la main sur la fenêtre IE déjà ouverte, car l'url est connue, et je finalise le traitement: ie.navigate("javascript:uploadfichier();") .
Bonne journée, soirée, nuit. (rayez les mentions inutiles)
J'avais déjà essayé d'utiliser une boucle et de vérifier ie.readystate, mais le problème est que pour ouvrir un autre fichier via IE , il faut impérativement que la macro soit arrêtée.
En fait j'ai contourné le problème en coupant ma macro en 2.
A la fin de la première partie, je génère un fichier vbs qui s'exécute juste après.
le fichier vbs commence par une longue pause; pendant ce temps le fichier à ouvrir s'ouvre. (il faudrait que j'essaie une boucle pour vérifier que le fichier est complétement ouvert plutôt que faire une pause)
Ensuite le fichier vbs sélectionne le fichier de départ et lance la deuxième partie via un raccourci clavier prédéfini. (modification, enregistrement et fermeture du deuxième fichier)
Pour finir, je reprends la main sur la fenêtre IE déjà ouverte, car l'url est connue, et je finalise le traitement: ie.navigate("javascript:uploadfichier();") .
Bonne journée, soirée, nuit. (rayez les mentions inutiles)
tchernosplif
Messages postés
600
Date d'inscription
dimanche 8 novembre 2009
Statut
Membre
Dernière intervention
21 juin 2015
245
21 juin 2015 à 12:40
21 juin 2015 à 12:40
Bonjour,
Pour info, voici la macro qui génère le fichier vbs.
Je me demande si la boucle pour vérifier que le fichier a fini de s'ouvrir fonctionne vraiment.
fichier est déclaré dans une variable de type public et correspond à l'emplacement du fichier à ouvrir.
Pour reprendre la main sur la fenêtre IE dans la deuxième partie, j'utilise le code suivant:
Vos avis sont bienvenus. ça fait une sacrée usine à gaz pour une simple pause !
Pour info, voici la macro qui génère le fichier vbs.
Je me demande si la boucle pour vérifier que le fichier a fini de s'ouvrir fonctionne vraiment.
fichier est déclaré dans une variable de type public et correspond à l'emplacement du fichier à ouvrir.
Sub pause()
Open "c:\pause.vbs" For Output As #1
'obligé de laisser une pause pour laisser le temps à la page IE de commencer à ouvrir le fichier
Print #1, "WScript.Sleep (1000)"
Print #1, "Dim objFSO"
Print #1, "OWB = """ & fichier & """"
Print #1, "Set objFSO = CreateObject(""Scripting.FileSystemObject"")"
'boucle en attendant fichier existe
Print #1, "while objFSO.FileExists(OWB) = false"
Print #1, "Wend"
Print #1, "Set xl = CreateObject(""excel.application"")"
'boucle pour vérifier que le fichier a fini de s'ouvrir
Print #1, "While xl.Ready = False"
Print #1, "Wend"
Print #1, "WScript.Sleep (1000)"
'sélectionne le fichier maitre
Print #1, "Dim oShell"
Print #1, "Set oShell = CreateObject(""WScript.Shell"")"
Print #1, "oShell.AppActivate """ & ThisWorkbook.Name & """"
'lancement de la deuxième partie avec raccourci clavier Ctrl+y
Print #1, "WScript.Sleep (1000)"
Print #1, "oShell.SendKeys ""^y"""
Print #1, "Set oShell = Nothing"
Print #1, "wscript.Quit"
Close #1
Sleep 100
Set oWsh = CreateObject("Shell.Application")
oWsh.ShellExecute "c:\dodo.vbs"
Set oWsh = Nothing
Sleep 1000
Kill ("c:\pause.vbs")
End Sub
Pour reprendre la main sur la fenêtre IE dans la deuxième partie, j'utilise le code suivant:
'Active Microsoft Forms 2.0 Object Library
'Active Microsoft HTML Object Library
'Active Microsoft Internet Controls
Dim WinShell As New ShellWindows
Dim IE As InternetExplorer
'détecte la page IE et sauvegarde le fichier
For Each IE In WinShell
If IE.LocationURL = "htt...mapage" Then IE.Navigate ("javascript:sauvegarde();")
Next IE
Vos avis sont bienvenus. ça fait une sacrée usine à gaz pour une simple pause !