Rapport de message :*
 

Re: Extraction de données sur plusieurs pages web.

Titre du sujet : Re: Extraction de données sur plusieurs pages web.
par myDearFriend! le 14/05/2009 01:22:07

Bonsoir Icedarts, le Forum,

Une nouvelle tentative en modifiant le code comme suit (2 lignes ajoutées après la ligne "Lign = Lign + 1") :
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 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
    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
            '
            'On récupère les données de chaque tableau
            TabTemp = Split(.WebBrowser1.Document.Body.InnerText(), vbCrLf)
            Col = 0
            With Sheets("Feuil2")
                'Prochaine ligne "résultat"
                Lign = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                .Cells(Lign, 9) = Mid(TabTemp(0), 62)   'Opérateur
                .Cells(Lign, 10) = Mid(TabTemp(2), 18)  'Groupe
                'Données du tableau
                For L2 = 4 To UBound(TabTemp)
                    Col = Col + 1
                    If Col > 8 Then
                        Col = 1
                        Lign = Lign + 1
                        .Cells(Lign, 9) = Mid(TabTemp(0), 62)   'Opérateur
                        .Cells(Lign, 10) = Mid(TabTemp(2), 18)  'Groupe
                    End If
                    .Cells(Lign, Col).Value = TabTemp(L2)
                Next L2
            End With
        Next L
    End With
    MsgBox "Traitement terminé !"
End Sub
Remplace la procédure Sub Traitement() dans le classeur précédent par celle-ci, je pense que ça répondra à ta demande...

Cordialement,