Extraction de données sur plusieurs pages web.
#1
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 12-05-2009 02h24
Bonjour à tous,

J'ai un petit problème pour extraire des données sur 180 pages internet.

Je voulais me servir d'un classeur que MyDearFriend m'avait fait pour une requete à peu près similaire mais je bloque à la première étape, a savoir me rendre sur les dites pages via excel....

Je vous joins le fichier excel avec les adresses internet.

Donc ce que je souhaite obtenir c'est qu'excel se rende sur chaque page les unes après les autres, puis qu'il y extrait les données du tableau qu'il y trouve.

Alors je n'ai pas besoin de gardé les couleurs, les bordures... Juste une extraction des valeurs suffira.

Autres détails pour finir en beauté ce qui serait top c'est d'extraire la première ligne du tableau juste la première fois "CLASSE EQUIPE MATCHS MANCHES GAG. MANCHES PER. MOY.GEN MOY.QUALIF", comme vous pourrez le remarquer sur chaque page il y a un numéro d'opérateur et une lettre qui correspond au groupe, s'il était possible de récupérer ces données dans 2 colonnes supplémentaires en feuil2 ça serait le nirvana.

Voila si tout cela est réalisable je ne saurai comment vous remercier pour votre aide.

Pièce jointe:
xls Classeur1.xls   [ Taille: 32.00 Ko - Téléchargements: 946 ]
Edité par Icedarts le 16/05/2009 01:33:38
Hors Ligne
Rapport   Haut 

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

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 13-05-2009 00h33
Bonsoir Icedarts, le Forum,

Tu trouveras en pièce jointe une tentative de réponse à ta demande.

J'ai utilisé le code suivant :
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 et attend la fin de chargement
            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
                    End If
                    .Cells(Lign, Col).Value = TabTemp(L2)
                Next L2
            End With
        Next L
    End With
    MsgBox "Traitement terminé !"
End Sub

En espérant t'avoir aidé.

Cordialement,


Pièce jointe:
zip PourIcedarts.zip   [ Taille: 16.47 Ko - Téléchargements: 1110 ]

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur plusieurs pages web.
#3
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 13-05-2009 09h46
Bonjour,

A vrai dire je suis estomaqué!!!
J'avais demandé pleins de trucs et tu as tout réalisé.
J'en ai révé myDearFriend! l'a fait!!! ^^

Nonobstant j'ai tout de même une petite rectification à te demander.

Les colonnes opérateurs et groupe ne sont remplies que pour la première équipe de chaque groupe.
Est-il possible que ces colonnes soient renseignées pour toutes les équipes?

En tout cas je te remercie pour la feuille, le travail est extraordinaire. Merci encore.

Hors Ligne
Rapport   Haut 

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

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 14-05-2009 01h22
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,

Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur plusieurs pages web.
#5
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 14-05-2009 09h48
Effectivement c'est exactement ça!!!
Merci beaucoup.
Avant de mettre mon sujet en résolu peux-tu m'expliquer le fonctionnement de ce morceau de code:

= Mid(TabTemp(0), 62)
= Mid(TabTemp(2), 18)

Je ne comprends pas à quoi correspond les valeurs numériques?

Merci d'avance.
Hors Ligne
Rapport   Haut 

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

Inscription: 18/05/2006
De Saône-et-Loire (71)

Messages: 1539

Système d'exploitation:
PC
Version Excel utilisée:
97, 2000, 2002, 2003, 2007, 2010, 2013, 2016 et 365
Posté le : 16-05-2009 01h28
Bonsoir Icedarts, le Forum,

Tout d'abord le tableau TabTemp() contient chaque élément (ligne de données) de la page Web visitée.

Par exemple, pour ton premier lien :

TabTemp(0) => 1ère ligne de la page Web => "CLASSEMENT DES EQUIPES Classement équipes pour l'opérateur : 3"

TabTemp(2) => 3ème ligne de la page Web => "Pour le groupe : A"

L'objectif est de récupérer le numéro opérateur (3) et le caractère correspondant au groupe (A).
Pour ce faire, j'utilise simplement la fonction Mid() dont tu peux voir la définition dans l'aide VBA (pour rappel, dans l'éditeur VBE, on place le curseur d'édition sur le mot "Mid" et on appuie sur la touche F1).

Mid() permet d'extraire une partie d'une chaine de caractères. Cette fonction a besoin : de la chaine de caractères source, de la position du caractère à partir duquel on souhaite extraire le texte et, éventuellement, du nombre de caractères à récupérer (facultatif).

Syntaxe

Mid(Chaine source, début [, longueur ])

Si le dernier argument (longueur) est omis, on récupère tous les caractères suivants jusqu'à la fin de la chaine source.

Mid(TabTemp(0), 62) est donc équivalent à :
Mid("CLASSEMENT DES EQUIPES Classement équipes pour l'opérateur : 3", 62)

=> On récupère les caractères de la chaine à partir du 62ème caractère et on obtient ainsi : "3".


On procède de même avec Mid(TabTemp(2), 18), soit :
Mid("Pour le groupe : A", 18)

=> on récupère la chaine qui se situe à partir du 18ème caractère, soit : "A".


Cordialement,


Didier_mDF
Image redimensionnée
Le Webmaster

La réponse vous satisfait ? Merci de revenir solder le sujet en [résolu], voir ce lien
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur plusieurs pages web.
#7
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 16-05-2009 01h32
Merci bien pour tout le travail que tu fais et toutes les infos que tu m'as fourni.

En modifiant le valeurs j'avais à peu près compris mais la c'est parfaitement limpide!!!

Merci encore.
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur plusieurs pages web.
#8
Débutant XLPages

Inscription: 05/12/2014

Messages: 1

Système d'exploitation:
PC
Version Excel utilisée:
2013
Posté le : 05-12-2014 23h29

Bonjour,

J'ai cherché longtemps comment je peut extraire les données automatiquement en grande quantité à partir d'un site web. J'ai trouvé un service qui m'a beaucoup aidé, et rapidement. Je partage le lien: http://....


Bon chance

 

 


Message du Webmaster : lien supprimé !

Bonjour David, merci de ne pas poster de Pub pour un site payant dans ce forum...

Bien cordialement,

Edité par myDearFriend! le 06/12/2014 04:48:00
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes