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

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 06-10-2009 23h22
Bonjour à tous,

Il y a déjà quelques temps, j'ai fait une demande similaire sur ce forum:
http://www.mdf-xlpages.com/modules/ne ... ;topic_id=362&forum=1

J'ai eu exactement ce que je souhaitais.
J'ai essayé de modifier un peu le code pour récupérer des données sur d'autres pages mais je rencontre des difficultés.

J'ai essayé de modifier le code mais l'extraction pose toujours le même probleme.
Les cellules de la ligne d'en-tête du tableau sont regoupées dans la même cellule.

"Matchs Class.GR Class.Opé Games PPD.301 MPR.CRI Moy/match"
Je ne comprends pas...

J'ai vu dans le code source qu'il y avait une incohérence la première ligne qui débute par < th > ne se termine pas par un < /th > mais un < /td > est-ce que cela peut provenir de la...???

Je joins un fichier avec les liens et les tableaux a extraire.

Peut-être n'ai-je pas compris cette partie

For L2 3 To UBound(TabTemp)<br />
Col Col 1<br />
If 
Col 9 Then<br />
Col 1


For L2 = 3 signifie que l'extraction commencera après la troisième ligne de la page web
If Col > 9 Then le tableau fait mois de 9 colonnes

Une dernière chose, est-il possible de faire l'extraction en conservant les couleur de fond (rouge et bleu) des cellules?

Merci d'avance.










Pièce jointe:
xls test.xls   [ Taille: 73.00 Ko - Téléchargements: 893 ]
Edité par Icedarts le 06/05/2010 20:31:01
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur 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 : 07-10-2009 00h13
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,

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

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 pages web
#3
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 07-10-2009 00h39
La methode rustine fonctionne à merveille ;)

Je vais étudier le code pour voir ce qui clochait!!!

Merci encore!
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur pages web
#4
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 07-10-2009 01h22
J'ai trouvé un petit détail qui ne saute pas aux yeux immédiatement c'est pour cela que je ne l'avais pas remarqué.

Lorsque l'extraction change de lien la première ligne n'est pas mise en rouge.

Voila c'est pas bien grave lol.

Merci encore pour la rapidité et l'éfficacité.

Bonne nuit.
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur pages web
#5
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 : 07-10-2009 20h42
Bonsoir Icedarts, le Forum,

Ok, vu pour le problème de couleur, voici comment rectifier le tir :

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
    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
                    End If
                    If TabTemp(L2) Like "Equipe :*" Then
                        .Range(.Cells(Lign, 1), .Cells(Lign, 8)).Interior.ColorIndex = IIf(TabTemp(L2 + 1) = "Matchs", 3, 33)
                    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

Pense à clore ce fil de discussions si tu penses que le problème est résolu (voir au bas de ma signature).

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 pages web
#6
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 07-10-2009 21h29
C'est impec comme d'habitude!!!

Merci beaucoup!
Hors Ligne
Rapport   Haut 

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

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 06-05-2010 15h11
Bonjour à tous,

Depuis quelques jours je rencontre un problème avec le code que tu m'as fait pour de l'extraction de données de page web.

En pièce jointe j'ai mis le classeur avec le code.
Le problème c'est que les chiffres ne sont plus extrait correctement.
Par exemple un 33,087 va être être inscrit dans le classeur sous cette forme 33 087.
J'ai bien essayé ctrl+H pour remplacer tout simplement les espaces par une virgule mais ça ne fontionne pas. J'ai essayé pleins de méthodes différentes, mais je n'arrive pas a mettre une virgule à la place de cet espace....
Je ne comprends pas non plus pourquoi ça ne fonctionne plus du jour au lendemain...

Si quelqu'un a une solution je suis preneur ;)

Merci d'avance.
Pièce jointe:
xls indivequipe.xls   [ Taille: 71.00 Ko - Téléchargements: 743 ]
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur pages web
#8
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 : 06-05-2010 18h47
Bonsoir Icedarts, le Forum,

Je viens de jeter un oeil sur ton classeur...
Effectivement, les valeurs numériques avec 3 décimales (et seulement celles-ci) sont automatiquement réinjectées avec un format imposé à l'américaine dans lequel la virgule est interprétée comme séparateur des milliers
C'est curieux et je ne vois pas la raison soudaine de cette mauvaise interprétation des données... Mise à jour IE ? Mise à jour Windows ? Changement du Charset de ta page Web qui influencerait le traitement ? Je ne saurais te dire...

Cela dit, voici une nouvelle méthode rustine qui devrait contourner cette nouvelle difficulté :


A la fin de la procédure Traitement()

remplace la ligne :
    .Cells(Lign, Col).Value = TabTemp(L2)
par :
   If IsNumeric(TabTemp(L2)) Then
        .Cells(Lign, Col).Value = CDbl(TabTemp(L2))
    Else
        .Cells(Lign, Col).Value = TabTemp(L2)
    End If

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 pages web
#9
Régulier XLPages

Inscription: 02/10/2008

Messages: 56

Système d'exploitation:
PC
Version Excel utilisée:
365
Posté le : 06-05-2010 20h30
Bonsoir,

Je ne sais pas si excel a un navigateur par défaut différent de celui que j'utilise car j'ai essayé en changeant par firefox ou chrome et le problème était toujours présent!

Quoi qu'il en soit ta méthode "rustine" fonctionne toujours à merveille.

Une nouvelle fois, merci pour tout!
Hors Ligne
Rapport   Haut 

Re: Extraction de données sur pages web
#10
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 : 06-05-2010 20h44
Re,

Citation :
Icedarts a écrit : Bonsoir,

Je ne sais pas si excel a un navigateur par défaut différent de celui que j'utilise car j'ai essayé en changeant par firefox ou chrome et le problème était toujours présent!

Quoi qu'il en soit ta méthode "rustine" fonctionne toujours à merveille.

Une nouvelle fois, merci pour tout!

Changer de navigateur par défaut n'a aucune conséquence, le composant WebBrowser utilisé dans le classeur est un composant strictement IE (microsoft oblige ), indépendant de ton navigateur usuel.

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 


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