Importation valeur de plusieurs tableaux

Bonjour le forum,

J’ai besoin de votre aide pour créer un fichier Excel qui récupère des données de plusieurs tableaux sur un site internet.

Dans un premier temps il faut s’identifié (explications par la suite) avant d’importer les données.

Sur la page on voit les réunions et les courses, pour cet exemple on prend la course 1 de la réunion 1 donc on clique sur l’onglet partants/stats/prono.

On obtient une nouvelle page avec tous les partants de cette course, ensuite on clique sur le nom du premier cheval on obtient une nouvelle fenêtre avec toutes les courses passées du cheval et ce sont ces données que J’ai besoin d’importer.

Quand on n’est pas identifié on obtient seulement le passé des cinq dernières courses, si on est connecté alors on a plusieurs résultats (15 maxi sur une page).

Il me faudrait les 15 dernières performances en sachant que sur certains chevaux il n’y a que 0, 3 ou 8 dernières performances etc.

L’objectif de ma demande est d’importer toutes les dernières performances des chevaux participants a une course dans une réunion, par exemple on sélectionne la date puis une réunion ensuite une course ou si c’est possible toutes les courses de cette même réunion et le fichier importe toutes les données d’écrites ci-dessous.

Ci-joint un fichier comme exemple Excel d’une course (la course 1) dans une réunion (la R1) et un fichier Word pour plus de détails.

Pour résumer je choisi la date, une Réunion, une course, dans cette course j’importe toutes les dernières performances de chaque cheval

Pour infos dans une journée il y a plusieurs réunions, dans une réunion il y a plusieurs courses (maxi 10 mais ça arrive d’en avoir 11 mais c’est très rare) et dans une course il y a au maximum 20 chevaux.

Merci d'avance.

PS : Je cherche seulement une manière d’automatiser ce que je faisais manuellement par des copier-coller et ce pour mon usage personnel.

"que celui qui n'a jamais un fait copier-coller sur un site jette la première pierre"

32gstats.xlsm (44.56 Ko)

Bonjour,

as-tu regardé ce topic ... https://forum.excel-pratique.com/viewtopic.php?f=2&t=116119

est-ce qu'il répond en partie à ta demande ? je n'ai pas tout lu !

Il faut faire toutes les courses ? puis tous les partants et toutes les statistiques ?

Premier jet pour une course et sans identification ...

Sub stats()
Dim URL$, obj As New DataObject, sh As Worksheet
On Error Resume Next

' RAZ
    Sheets("Chevaux").Cells.Clear
    Sheets("Partants").Cells.Clear
    Application.DisplayAlerts = False
    For Each sh In Worksheets
        If sh.Name <> "Courses" And sh.Name <> "Partants" And sh.Name <> "Chevaux" Then sh.Delete
    Next
    Application.DisplayAlerts = True

' Liste des partants
Sheets("Partants").Select

avant = "<table id=""tableau_partants"""
i = 1
    DoEvents
    URL = Sheets("Courses").Cells(i, 1)
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        If .Status = 200 Then
                txt = "<table" & Split(Split(.responseText, avant)(i), "</table>")(0) & "</table>"
                obj.SetText txt
                obj.PutInClipboard
                Range("A1").Select
                ActiveSheet.Paste
        End If
    End With

' Identification des chevaux
    With Sheets("Chevaux")
        For i = 3 To Range("B" & Rows.Count).End(xlUp).Row
            .Range("A" & i - 2) = "https://www.geny.com/" & Range("B" & i).Hyperlinks(1).Address
            .Range("B" & i - 2).FormulaR1C1 = _
                "=MID(RC[-1],SEARCH(""cheval"",RC[-1])+7,SEARCH(""_"",RC[-1])-SEARCH(""cheval"",RC[-1])-7)"
        Next
        .Select
    End With

' Stats
avant = "<table id=""tableau_fichecheval"""
For i = 1 To Range("A" & Rows.Count).End(xlUp).Row
    DoEvents
    URL = Sheets("Chevaux").Cells(i, 1)
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        If .Status = 200 Then
                txt = "<table" & Split(Split(.responseText, avant)(i), "</table>")(0) & "</table>"
                obj.SetText txt
                obj.PutInClipboard
                ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
                ActiveSheet.Paste
                ActiveSheet.Name = Sheets("Chevaux").Cells(i, 2)
        End If
    End With
Next

End Sub

Autre solution ... PowerQuery (mais je ne suis pas aguerri !)

J'ai rassemblé le tout en un seul onglet pour une course ...

Faut-il faire toutes les courses ? est-ce que le même cheval ne va pas revenir ?

Bonsoir Steelson

Merci pour tes réponses.

