Une macro qui ne fonctionne pas

Bonjour ,

Je ne suis pas du tout expert en Macro et excel. Ici j avais demande a un ami de me faire une macro pour ouvrir un site internet (Footstats) avec mon login et mot de passe. Il me dit que ca fonctionne.

Mais le soucis c est que cette macro devait aussi retirer des infos du site (Forme des 2 Equipes , Le nom des 2 equipes et leurs cotes ). Et c est la que ca bloque . Si je ne met pas avec mon login le programme fonctionne bien mais j ai trop peu de matchs.

C est pour a que j aimerais essayer de debloquer la macro avec mon pseudo et mot de passe.

J ai mit une image pour vous montrer ce que j aimerais et j ai mit a disposition les 2 fichiers excel prive si qq un arrive a me debloquer ca ce serait sympa.

Merci encore a tous

capture
7macro-olivier.xlsm (75.92 Ko)

Bonjour,

L'un des problèmes est qu'on ne retrouve pas "Stats "

If tablo(i, 1) = "Stats " Then

dans l'extraction internet !

Je pense qu'il faudrait se baser directement sur le code source (déjà bien complexe et blindé, sans structuration en table html) et se baser sur le mot clé Average stats between.

Cela va être long, je vais regarder cela mais cela risque de me prendre la semaine de façon perlée.

capture d ecran 133

Je pense qu'il faudrait se baser directement sur le code source (déjà bien complexe et blindé, sans structuration en table html) et se baser sur le mot clé Average stats between.

Cela va être long, je vais regarder cela mais cela risque de me prendre la semaine de façon perlée.Capture d’écran (133).png

Bonjour Steelson ,

Avant tout je te remercie de regarder pour moi car comme j ai dit je ne connais absolumenr rien c est un ami qui m a deja avance dans ce programme donc vraiment merci a toi de prendre de ton temps.

Prend le temps qu il faut .

Merci a vous

1ère étape, je récupère le contenu texte de la seconde page html ...

edit : suppression du fichier au profit du suivant)

2ème étape : récupération des données brutes

Je vais essayer d'affiner maintenant ...

NOTA : tu mettras ton user et mdp dans la macro

Option Explicit

Sub interro()

Dim i As SHDocVw.InternetExplorer
Dim idoc As MSHTML.HTMLDocument
Dim ele As MSHTML.IHTMLElement
Dim eles As MSHTML.IHTMLElementCollection

    Sheets("HTML").Range("A1").CurrentRegion.Offset(1, 0).ClearContents

    Set i = New InternetExplorer
    i.Visible = True

    i.navigate ("https://footystats.org/login")
    Do While i.readyState <> READYSTATE_COMPLETE
    Loop

    Set idoc = i.document
    If Not idoc.body.innerHTML Like "*<h1>User Dashboard</h1>*" Then ' pas encore identifié

        idoc.all.UserName.Value = "xxxx"
        idoc.all.Password.Value = "yyyy"
        Set eles = idoc.getElementsByTagName("button")
        For Each ele In eles
            If ele.ID = "register_submit" Then
                ele.Click
            Else
            End If
        Next ele

    End If

    i.navigate "https://footystats.org/tomorrow/"
    Do While i.readyState <> READYSTATE_COMPLETE
    Loop

    Set idoc = i.document

' partie de décorticage
Dim page$, item As Variant, iRow%, iCol%
Dim tblParagraphe() As String, tblMatch() As String, tblItem() As String, iP%, iM%, j%
    iRow = 2
    page = idoc.body.innerHTML
    tblParagraphe = Split(page, "</span></div></li></ul></div></div></div>")
    For iP = 0 To UBound(tblParagraphe) - 1
        tblMatch = Split(tblParagraphe(iP), "match-info row cf fl rfnone")
        For iM = 1 To UBound(tblMatch)
            tblItem = Split(tblMatch(iM), ">")
            iCol = 2
            For j = 1 To UBound(tblItem)
                item = Split(tblItem(j), "<")(0)
                If item Like "*[A-Za-z0-9.]*" Then
                    If item Like "*[0-9]*" And Not item Like "*[%apm]*" Then item = Val(item)
                    Sheets("HTML").Cells(iRow, iCol) = Replace(item, vbCrLf, "")
                    iCol = iCol + 1
                End If
            Next
            iRow = iRow + 1
        Next
    Next

End Sub
3footystats.xlsm (35.04 Ko)

Salut ,

Je dois mettre mon login et mot de passe a la place des Xxx et YyYy ?

Merci

Oui,

attention, je viens de modifier

le but étant de ne pas publier des mdp et user !

Le final (c'est de la dentelle ... et fragile en cas d'évolution du site)

Option Explicit

Sub interro()

Dim i As SHDocVw.InternetExplorer
Dim idoc As MSHTML.HTMLDocument
Dim ele As MSHTML.IHTMLElement
Dim eles As MSHTML.IHTMLElementCollection

    Sheets("HTML").Range("A1").CurrentRegion.Offset(1, 0).ClearContents

    Set i = New InternetExplorer
    i.Visible = True

    i.navigate ("https://footystats.org/login")
    Do While i.readyState <> READYSTATE_COMPLETE
    Loop

    Set idoc = i.document
    If Not idoc.body.innerHTML Like "*<h1>User Dashboard</h1>*" Then ' pas encore identifié

        idoc.all.UserName.Value = "xxxx"
        idoc.all.Password.Value = "yyyy"
        Set eles = idoc.getElementsByTagName("button")
        For Each ele In eles
            If ele.ID = "register_submit" Then
                ele.Click
            Else
            End If
        Next ele

    End If

    i.navigate "https://footystats.org/tomorrow/"
    Do While i.readyState <> READYSTATE_COMPLETE
    Loop

    Set idoc = i.document

