Ouvrir sous-écran sur web

Résolu
dadacourse Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Sur un site web, ouvrir automatiquement par une macro Excel un "sous-écran" (qui s'ouvre manuellement en cliquant sur un bouton).
Exemple sur le site du PMU Paris Hippiques: après avoir ouvert automatiquement une course d'un jour précédent (jusque là j'y arrive), je voudrais ouvrir automatiquement par une macro le tableau "Rapports probables" (qui ne s'ouvre que si je clique sur le bouton "Rapports probables")
Merci par avance de votre aide
Bonne journée !!
(Windows 8.1 IE11 Excel2007)

Précision: je ne veux rien récupérer sur ce tableau "Rapports probables",... juste le faire apparaître automatiquement à l'écran.

Merci de votre solution (ci-possible le script).. et si pas possible, merci de me le dire
A voir également:

6 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Pour nous permettre de vous aider dans le développement de votre macro, il nous faudrait déjà savoir comment vous ouvrez cette page Internet. Merci de nous donner des détails (Userform? Webbrowser?) ainsi que le code correspondant...
0
dadacourse Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   3
 
Bonjour Franck,
Merci de votre rapide réponse et de votre intérêt à mon problème...
Je suis loin d'être un connaisseur, mais voici la macro (Excel 2007) qui ouvre à l'écran
une course du PMU (depuis IE11)
En A1, l'URL de la course, par exemple :
https://www.pmu.fr/turf/index.html#03012015/R1/C1

Sheets("01").Select
    ActiveWorkbook.FollowHyperlink Address:="" & [A1].Value
    Application.Wait Now + TimeValue("00:00:03")
    Application.SendKeys "^a"
    Application.Wait Now + TimeValue("00:00:01")
    Application.SendKeys "^c"
    Windows("Récup Web.xlsm").Activate
    Sheets("01").Select
    Range("AA1").Select
    ActiveSheet.Paste


Ensuite, je voudrais simplement ouvrir à l'écran le tableau des « Rapports probables » de cette course R1/C1.
(Je copierai l'écran de la même façon que précédemment pour le coller en BB1)
J'espère ces informations utiles pour vous
Merci encore et bonne journée !!
Jean-Luc
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Ce n'est malheureusement pas si simple.
Le "bouton" en question n'est ni un lien, ni un bouton... Il s'agit d'un élément <li> faisant apparaitre, au clic, une <div> contenant une <table>. C'est le contenu de cette table qu'il te faudrait récupérer. Dans l'état des choses, je ne vois malheureusement pas comment...
0
dadacourse Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   3
 
Tant pis et dommage, j'avais espéré...
Si une solution se présentait pour récupérer cette fameuse table, peut-être auprès de tes "amis", je serais bien sûr preneur
Bonne journée... et Bonne année 2015 !!!
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Je n'ai pas dit que c'était impossible...
J'ai juste dit que "dans l'état des choses (autrement dit comment ta macro se présentait), ce n'est pas si simple".
Regarde ce que fait ce code, chez toi :

Option Explicit
'sources :
'http://qwazerty.developpez.com/tutoriels/vba/ie-et-vba-excel/

Sub DadaCourse()
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim DivParent As HTMLSelectElement
Dim Enfants As HTMLSelectElement
Dim Petits_Enfants As HTMLSelectElement
Dim Flag As Boolean

IE.Navigate "https://www.pmu.fr/turf/index.html#03012015/R1/C1"
IE.Visible = True
WaitIE IE
Set IEDoc = IE.document
Set DivParent = IEDoc.getElementById("course-info-plus")
For Each Enfants In DivParent.Children
    For Each Petits_Enfants In Enfants.Children
        If Petits_Enfants.innerText = "Rapports probables" Then Petits_Enfants.Click: Flag = True: Exit For
    Next
    If Flag Then Exit For
Next
Set IE = Nothing
End Sub

Sub WaitIE(IE As InternetExplorer)
   Do Until IE.ReadyState = READYSTATE_COMPLETE
      DoEvents
   Loop
End Sub

0
dadacourse Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   3
 
Sub essai01()
'
' essai01 Macro
'

'
Option Explicit
'sources :
'http://qwazerty.developpez.com/tutoriels/vba/ie-et-vba-excel/

Sub DadaCourse()
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim DivParent As HTMLSelectElement
Dim Enfants As HTMLSelectElement
Dim Petits_Enfants As HTMLSelectElement
Dim Flag As Boolean

IE.Navigate "https://www.pmu.fr/turf/index.html#03012015/R1/C1"
IE.Visible = True
WaitIE IE
Set IEDoc = IE.document
Set DivParent = IEDoc.getElementById("course-info-plus")
For Each Enfants In DivParent.Children
    For Each Petits_Enfants In Enfants.Children
        If Petits_Enfants.innerText = "Rapports probables" Then Petits_Enfants.Click: Flag = True: Exit For
    Next
    If Flag Then Exit For
Next
Set IE = Nothing
End Sub

Sub WaitIE(IE As InternetExplorer)
   Do Until IE.ReadyState = READYSTATE_COMPLETE
      DoEvents
   Loop
End Sub



la ligne 27 est surligné et une fenêtre indique:
Erreur de compilation
Type défini par l'utilisateur non défini
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Oui, il faut activer deux références : « Microsoft Internet Controls » et « Microsoft HTML Object Library ». Pour accéder aux références dans VBA, menu Outils -> Références, puis cocher les cases correspondantes à ces deux références.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dadacourse Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   3
 
Après activation des 2 référence...
la ligne 18 est surligné et une fenêtre indique:
Erreur d'exécution '91':
Variable objet ou variable de bloc With non définie
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Ah oui.
C'est dû à certaines "lenteurs" de chargement de la page. J'ai résolu cela en ajoutant une "tempo" de 2 secondes après la ligne Set IEDoc = IE.Document :
Application.Wait Time + TimeSerial(0, 0, 2)

Tu trouveras : ci-joint mon fichier test
0
dadacourse Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   3
 
Carrément génial, ça marche très bien !!!

Un grand merci Franck pour ton travail et le temps que tu y as consacré !

Je te souhaite une excellente année 2015, à toi et tes proches
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Merci. A toi également.
A+
0