Mon projet est d’importer toutes les stats en sélectionnant une réunion dans la journée, et, si c’est possible importer toutes les courses dans cette même réunion afin d’obtenir toutes stats de chaque cheval.

Par exemple dans le fichier Excel, dans un onglet accueil ont choisi la date ensuite une réunion et le fichier charge toutes les stats. En choisissant la date le fichier cherche les adresses de chaque course ce qui permet d’importer toutes les courses.

Comme d’écrit dans mon poste il me faut m’identifié afin d’obtenir les 15 dernières performances passées

Comme je fais des recherches statistiques il serait bien de garder le format des tableaux, je m’explique, si un cheval n’a pas d’historique le tableau reste vide etc. Ci-joint un exemple d’un tableau de 20 chevaux avec les données que tu as obtenu par ton fichier(onglet course 1).

21gstats.xlsm (213.45 Ko)

Quand je parle de tableau : c’est un tableau de 20 petits tableaux qui corresponds au nombre maximum de chevaux par courses.

Ton premier jet et très encouragent Merci

Je vais compléter avec toutes les courses. Mon but est de créer une base de données, ce sera plus simple à gérer ensuite. Les données étant extraites, il suffira ensuite de remettre en forme si nécessaire.

Bonjour,

J'ai dû mettre une tempo de 1 secondes entre chaque interro web ... cela augmente donc le temps de traitement car il y a beaucoup de pages.

Je suis en train de finaliser la page d'identification ... mais j'ai une question : si tu t'identifies au préalable avec Internet Explorer (pas Edge, pas Chrome, Firefox etc.), est ce que cela te donne les 15 résultats historiques ?

Bonjour Steelson

J’utilise Firefox, j’ai fait un essais avec internet explorer il y a bien 15 résultats sur la première page.

Bon dimanche

capture d ecran 15

J’utilise Firefox, j’ai fait un essais avec internet explorer il y a bien 15 résultats sur la première page.

ok, mais après t'être identifié sur IE, est-ce que la macro affiche 5 ou 15 résultats ?

J'ai fait un essai et je n'ai que les 5 dernières performances.

Lors des importations il y a un bug, je t'ai fait 2 captures d’écran

capture d ecran 2 capture d ecran 1

J’ai oublié, lorsque quand je clique sur le bouton magique ça charge tout il passe des courses aux performances mais je voudrai sélectionner la réunion (ou les course si c’est plus pratique pour toi) et ensuite les perfs. Ça fait moins de requêtes.

Bonne soirée

Je pense que le bug est lié à l'absence d'historique pour un cheval ! Peux-tu vérifier cela en fonction de là où cela s'est arrêté ?

J'en avais rencontré un autre pour un cheval avec un historique de 1 seulement, bug que j'ai corrigé

Pour l'identification, j'espère que la modification que je finalise fonctionne ! J'ai fait un clone partiel du site + un programme php spécifique que j'ai implémenté sur serveur, et enfin un bout de fichier excel qui identifie ...

Je vais réfléchir sur comment sélectionner les courses et je vais te re-proposer cela demain.

La cause du bug un "inédit"

bonne nuit

capture d ecran 74 capture d ecran 75

Nouvelle version ...

Contrairement à d'autres réalisations, je ne suis pas sûr ici que l'identification soit prise en compte par excel compte tenu du choix fait par genty.

Bonjour Steelson,

Hélas le fichier ne prend pas en compte mes identifiants sur le site, je n'ai toujours que les 5 dernières perfs

Cela confirme ce que je pensais ... l'identification passe en fait par un cookie et non pas une gestion de "session" (notion php). Il faudra donc attendre que le temps fasse son oeuvre en sauvegardant la base de données à chaque fois.

tu peux m’expliquer : Il faudra donc attendre que le temps fasse son oeuvre en sauvegardant la base de données à chaque fois.

Est ce qu'on peut aller au bout du projet malgré le problème des identifiants.

Je me contenterai des 5 dernières perfs avec quand même avec une mise en forme sur 15 perfs, si tu le veux bien

Pour moi, par excel, ne gérant pas les cookies comme sur un site internet, on ne pourra jamais récupérer plus de 5 données.

Si tu sauvegarde la base de données obtenues le jour j, qu'ensuite tu refasses l'extraction plus tard, tu assembles les résultats en ôtant les lignes identiques ... au bout d quelques semaine ou mois, tu auras un historique qui se sera enrichi.

Est ce qu'on peut aller au bout du projet malgré le problème des identifiants.

Je me contenterai des 5 dernières perfs avec quand même avec une mise en forme sur 15 perfs, si tu le veux bien

que manque-t-il ?
Rechercher des sujets similaires à "importation valeur tableaux"