Titre du sujet : Re: import page web par myDearFriend! le 22/05/2010 23:54:33
Bonsoir gmh, le Forum,
Bon, si j'ai bien compris la situation...
Tu trouveras en pièce jointe peut-être une solution à ton problème.
J'ai utilisé le code VBA suivant :
Option Explicit
'---------------------------------------------------------------------------------------
' Auteur : Didier FOURGEOT (myDearFriend!) - www.mdf-xlpages.com
' Date : 22/05/2010
' Sujet : Récup données Web PMU
'---------------------------------------------------------------------------------------
Sub Traitement()
Dim vURL As String
Dim D As String, NumCourse As String
With Sheets("Accueil")
D = .Range("E2").Text
NumCourse = .Range("E4").Text
End With
'URL de départ
vURL = "http://www.pmu.fr/pmu/servlet/pmu.web ... etaillesServlet?dd=" _
& D & "&idc=" & NumCourse & "&np=1&ppd=0"
'Traiter
RecupChevaux vURL
End Sub
Sub RecupChevaux(ByVal vURL As String)
Dim IE As InternetExplorer
Dim O As Object, OI As Object
Dim L As Long
'Ouvre la page web dans IE de façon invisible
Set IE = CreateObject("internetExplorer.Application")
IE.Visible = False
'RAZ de la feuille
ActiveSheet.Cells.Delete
Application.ScreenUpdating = False
On Error Resume Next
'Boucle sur l'ensemble des partants
Do
If vURL = "" Then
'Bouton "Suivant" sur la page Web ?
For Each OI In IE.Document.Links
If OI.Title = "Suivant" Then
vURL = OI.href
End If
Next OI
End If
If vURL = "" Then Exit Do 'Sortir à la fin
'Ouvrir la page Web
IE.Navigate vURL
Do Until IE.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
'Récup Nom du partant
Set O = IE.Document.getElementsByTagName("H1")
For Each OI In O
L = L + 1
With Cells(L, 1)
.Value = OI.innerText
.EntireRow.AutoFit
.EntireColumn.AutoFit
Application.StatusBar = .Value
End With
Next OI
'Récup Détail du partant
Set O = IE.Document.getElementsByTagName("P")
For Each OI In O
If OI.innerText <> " Retour à l'accueil de pmu.fr" Then
L = L + 1
With Cells(L, 1)
.Value = OI.innerText
.EntireRow.AutoFit
.EntireColumn.AutoFit
End With
End If
Next OI
L = L + 1
vURL = ""
Loop
Application.ScreenUpdating = True
'Fermer IE
IE.Quit
Application.StatusBar = False
MsgBox "Traitement terminé ! ", vbInformation + vbOKOnly, "myDearFriend! - www.mdf-xlpages.com"
End Sub
Un élément est devenu indispensable par contre : il te faut indiquer non seulement la date de la course mais aussi son numéro ID avant de lancer le traitement. Tu retrouveras ce numéro ID dans les Url de la page web pointant sur la course ciblée.
Dans ton exemple, la date était 22052010 et le numéro ID de la course 13792171.
En espérant que ça puisse te dépanner.
Cordialement,
PS: à l'avenir, si tu souhaites de l'aide, merci de faire un effort et de prendre la peine de donner des explications détaillées.
Autre chose STP : merci de ne pas faire de copier-coller de tes posts depuis Word. Word embarque un grand nombre de balises html invisibles dans ton post, ça alourdit inutilement la base de données du site d'une part et ça peut aussi perturber fortement la mise en forme des pages du forum d'autre part (pour info, j'ai dû intervenir dans la base de données du site pour épurer ton dernier post de ces balises malvenues).
|