oui je te parle simplement de la fenêtre IE qui à certains moments ne s'ouvre pas et donc les SendKeys tombent à l'eau.
A+
oui je te parle simplement de la fenêtre IE qui à certains moments ne s'ouvre pas et donc les SendKeys tombent à l'eau.
A+
Même souci …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
et est-ce que c'est ok ou pas avec l'API proposée ?Même souci …
Le code de quel numéro de post ?
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
l'ajout du code proposé au post #99 au fichier du post #97 ou #96
Avec ou sans les modifications du post #99, rien ne se passe que ce soit avec IE9 & Seven ou IE10 & Windows 8,
j'ai jute l'ouverture de la page du site sous IE mais pas de mise à jour de dates, d'ISIN renseigné, etc …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
@Marc : Ok donc au moins la fenêtre d'IE s'ouvre...
avec quel fichier tu as testé ? Celui du post 96 et/ou 97 ?
Ci-joint une tentative de gérer les SendKeys via le module de classe :
création au sein du module de classe d'une Sub SendKeys comportant 2 arguments :
- la combinaison des touches envoyées
- une temporisation optionnelle
Cela permet d'avoir cette procédure à disposition dans l'autocomplétion lorsque l'on utilise l'objet clsIE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub SendKeys(Keys, Optional Temporisation As Long = 0) Dim s, i As Long, SC As String, Fichier As String, F% Application.Wait (Now + TimeValue("0:00:01")) Fichier = ThisWorkbook.Path & "\touche_TAB_ENTER.vbs" s = Split(Keys, ",") SC = "Set wshShell = CreateObject(""WScript.Shell"")" & vbCrLf For i = LBound(s) To UBound(s) SC = SC & "WScript.Sleep " & Temporisation & vbCrLf SC = SC & "wshShell.SendKeys """ & s(i) & """" & vbCrLf Next i SC = SC & "Set objFSO = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf SC = SC & "objFSO.DeleteFile (""" & Fichier & """)" F% = FreeFile Open Fichier For Output As #F Print #F, SC Close #F SC = """" & Fichier & """" CreateObject("WScript.Shell").Run SC End Sub
On l'utilise ensuite dans le module classique où l'on renseigne la combinaison souhaitée et le temps de temporisation :(je remarque d'ailleurs que j'économise un Tab et je ne sais pas pourquoi mais bon à voir de votre côté...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part oIE.SendKeys "{tab},{enter}", 300
La procédure n'est pour l'instant pas assez intuitive à mon goût avec l'utilisation des boucles Do...Loop dans la procédure Test mais cela permet néanmoins de voir de quelle manière rendre la partie SendKeys plus généralisable dans la perspective d'un module exportable comme le souhaite Patrick.
A+
J'ai testé le fichier du post #107 sur un ordinateur Windows7+IE9+Excel 2007 et sur un autre Windows10+IE11+Excel 2010 64 bits et cela fonctionne dans les 2 cas.
Par contre sur le 2ème ordinateur la procédure est bien plus lente (j'ai l'impression que la page est chargée bien plus lentement) et le bandeau de téléchargement apparaît au bout de 7-8 sec contre 1-2 sec sur le 1er ordinateur.
Donc si la fenêtre de IE apparait en plein écran ne pas fermer la fenêtre de IE au bout de quelques secondes mais laisser la procédure fonctionner au moins 10-15 sec avant de conclure que cela ne fonctionne pas.
Au besoin, mettre un point d'arrêt à la lignepour voir si la procédure va jusque-là et si le moment où la procédure atteint cette ligne correspond avec l'apparition du bandeau de téléchargement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part oIE.SendKeys "{tab},{enter}", 300
Dans la déclaration des API pour le 64 bits remplacer la fonction existante parA+
Code : Sélectionner tout - Visualiser dans une fenêtre à part Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As LongPtr, ByVal nCmdShow As Long) As LongPtr
j'ai pas de soucis avec l'ouverture de IE chez moi
l'api showwindow est inutile a moins de vouloir IE en plein écran ( j'en vois pas l'utilité)
non le point crucial c'est l'apparition du bandeau
chez moi toute les versions successives fonctionne
pour le webbrowser dansl le userform le appactivate du vbs dans la boucle fait son boulot y a pas de soucis
dans les dernières versions avec classe les évènements sont toujours a behind (avant) même le downloadcomplete le soucis réside la
d'où mes vielles versions avec l'usine a gaz par les apis
c'est un sujet que l'on a vu pas mal de fois hein Marc !!!
ce soir resto je m'occupe de retrouver ce code dans mes archive en rentrant j'en ai tellement et en multiples versions
mais c'est dommage j'aime bien le vbs moi ca libère un peu l'application Excel
on va trouver j'en suis sur
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
David, je pensais que tu parlais de la fenêtre (bandeau) de téléchargement.
Oui, IE s'ouvre mais c'est tout, aucune action déclenchée !
Idem avec le classeur du post #107 sur IE9 & Seven, j'ai attendu plus d'une minute …
Pas pu tester sur l'autre ordinateur.
Je vais attendre si une de vos versions fonctionne de vôtre côté à tous les deux …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
si cela permet d'afficher la fenêtre d'IE alors qu'elle ne s'affiche pas sans elle est utile...l'api showwindow est inutile a moins de vouloir IE en plein écran ( j'en vois pas l'utilité)
sinon l'intérêt du dernier fichier réside dans la fonction SendKeys (en phase expérimentale) placée dans le module de classe et qui doit permettre d'avoir la possibilité d'envoyer si nécessaire une combinaison de touche différente en fonction de la situation, ce qui est impératif sur tu veux produire une classe exportable.
A+
et oui le soucis c'est que je comprends pas l'utilité de showwindow chez moi ie s'affiche et en premier plan
peut être que chez david ie n'est pas au premier plan ,au quel cas réorganiser les macros de façon a que Excel ne reprenne pas le focus j'ai déjà vu ca
le problème c'est que chez moi les version double vbs font du 100%et même le webbrowser dans l'userform
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
re
quand le bandeau doit arriver il arrive avec une autre fenetre invisible dont la caption est :
"Afficher les téléchargements - Internet Explorer"
le bandeau arrive simultanémentapres quand on clique sur enregistrer la fenêtre invisible apparait quand on clique dans le bandeau sur "afficher les téléchargement"
il est donc raisonnable de penser que:
si le handle de cette fenêtre est trouvé alors le bandeau aussi a quelque millième de secondes près
parti de cette constatation avec findwindow on a le handle de cette fenêtre et donc le point de départ pour sendkeys
parti de la on peut faire comme cela
j'en ai fait une fonction séparer pour la réutiliser ailleurs
voila le wait bandeau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public hwnd As Long Sub test5() Dim odoc As Object, URL As String, date1, date2 date1 = "26/05/2015" date2 = "26/05/2016" URL = "http://www.abcbourse.com/download/historiques.aspx" Set IE = CreateObject("internetexplorer.application") IE.Visible = True IE.Navigate URL Do: DoEvents: Loop While IE.ReadyState <> 4 'Or ie.busy ' Page chargée, on continue Set odoc = IE.Document ' modification de la Valeur date odoc.getElementsByName("ctl00$BodyABC$strDateDeb")(0).Value = date1 'la variable entre () => afficher la page et faire afficher la source rechercher la variable odoc.getElementsByName("ctl00$BodyABC$strDateFin")(0).Value = date2 'modification du n° de la valeur odoc.getElementsByName("ctl00$BodyABC$txtOneSico")(0).Value = "FR0000120222" 'activer la coche odoc.getElementsByName("ctl00$BodyABC$oneSico")(0).Click 'combobox du choix de format de sortie odoc.getElementsByName("ctl00$BodyABC$dlFormat")(0).selectedIndex = 4 ' Clic sur bouton telecharger odoc.getElementsByName("ctl00$BodyABC$Button1")(0).Click WaitBandeau URL, "Cotations" & Format(date1, "yyyymmdd") & ".csv" End Sub
c'est tout bête
on pourrait même intégré le findwindow pour IE 8 la fenêtre que tu gère avec le appactivate dans ton vbs
sub de creation vbs autodestructible
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub WaitBandeau(URL, sname As String) hwnd = 0 hwnd_fils = 0 Do DoEvents i = i + 1 hwnd = FindWindow(vbNullString, "Afficher les téléchargements - Internet Explorer") Debug.Print hwnd If hwnd = 0 Then Sleep 100 Loop While hwnd = 0 Or i = 1000 callvbs URL, sname End Sub
le vbs gere le moment ou arrive le classeur pour pouvoir fermer IE
ainsi on utilise pas le déactivate du classeur pour fermer IE
testez
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Sub callvbs(u, fichierXL) Dim fichier As String, SC As String, F% fichier = ThisWorkbook.Path & "\touche_TAB_ENTER.vbs" SC = "Set wshShell = CreateObject(""WScript.Shell"")" & vbCrLf SC = SC & "WScript.Sleep 200" & vbCrLf SC = SC & "wshShell.SendKeys ""{tab}""" & vbCrLf SC = SC & "WScript.Sleep 300" & vbCrLf SC = SC & "wshShell.SendKeys ""{enter}""" & vbCrLf SC = SC & "WScript.Sleep 300" & vbCrLf ' gestion de la presence du classeur ouvert SC = SC & "Set objExcel = GetObject(, ""Excel.Application"")" & vbCrLf SC = SC & "With objExcel" & vbCrLf SC = SC & ".Visible = True" & vbCrLf SC = SC & "Do" & vbCrLf SC = SC & "i = i + 1" & vbCrLf SC = SC & "For Each wb In .Workbooks" & vbCrLf SC = SC & "If wb.Name = """ & fichierXL & """ Then ok = True: Exit For" & vbCrLf SC = SC & "Next" & vbCrLf SC = SC & "Loop Until ok = True Or i = 10000" & vbCrLf SC = SC & "End With" & vbCrLf ' SC = SC & "WScript.Sleep 300" & vbCrLf SC = SC & "ms=""ouverture fichier reussi!!""" & vbCrLf ' control de la fermeture de IE lancer par vba dans le vbs SC = SC & " Set objShell = CreateObject(""shell.application"")" & vbCrLf SC = SC & "For Each obj In objShell.Windows" & vbCrLf SC = SC & "if obj.LocationURL =""" & u & """ then obj.quit" & vbCrLf SC = SC & "Next" & vbCrLf ' gestion en cas d'erreur un message t'en averti SC = SC & "If i = 10000 Then" & vbCrLf SC = SC & "ms = ""erreur de telechargement """ & vbCrLf SC = SC & "End If" & vbCrLf SC = SC & "MsgBox ms" & vbCrLf 'autodestruction du vbs SC = SC & "Set objFSO = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf SC = SC & "objFSO.DeleteFile (""" & fichier & """)" F% = FreeFile Open fichier For Output As #F Print #F, SC Close #F dem: SC = """" & fichier & """" CreateObject("WScript.Shell").Run SC End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Ce qui me pose question c'est surtout que Marc dise que chez lui rien ne se passe, que les champs de la page (dates, isin, etc.) ne sont même pas renseignés ! Parce que que là ce n'est même pas un problème d'envoi des sendkeys au moment où le bandeau apparaît...sinon Patrick le plus simple est de joindre un fichier test pour être sûr de tester ta dernière proposition sur la bonne configuration de fichier.
A+
Bonjour davido
oui c'est vrai moi aussi ca me le fait quand je fait trop de tentative rapprochées
ca me met que les date puis plus rien mais en fait non par curiosité j'ai laisser et au bout de 4 minute le reste c'est fait comme ca le doit
je crois que comme dis marc c'est caractéristique a ce site vu qu'il vend une apis a 75 euros je pense qu'il y a des pointeur de garde
après pour ma dernière proposition c'est comme tel dans un fichier vierge
edit
j'en ai fait une sans classe et sans vbs ca fonctionne aussi
reste a do:looper sur le fichier dans le temporaire j'ai pas trouver comment faire il y a un exemple de chamin en commentaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 Public hwnd As Long Sub test5() Dim odoc As Object, URL As String, date1, date2 date1 = "26/05/2015" date2 = "26/05/2016" URL = "http://www.abcbourse.com/download/historiques.aspx" Set IE = CreateObject("internetexplorer.application") IE.Visible = True 'oNav.navigate "<a href="http://google.fr" target="_blank">http://google.fr</a>" IE.Navigate URL Do: DoEvents: Loop While IE.ReadyState <> 4 'Or ie.busy ' Page chargée, on continue Set odoc = IE.Document ' modification de la Valeur date odoc.getElementsByName("ctl00$BodyABC$strDateDeb")(0).Value = date1 'la variable entre () => afficher la page et faire afficher la source rechercher la variable odoc.getElementsByName("ctl00$BodyABC$strDateFin")(0).Value = date2 'modification du n° de la valeur odoc.getElementsByName("ctl00$BodyABC$txtOneSico")(0).Value = "FR0000120222" 'activer la coche odoc.getElementsByName("ctl00$BodyABC$oneSico")(0).Click 'combobox du choix de format de sortie odoc.getElementsByName("ctl00$BodyABC$dlFormat")(0).selectedIndex = 4 ' Clic sur bouton telecharger odoc.getElementsByName("ctl00$BodyABC$Button1")(0).Click waitbandeau2 IE, URL, "Cotations" & Format(date1, "yyyymmdd") & ".csv", True End Sub Sub waitbandeau2(IE, URL, sname As String, Optional reg As Boolean = False) hwnd = 0 Do DoEvents i = i + 1 'hwnd = FindWindow(vbNullString, "File Download") hwnd = FindWindow(vbNullString, "Afficher les téléchargements - Internet Explorer") Debug.Print hwnd 'If hwnd = 0 Then Sleep 10 Loop While hwnd = 0 Or i = 100 Sleep 100 'ShowWindow hwnd, 3 Set wshShell = CreateObject("WScript.Shell") Sleep 400 wshShell.SendKeys "{tab}" If reg = True Then Sleep 100 wshShell.SendKeys "{tab}" End If Sleep 300 wshShell.SendKeys "{enter}" 'path du classeur temporaire 'C:\Users\polux\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\HYSAHQCV ' path du classeur télechargé '"C:\Users\" & environ("UserName") & " \Downloads\" & sname" If reg = True Then Sleep 300 Do F = F + 1 DoEvents fermetureIE = Dir("C:\Users\" & Environ("UserName") & " \Downloads\" & sname) = "" Loop Until fermetureIE = True Or F = 10000 End If If fermetureIE = True Then IE.Quit End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Marc et Patrick,
j'ai fait un fichier test pour suivre le suivi de la procédure et l’enchaînement des différents événements gérés par l'objet IE.
Ce serait bien que vous me disiez ce qui ce passe chez vous à partir du moment où la procédure passe dans l'événement IE_DocumentComplete et que le ReadyState est = 4 jusqu'au moment ou la Sub SendKeys est activée, suivie de l'activation de l'événement IE_DownloadBegin devant (je pense) correspondre au téléchargement du fichier Excel.
Chez moi par exemple j'obtient ça (les remarques après le "=>" ont été rajouté pour ce message et correspondent à ce que je pense qu'il se passe) :
J'aimerais savoir ce que vous obtenez de votre côté...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 ------------ IE_DocumentComplete - ReadyState : 4 => la page IE est complètement téléchargée ------------ Sub AbcBourse : remplissage des champs IE_SetPhishingFilterStatus : 2 IE_StatusTextChange : IE_DownloadBegin => début de chargement de la page correspondant aux champs renseignés IE_ProgressChange : 10000 - 10000 IE_ProgressChange : 10000 - 10000 IE_StatusTextChange : http://www.abcbourse.com/ IE_CommandStateChange : -1 IE_TitleChange : Téléchargement des cotations pour => nouveau titre IE_ProgressChange : -1 - 10000 IE_StatusTextChange : IE_DownloadComplete => la page est complètement téléchargée : le bandeau apparaît à ce moment Sub SendKeys : envoi des touches du clavier IE_DownloadBegin =>téléchargement du fichier Excel IE_CommandStateChange : -1 ...
A+
Patrick,
j'ai testé ta proposition du message #115 : déjà il manque les API, ensuite chez moi le nom utilisé dans FindWindow n'est pas
"Afficher les téléchargements - Internet Explorer" mais "Afficher les téléchargements - Windows Internet Explorer" (Windows7+IE9).
Une fois les modifications faites cela fonctionne mais :
- si le nom de la fenêtre change ça va être difficile de généraliser la procédure dans le cadre d'une classe utilisable dans d'autres circonstances
- avant d'envisager cette procédure voir s'il n'y a pas possibilité de se débrouiller avec la gestion judicieuse des événements de IE.
A+
re
si tu a raison pour ta caption on teste les deux
teste cela dans un fichier vierge
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public hwnd As Long Sub test5() Dim odoc As Object, URL As String, date1, date2 date1 = "26/05/2015" date2 = "26/05/2016" URL = "http://www.abcbourse.com/download/historiques.aspx" Set IE = CreateObject("internetexplorer.application") IE.Visible = True IE.Navigate URL Do: DoEvents: Loop While IE.ReadyState <> 4 'Or ie.busy ' Page chargée, on continue Set odoc = IE.Document ' modification de la Valeur date odoc.getElementsByName("ctl00$BodyABC$strDateDeb")(0).Value = date1 'la variable entre () => afficher la page et faire afficher la source rechercher la variable odoc.getElementsByName("ctl00$BodyABC$strDateFin")(0).Value = date2 'modification du n° de la valeur odoc.getElementsByName("ctl00$BodyABC$txtOneSico")(0).Value = "FR0000120222" 'activer la coche odoc.getElementsByName("ctl00$BodyABC$oneSico")(0).Click 'combobox du choix de format de sortie odoc.getElementsByName("ctl00$BodyABC$dlFormat")(0).selectedIndex = 4 ' Clic sur bouton telecharger odoc.getElementsByName("ctl00$BodyABC$Button1")(0).Click waitbandeau2 IE, URL, "Cotations" & Format(date1, "yyyymmdd") & ".csv", True End Sub Sub waitbandeau2(IE, URL, sname As String, Optional reg As Boolean = False) hwnd = 0 Do DoEvents i = i + 1 'hwnd = FindWindow(vbNullString, "File Download") hwnd = FindWindow(vbNullString, "Afficher les téléchargements - Internet Explorer") hwndIE9 = FindWindow(vbNullString, "Afficher les téléchargements - Windows Internet Explorer") res = hwnd + hwndIE9 Debug.Print hwnd 'If hwnd = 0 Then Sleep 10 Loop While res = 0 Or i = 1000 Sleep 100 'ShowWindow hwnd, 3 Set wshShell = CreateObject("WScript.Shell") Sleep 400 wshShell.SendKeys "{tab}" If reg = True Then Sleep 100 wshShell.SendKeys "{tab}" End If Sleep 300 wshShell.SendKeys "{enter}" 'path du classeur temporaire 'C:\Users\polux\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\HYSAHQCV ' path du classeur télechargé '"C:\Users\" & environ("UserName") & " \Downloads\" & sname" If reg = True Then Sleep 300 Do F = F + 1 DoEvents fermetureIE = Dir("C:\Users\" & Environ("UserName") & " \Downloads\" & sname) = "" Loop Until fermetureIE = True Or F = 10000 End If If fermetureIE = True Then IE.Quit End Sub Sub test() sname = "Cotations20150620.csv" MsgBox Dir("C:\Users\" & Environ("UserName") & " \Downloads\" & sname) = "" End Sub Sub WaitBandeau(URL, sname As String) hwnd = 0 Do DoEvents i = i + 1 'on teste les deux (ie09 et supérieur hwnd = FindWindow(vbNullString, "Afficher les téléchargements - Internet Explorer") Debug.Print hwnd 'If hwnd = 0 Then Sleep 10 Loop While hwnd = 0 Or i = 100 callvbs URL, sname End Sub Sub callvbs(u, fichierXL) Dim fichier As String, SC As String, F% fichier = ThisWorkbook.Path & "\touche_TAB_ENTER.vbs" SC = "Set wshShell = CreateObject(""WScript.Shell"")" & vbCrLf SC = SC & "WScript.Sleep 200" & vbCrLf SC = SC & "wshShell.SendKeys ""{tab}""" & vbCrLf SC = SC & "WScript.Sleep 300" & vbCrLf SC = SC & "wshShell.SendKeys ""{enter}""" & vbCrLf SC = SC & "WScript.Sleep 10" & vbCrLf SC = SC & "Set objExcel = GetObject(, ""Excel.Application"")" & vbCrLf SC = SC & "With objExcel" & vbCrLf SC = SC & ".Visible = True" & vbCrLf SC = SC & "Do" & vbCrLf SC = SC & "i = i + 1" & vbCrLf SC = SC & "For Each wb In .Workbooks" & vbCrLf SC = SC & "If wb.Name = """ & fichierXL & """ Then ok = True: i=0: Exit For" & vbCrLf SC = SC & "Next" & vbCrLf SC = SC & "Loop Until ok = True Or i = 10000" & vbCrLf SC = SC & "End With" & vbCrLf ' SC = SC & "WScript.Sleep 50" & vbCrLf SC = SC & "ms=""ouverture fichier reussi!!""" & vbCrLf ' control de la fermeture de IE lancer par vba SC = SC & " Set objShell = CreateObject(""shell.application"")" & vbCrLf SC = SC & "For Each obj In objShell.Windows" & vbCrLf SC = SC & "if obj.LocationURL =""" & u & """ then obj.quit" & vbCrLf SC = SC & "Next" & vbCrLf SC = SC & "If i = 10000 Then" & vbCrLf SC = SC & "ms = ""erreur de telechargement """ & vbCrLf SC = SC & "End If" & vbCrLf SC = SC & "MsgBox ms" & vbCrLf SC = SC & "Set objFSO = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf SC = SC & "objFSO.DeleteFile (""" & fichier & """)" F% = FreeFile Open fichier For Output As #F Print #F, SC Close #F dem: SC = """" & fichier & """" CreateObject("WScript.Shell").Run SC End Sub
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
De mon côté c'est toujours le même souci, le readyState restant bloqué à 3 …
Si je lance mon code, aucun souci.
C'est particulier à ce site, j'en ai déjà vu un autre mais c'est vraiment exceptionnel.
D'anciens codes pilotant IE et attendant le readyState à 4 et le Busy à False continuent de tourner sans souci …
David, avec ton classeur joint du post #116, cela boucle sans fin dans la procédure IE_avec_evenement
sur le Loop Until oIE.InfoForm = True, certainement du même ordre du readyState ne passant jamais à 4 …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Marc quand tu lances la macro et que tu récupères les Debug.Print dans la fenêtre d'exécution lorsqu'elle se termine ou que tu l'arrêtes est ce que tu as cette ligne parmi la liste des infos récupérées ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4------------ IE_DocumentComplete - ReadyState : 4 ------------
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager