Patrick,
l'ordinateur sous IE11 peut maintenant rencontrer des loupés avec mon code initial du post #33
lors du 1er lancement, chose qui n'était jamais arrivé auparavant avec IE10 ni sous la config Seven / IE9 …
Comme c'est un portable processeur I7 avec un mode économie d'énergie pas défaut,
je l'ai basculé en pleine puissance puis rebooter et test : idem, toujours lors du premier lancement …
Je rappelle qu'auparavant en mode économie d'énergie (fréquence processeur réduite donc) avec IE10 jamais eu un loupé !
En fait avec une temporisation comme expliqué dans ma contribution orientée pour itwoo et
comme j'ai tendance à la paramétrer à minima selon mes configurations de tests,
pour IE11 ou des ordinateurs / connexions plus lents, il faut ne pas hésiter à l'augmenter
surtout en constatant dans le flash de l'apparition d'IE à l'écran le bouton Ouvrir est bien appuyé via SendKeys :
il faut juste donc temporiser un peu plus après le SendKeys … (ligne n°41 du code ci-dessous)
Voici la version spéciale IE11 (fonctionnant aussi sur IE9 mais un peu plus lente que celle du post #33),
tout placer dans le module ThisWorkbook (à minima le code de l'évènement) :
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
| Sub Demo2IE11()
Const ELT = "ctl00_BodyABC_Button1", QRY = "SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'", WMI = "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"
Dim IE As Object, Wb As Workbook
T = Timer
For Each Wb In Workbooks
If Wb.Name Like "Cotations*.csv" Then Wb.Close False
Next
On Error Resume Next
Do
If Timer - T > 2 Then Beep: Exit Sub
Err.Clear
Set IE = CreateObject("InternetExplorer.Application")
If Err.Number = &H800704A6 Then For Each IE In GetObject(WMI).ExecQuery(QRY, , 48): IE.Delete_: Next
Loop While IE Is Nothing
On Error GoTo 0
With IE
.Navigate "http://www.abcbourse.com/download/historiques.aspx"
While .ReadyState < 3
If Timer - T > 9 Then GoTo Fin
Wend
While Not IsObject(.Document.all(ELT))
If Timer - T > 9 Then GoTo Fin
Wend
On Error GoTo Fin
With .Document.all
.ctl00_BodyABC_strDateDeb.Value = "26/05/2015"
.ctl00_BodyABC_strDateFin.Value = "26/05/2016"
.ctl00_BodyABC_oneSico.Click
.ctl00_BodyABC_txtOneSico.Value = "FR0000120222"
.ctl00_BodyABC_dlFormat.Value = "x"
.Item(ELT).Click
End With
Application.Wait Now + 0.00002
.Visible = True
On Error Resume Next
Do
Err.Clear
AppActivate "Téléchargement des cotations"
Loop While Err.Number
CreateObject("WScript.Shell").SendKeys "{TAB}~"
Application.Wait Now + 0.00002
Fin:
If Not .Visible Then Beep: T = 0
.Quit
End With
Set IE = Nothing
End Sub
Private Sub Workbook_Deactivate()
If ActiveWorkbook.Name Like "Cotations*.csv" And T Then
ActiveWorkbook.Saved = True
MsgBox "Chargé en " & Format$(Timer - T, "0.000s")
T = 0
End If
End Sub |
La temporisation de la ligne n°33 n'est pas obligatoire, juste utile pour l'effet flash !
Edit : vaut mieux la laisser, c'est selon les configurations …
David, merci de ton retour si c'est bon aussi de ton côté …
Partager