' partie de décorticage
Dim page$, item As Variant, iRow%, iCol%
Dim tblParagraphe() As String, tblMatch() As String, tblItem() As String, iP%, iM%, j%
    iRow = 2
    page = idoc.body.innerHTML
    tblParagraphe = Split(page, "</span></div></li></ul></div></div></div>")
    For iP = 0 To UBound(tblParagraphe) - 1
        tblMatch = Split(tblParagraphe(iP), "match-info row cf fl rfnone")
        For iM = 1 To UBound(tblMatch)
            With Sheets("HTML")
            GoTo specifique
generique:
            tblItem = Split(tblMatch(iM), ">")
            iCol = 2
            For j = 1 To UBound(tblItem)
                item = Split(tblItem(j), "<")(0)
                If item Like "*[A-Za-z0-9.]*" Then
                    If item Like "*[0-9]*" And Not item Like "*[%apm]*" Then item = Val(item)
                    .Cells(iRow, iCol) = Replace(item, vbCrLf, "")
                    iCol = iCol + 1
                End If
            Next
            ' ==========
specifique:
            .Cells(iRow, 1) = Split(Split(Split(tblMatch(iM), "data-comp-id=")(1), ">")(1), "<")(0)
            .Cells(iRow, 2) = Split(Split(Split(tblMatch(iM), "data-comp-id=")(2), ">")(1), "<")(0)
            .Cells(iRow, 3) = Val(Split(Split(Split(tblMatch(iM), "col-lg-4 col-sm-4 ac")(1), ">")(1), "<")(0))
            .Cells(iRow, 4) = Val(Split(Split(Split(tblMatch(iM), "col-lg-4 col-sm-4 ac")(2), ">")(1), "<")(0))
            .Cells(iRow, 5) = Val(Split(Split(Split(tblMatch(iM), "col-lg-4 col-sm-4 ac")(3), ">")(1), "<")(0))
            .Cells(iRow, 6) = Split(Split(Split(tblMatch(iM), "sm-invisible hover-modal-parent")(1), ">")(1), "<")(0)
            .Cells(iRow, 7) = Split(Split(Split(tblMatch(iM), "sm-invisible hover-modal-parent")(2), ">")(1), "<")(0)
            ' ==========

            iRow = iRow + 1
            End With
        Next
    Next

End Sub
6footystats.xlsm (29.51 Ko)

Salut ,

Voila j ai lance le programme il fonctionne bien mais juste une chose si tu sais regarder. Tu as mit pour la forme le % des +2.5 Goals et le BTTS. Donc ces données la m interesse aussi biensur mais la forme des equipes n est pas présente du coup ? Sais tu mettre cela en plus ??

Je te montre la forme des equipes se situe (Voir image). La forme des equipes se situe en rouge,vert ou jaune.

Merci encore et milles excuses de t ennuyer

capture

ok, je regarde cela demain

il faut dire que je ne suis pas fouteux pour deux sous !

Lol....pas de soucis moi suis pas developpeur pour un sous donc.... merci encore

Correction

specifique:
            .Cells(iRow, 1) = Split(Split(Split(tblMatch(iM), "data-comp-id=")(1), ">")(1), "<")(0)
            .Cells(iRow, 2) = Val(Split(Split(Split(tblMatch(iM), "form-box")(1), ">")(1), "<")(0))
            .Cells(iRow, 3) = Val(Split(Split(Split(tblMatch(iM), "form-box")(2), ">")(1), "<")(0))
            .Cells(iRow, 4) = Split(Split(Split(tblMatch(iM), "data-comp-id=")(2), ">")(1), "<")(0)
            .Cells(iRow, 5) = Val(Split(Split(Split(tblMatch(iM), "col-lg-4 col-sm-4 ac")(1), ">")(1), "<")(0))
            .Cells(iRow, 6) = Val(Split(Split(Split(tblMatch(iM), "col-lg-4 col-sm-4 ac")(2), ">")(1), "<")(0))
            .Cells(iRow, 7) = Val(Split(Split(Split(tblMatch(iM), "col-lg-4 col-sm-4 ac")(3), ">")(1), "<")(0))
            .Cells(iRow, 8) = Split(Split(Split(tblMatch(iM), "sm-invisible hover-modal-parent")(1), ">")(1), "<")(0)
            .Cells(iRow, 9) = Split(Split(Split(tblMatch(iM), "sm-invisible hover-modal-parent")(2), ">")(1), "<")(0)
7footystats.xlsm (31.85 Ko)

Bonsoir ,

Merci beaucoup ca fonctionne et tres bien meme.... Yepaaa merci

J ai d autres petites choses a faire si ca t interresse ??

Et comment je dois faire pour refermer et dire que c est nickel ?

Merci a toi

Rechercher des sujets similaires à "macro qui fonctionne pas"