Importer 3 données d'un site web sur plusieurs onglets

Bonjour,

Mes compétences en VBA étant inexistantes je souhaiterai avoir de l'aide svp.

Grâce à Steelson que je remercie pour son aide j'ai pu avancé sur la 1ère partie de mon fichier mais la seconde partie consiste à remplir des données provenant d'un site web.

J'ai indiqué exactement ce qu'il faut faire dans le fichier ci-joint sous l'onglet explication afin d'être le plus clair possible sur ce que je souhaite faire.

20test-3.zip (558.57 Ko)

Pour résumer je souhaite importer 3 données du site dans les onglets appropriés avec une adresse web qui est "variable" c'est à dire qu'il faudra modifier 3 éléments sur l'url du site selon des critères que j'ai indiqué dans l'onglet "variable".

Merci d'avance pour votre aide.

Bonjour,

Je vais d'abord prendre un site et en tirer les informations.

Impossible d'utiliser PowerQuery, mais on devrait pouvoir le faire en captant le code source. Les données sont clairement identfiées dans 3 div :

    <div id="graphDD1" class="pie-chart small">
        47.8%    </div>

            <div class="pie-chart-title pie-chart-title-bottom small ">% victoire</div>
    </div>

    <div id="graphDD2" class="pie-chart small">
        51.4%    </div>

            <div class="pie-chart-title pie-chart-title-bottom small ">% victoire<br/>(Vs Ahri)</div>
    </div>

    <div id="graphDD3" class="pie-chart small">
        +326    </div>
    <div class="pie-chart-title">
        Différence de golds @15    </div>
    </div>

Le seul problème, de taille !! c'est que le site s'interdit de répondre si la demande ne vient pas d'un navigateur ! On le voit quand on tente de cliquer sur un lien html de ton fichier. J'ai également fait quelques essais et aucune réponse n'arrive.

Il faudra donc simuler le fonctionnement d'un navigateur et en récupérer le fichier source.

Attention aussi aux requêtes multiples qui peuvent bloquer ton adresse IP vis-à-vis de ce site !

Bonjour Steelson,

Merci pour la réactivité et pour l'information.

Tu as la possibilité d'utiliser l'app Porofessor

https://porofessor.gg/fr/download?utm_source=log-website&utm_medium=infobanner

As-tu essayé ?

Oui je l'ai déjà mais il ne me donne pas ce que je souhaite. De plus cette application fonctionne qu'avec le jeu ouvert et me provoque parfois des bugs ou des ralentissements pendant le jeu.

L'application se base uniquement sur le choix de l'adversaire qui est face à moi or ce que je souhaite avec mon fichier c'est le faire sur tous les adversaires en face.

Un aperçu pour un seul site ! à condition que tu aies chrome ou firefox comme navigateur par défaut.

Il faut laisser tourner, le navigateur va se lancer puis revenir sur excel. Cela reste assez pointu, "susceptible", mais je n'ai pas d'autres solutions ! Ne rien faire d'autre qu'attendre ...

#If VBA7 Then
    Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#Else
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
#End If

Sub telecharger()
Dim nav As Long, MyData As DataObject
Set MyData = New DataObject
Dim page As New HTMLDocument

fenetre = ActiveWindow.Caption
ligne = 2
    url = Sheets(1).Cells(ligne, 1)

    ' premier lancement d'un site quelconque afin d'ouvrir automatiquement le navigateur
    nav = ShellExecute(0, "open", "https://www.qwant.com/", 0, 0, 1)
    Application.Wait (Now + TimeValue("00:00:02"))
    ' code pour se mettre dans la barre d'adresse et pouvoir renseigner l'url
    SendKeys "%d"
    Application.Wait (Now + TimeValue("00:00:01"))
    ' écriture de view-source: suivi de l'url
    SendKeys "view-source:" & url
    SendKeys "{ENTER}"
    ' temps d'attente du chargement complet, dépend de la qualité de la connexion et de l'état du PC
    Application.Wait (Now + TimeValue("00:00:10"))
    ' envoi de Ctrl+a (tout sélectionner)
    SendKeys "^a"
    Application.Wait (Now + TimeValue("00:00:01"))
    ' envoi de Ctrl+c (copier)
    SendKeys "^c"
    Application.Wait (Now + TimeValue("00:00:01"))
    ' récupération du contenu du presse-papier
    MyData.GetFromClipboard
    txt = MyData.GetText(1)

    ' page.body.innerHTML = txt
    tbl = Split(txt, "<div id=""graph")
    For j = 1 To UBound(tbl)
        Sheets(1).Cells(ligne, j + 1) = Replace(Replace(Replace(Split(Split(tbl(j), ">")(1), "<")(0), vbTab, ""), vbCrLf, ""), " ", "")
    Next

    fin
    Application.Wait (Now + TimeValue("00:00:02"))
    AppActivate fenetre & " - Excel"

End Sub

Sub fin()
    Open Environ("TEMP") & "\" & "fin" & ".htm" For Output As #1
        Print #1, "<html><body>Fin du traitement, retour sur excel ...</body></html>"
    Close #1

    ShellExecute 0, "open", Environ("TEMP") & "\" & "fin" & ".htm", vbNullString, "C:\TEMP\", 1 'SW_SHOWNORMAL
End Sub

Merci Steelson,

ça me convient en revanche j'ai 3 questions :

Quand ça indique : Fin du traitement, retour sur excel ... dois je revenir sur Excel ou encore attendre car quand je reviens sur Excel j'ai un pop up de fenêtre de débogage avec cela en jaune AppActivate fenetre & " - Excel" et du coup cela ne revient pas sur Excel

Aussi est-ce normal que la fenêtre Edge s'ouvre avec le message Fin du traitement, retour sur excel ... alors que seul mon Chrome est ouvert.

Peut-on faire fermer la page source dans Chrome qui récupère les données une fois le traitement terminé ?

Merci d'avance

Quand ça indique : Fin du traitement, retour sur excel ... dois je revenir sur Excel ou encore attendre car quand je reviens sur Excel j'ai un pop up de fenêtre de débogage avec cela en jaune AppActivate fenetre & " - Excel" et du coup cela ne revient pas sur Excel

Il faut attendre, je peux enlever ce commentaire, la macro revient sur excel d'elle-même.

Aussi est-ce normal que la fenêtre Edge s'ouvre avec le message Fin du traitement, retour sur excel ... alors que seul mon Chrome est ouvert.

Quel est ton navigateur par défaut ? De toute façon, si on supprime ce message cela ne se produira plus !

Peut-on faire fermer la page source dans Chrome qui récupère les données une fois le traitement terminé ?

Ce que je peux faire, c'est fermer totalement chrome.

Super !

Tout fonctionne parfaitement

Bonjour,

si ton problème st résolu, n'oubli pas de valider

Bonjour Steelson,

Oui je viens de le faire et encore merci pour votre aide.

Bonjour Steelson,

J'ai malheureusement fermé le sujet trop rapidement.

Je souhaitais svp indiquer dans la formule :

pour tous les liens dont les colonnes B,C ou D sont vides faire fonctionner la formule sinon ne rien faire.

PS : peut-être faut il que j'ouvre un nouveau sujet celui-ci étant fermé

Merci d'avance pour votre aide

Rechercher des sujets similaires à "importer donnees site web onglets"