Rapport de message :*
 

Re: Extraction de données sur pages web

Titre du sujet : Re: Extraction de données sur pages web
par myDearFriend! le 07/10/2009 00:13:11

Bonsoir Icedarts

Pas très inspiré en ce soir, je me contente de traiter ton problème selon la méthode... rustine.

Tu trouveras ton classeur modifié selon ma façon de voir les choses.

J'ai utilisé le code suivant qui remplacera ton ancienne procédure Traitement() :

Option Explicit
'----------------------------------------------------------------------------
' Auteur    : Didier FOURGEOT (myDearFriend!)  -  www.mdf-xlpages.com
'----------------------------------------------------------------------------
Public EnCours As Boolean       'Flag pour contrôle de chargement page Web

Sub Traitement()
Dim TabTemp As Variant
Dim T As String, T1 As String, T2 As String
Dim L As Long, L2 As Long, Lign As Long
Dim Col As Byte
    'On efface les données de la Feuil2
    With Sheets("Feuil2")
        .Range(.Cells(2, 1), .Cells(.Rows.Count, 12)).Delete
        .Range(.Cells(2, 1), .Cells(2, 8)).Interior.ColorIndex = 3
    End With
    'Traitement
    With Sheets("Feuil1")
        'Pour chaque lien
        For L = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            'On affiche la page Web dans le WebBrowser
            EnCours = True
            .WebBrowser1.Navigate .Cells(L, 1).Text
            'Le flag "EnCours" est remis à False dans Feuil1 > WebBrowser1_DocumentComplete()
            Do
                DoEvents
            Loop Until EnCours = False
            '
            T = .WebBrowser1.Document.Body.InnerText()
            T1 = "Matchs Class.GR Class.Opé Games PPD.301 MPR.CRI Moy/match "
            T2 = Replace(T1, " ", vbCrLf)
            T = Replace(T, T1, T2)
            'On récupère les données de chaque tableau
            TabTemp = Split(T, vbCrLf)
            Col = 0
            With Sheets("Feuil2")
                'Prochaine ligne "résultat"
                Lign = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                .Cells(Lign, 14) = Mid(TabTemp(2), 1)  'Groupe
                'Données du tableau
                For L2 = 3 To UBound(TabTemp)
                    Col = Col + 1
                    If Col > 9 Then
                        Col = 1
                        Lign = Lign + 1
                        .Cells(Lign, 14) = Mid(TabTemp(2), 1)  'Groupe
                        If TabTemp(L2) Like "Equipe :*" Then
                            .Range(.Cells(Lign, 1), .Cells(Lign, 8)).Interior.ColorIndex = IIf(TabTemp(L2 + 1) = "Matchs", 3, 33)
                        End If
                    End If
                    .Cells(Lign, Col).Value = TabTemp(L2)
                Next L2
            End With
        Next L
    End With
    Sheets("Feuil2").Columns("A:H").EntireColumn.AutoFit
    MsgBox "Traitement terminé !"
End Sub

Cordialement,