Problème pour récupérer valeurs d'un site internet

Chris57

XLDnaute Occasionnel
Bonjour,

avec une requête Web je cherche à récupérer les valeurs de cette page
Powernext


EOD Price €/MWh 30.95 (au moment où j'écris ce post, mais cette valeur change très souvent.

Le problème est que cette valeur n’apparaît pas dans la requête ....


Quelqu'un connait la solution ??
 

Lone-wolf

XLDnaute Barbatruc
Re : Problème pour récupérer valeurs d'un site internet

Bonjour Chris,

Perso je ne peux pas t'aider. Mais après 306 message postés, tu devrais savoir qu'l faut mettre un fichier, si tu veux avoir la chance que quelqu'un t'aide.


A+ :cool:
 

Chris57

XLDnaute Occasionnel
Re : Problème pour récupérer valeurs d'un site internet

En fait je n'ai aucun fichier à l'heure actuelle.
J'ai ouvert un nouveau classeur vierge et simplement créé la requête qui n'a pas marché...

Il me semble avoir un jour vu une autre solution, mais j'arrive pas à mettre la main dessus...
 

chris

XLDnaute Barbatruc
Re : Problème pour récupérer valeurs d'un site internet

Bonjour

Il est de plus en plus difficile de récupérer des données sur le net avec cette méthode : cela suppose des balises HTML <TABLE> & Co qui disparaissent au profit du CSS.

Peut être en VBA mais vu le code source de la page, tout changement risque de nécessiter l'adaptation du code...

Essayes de trouver d'autres sites diffusant cette données : tu auras peut-être un tableau.
 

Chris57

XLDnaute Occasionnel
Re : Problème pour récupérer valeurs d'un site internet

Effectivement, même dans le code source de la page la valeur n'y apparaît pas (j'ai tenté une récup du code xml sur excel)

Je vais fouiller la toile pour trouver cette valeur ailleurs, mais à première vue c'est pas gagné !
 

chris

XLDnaute Barbatruc
Re : Problème pour récupérer valeurs d'un site internet

Bonjour

Effectivement cela parait plus simple. Bizarrement le contenu semble un peu différent... Comme je ne sais trop à quoi cela correspond précisément...
 

pyfux

XLDnaute Occasionnel
Re : Problème pour récupérer valeurs d'un site internet

Bonjour,

En effet une solution par GetElement(s)By... risque d'être compromise lors du changement de structure du site.
Rien n'est éternel...

Une piste:
Code:
Public Sub IEConnectToURL(ByVal sURL As String)
 
Const READYSTATE_COMPLETE = 4

Dim IE As Object

Set IE = CreateObject("internetExplorer.Application")
IE.Visible = False
With IE
    .Navigate sURL
    Do Until .ReadyState = 4
        DoEvents
    Loop                                          'attend la fin du chargement
End With

Dim bOk As Boolean

Dim loDoc As HTMLDocument
Set loDoc = IE.Document

DoEvents
Dim ContainerDiv As HTMLDivElement, ResultDIV As HTMLDivElement, SubResultDIV As HTMLDivElement
DoEvents

Set ContainerDiv = loDoc.getElementById("market-data")
DoEvents

For Each ResultDIV In ContainerDiv.getElementsByTagName("div")
    If ResultDIV.className = "marketData" Then ' "md-data" Then

        'Debug.Print ResultDIV.innerHTML
        
        For Each SubResultDIV In ResultDIV.getElementsByTagName("div")
            Debug.Print SubResultDIV.innerText
        Next
        
    End If
Next

Set IE = Nothing
    
End Sub

Attention, ajoutez une référence à "Microsoft HTML Object Library"

Courage
 

Chris57

XLDnaute Occasionnel
Re : Problème pour récupérer valeurs d'un site internet

Ay !! Là ça me dépasse complètement !!
Déjà c'est une Public Sub et je sais pas gérer ça... Ensuite je sais pas comment entrer l'adresse web...

Alors je l'ai transformée en Sub mais j'ai un message d'erreur sur la ligne :
For Each ResultDIV In ContainerDiv.getElementsByTagName("div")

imageshack1.jpg
 

Pièces jointes

  • imageshack1.jpg
    imageshack1.jpg
    27.6 KB · Affichages: 63
  • imageshack1.jpg
    imageshack1.jpg
    27.6 KB · Affichages: 62

Chris57

XLDnaute Occasionnel
Re : Problème pour récupérer valeurs d'un site internet

Bon j'ai bossé comme un fou pour trouver une solution, et après des heures/jours sur la toile j'ai fait le fichier joint.

Voici la macro pour le prix du gaz :

Code:
Sub recupGAZ()
    'Nécessite d'activer la référence
    '"Microsoft Internet Controls"
    'et
    '"Microsotf HTML Object Library"
    
    Sheets("Récup Web").[B5].ClearContents
    
    Dim IE As New InternetExplorer
    Dim winShell As New ShellWindows
    Dim maPageHtml As HTMLDocument
    
    IE.navigate ("http://www.powernext.com/#sk;tp=app;n=market;f=listMarketTable;t=layout/gasSpot;fp=system_name:gasSpot;lang=en_US")
    
        On Error Resume Next
        For Each IE In winShell
            If IE.LocationURL <> "" Then
                Set maPageHtml = IE.document
                Sheets("Récup Web").Range("B5") = maPageHtml.DocumentElement.innerText
    
                Set maPageHtml = Nothing
            End If
        Next IE
        On Error GoTo 0

End Sub


ça fonctionne mais pas à tout les coups !! Certaines fois j'ai bien les données de la pages qui sont importées, d'autre fois j'ai des données dont j'ignore l'origine... Rien n'a voir avec la page internet concernée.
De plus lors du lancement de la macro, les valeurs de la cellule de destination changent plusieurs fois de suite, comme s'il y avait plusieurs importations à la suite..

Quelqu'un a une idée ?
 

Pièces jointes

  • Prix MW & GAZ.xlsm
    21.9 KB · Affichages: 49
  • Prix MW & GAZ.xlsm
    21.9 KB · Affichages: 67
  • Prix MW & GAZ.xlsm
    21.9 KB · Affichages: 58
Dernière édition:

pyfux

XLDnaute Occasionnel
Re : Problème pour récupérer valeurs d'un site internet

Bonjour,

Dans le code de votre feuille, vous copier la fonction que j'ai écrite (voir mon post précédent).

Puis sur votre feuille, ajoutez un bouton et sur le code du bouton vous faites un call:
Code:
Private Sub CommandButton1_Click()
Call IEConnectToURL("www.mapage.bidule.fr/toto")
End Sub

Easy?
 

Discussions similaires

Statistiques des forums

Discussions
314 630
Messages
2 111 365
Membres
111 114
dernier inscrit
ADA1327