IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copie de données Internet (Problème de code) [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Copie de données Internet (Problème de code)
    Bonjour le Forum,

    ne parvenant pas à modifier un code qui fonctionne pour copier certaines données dans des pages Internet mais pas pour en copier d'autres, je viens demander votre aide pour me dire quelle modification lui apporter pour qu'il accepte de copier ces données.

    L'adresse de la page Internet est la suivante :

    Cours AB SCIENCE | AB | Cotation Bourse Paris - Les Echos Bourse

    Ce code fonctionne pour copier le Cours et le + HAUT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    Sub Lire_Cours_Potentiels()
     
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim HtmlTag As IHTMLElementCollection
        Dim Valeur1 As String, Valeur2 As String
        Dim Cel As Range, I As Integer
     
        Sheets("Cours et Potentiels").Select
            ActiveSheet.Unprotect
     
        For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
            IE.Navigate Cel
            IE.Visible = True
            Do Until IE.readyState = READYSTATE_COMPLETE
                DoEvents
            Loop
            Set IEDoc = IE.document
     
            Set HtmlTag = IEDoc.getElementsByTagName("td")
     
            Valeur1 = "N/A": Valeur2 = "N/A"
            For I = 0 To HtmlTag.Length + 1
     
                If HtmlTag.Item(I).innerText = "Cours" Then
                    Valeur1 = HtmlTag.Item(I + 1).innerText         'Valeur1 = HtmlTag.Item(I + 1).innerText
     
                  If HtmlTag.Item(I).innerText = "Cours" Then
                    Valeur2 = HtmlTag.Item(I + 7).innerText       'Valeur2 = HtmlTag.Item(I - 1).innerText '
                  End If
                    Exit For
                End If
            Next I
            Cel.Offset(, 3) = Valeur1
            Cel.Offset(, 2) = Valeur2
        Next Cel
     
            IE.Visible = False
     
        Set HtmlTag = Nothing
        Set IEDoc = Nothing
        Set IE = Nothing
     
     
            IE.Visible = False
     
            Range("B1").Select
                ActiveSheet.Protect
     
                    ActiveWorkbook.Save
     
    End Sub
    Modifié comme ci-dessous pour lire le Cours et l'Objectif,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                If HtmlTag.Item(I).innerText = "Cours" Then
                    Valeur1 = HtmlTag.Item(I + 1).innerText         'Valeur1 = HtmlTag.Item(I + 1).innerText
     
                  If HtmlTag.Item(I).innerText = "Cours" Then
                    Valeur2 = HtmlTag.Item(I + 22).innerText       'Valeur2 = HtmlTag.Item(I - 1).innerText '
                  End If
                    Exit For
                End If
    Il copie bien le Cours mais pas l'Objectif dont il ne copie que le Nom et pas la Valeur !!

    J'avoue ne pas comprendre la raison de ce "caprice" et vous demande donc de m'aider à résoudre ce problème.
    Est-il par ailleurs possible de copier en même temps dans cette page le Cours, l'Objectif et le Potentiel ?


    En vous remerciant pour votre aide et en vous souhaitant une bonne journée.

    Cordialement.
    Nonno 94.

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut
    Cours AB SCIENCE | AB | Cotation Bourse Paris - Les Echos Bourse n'est pas une adresse internet mais le titre de la page !
    une adresse commence par http

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Adresse Internet
    Bonjour Olivier et merci d'avoir pris la peine de répondre à ma question.

    Je vous demande de bien vouloir excuser mon erreur mais je voulais communiquer le lien pour permettre de visualiser la page et repérer les données à sélectionner puis copier; à savoir :
    - le Cours (14 € 70 à 11 h 33),
    - l'Objectif de cours à trois mois (9,30 €) du tableau "CONSENSUS DES ANALYSTES"et éventuellement
    - le Potentiel (-36,7 %) indiqué dans ce même tableau à la même heure.

    Voici donc l'adresse de la page "Synthèse" de la valeur "AB SCIENCE" :

    http://bourse.lesechos.fr/bourse/syn...PAR&codif=ISIN

    Cordialement.
    Nonno 94.

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Une autre piste :

    Tu peux récupérer le code html de la page avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IEDoc.body.OuterHTML
    Ensuite, à l'aide des fonctions inStr() et Mid(), tu peux t'en sortir.

  5. #5
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    la valeur de "Objectif" n'est pas dans un <td> mais dans un <th>

    tu peux soit utiliser firefox avec firebug pour voir dynamiquement la source de la page , ou avec IE 7/8 c'est OUTILS /"outils de développement" accessible par F12

    Attention avec tes HtmlTag.Item(I + 7) faut être sûr que les infos ne changent pas de place !

    un truc comme cela semble fonctionner pour objectif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Sub Lire_Cours_Potentiels()
     
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim HtmlTag As IHTMLElementCollection
        Dim Valeur1 As String, Valeur2 As String
        Dim Cel As Range, I As Integer
     
        Sheets("Feuil1").Select
        ActiveSheet.Unprotect
     
        For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
            IE.Navigate Cel
            IE.Visible = True
            Do Until IE.readyState = READYSTATE_COMPLETE
                DoEvents
            Loop
            Set IEDoc = IE.document
     
            Set HtmlTag = IEDoc.getElementsByTagName("td")
     
            Valeur1 = "N/A": Valeur2 = "N/A"
            For I = 0 To HtmlTag.Length + 1
     
                If HtmlTag.Item(I).innerText = "Cours" Then
                    Set Myvaleur1 = HtmlTag.Item(I + 1)
                    Valeur1 = HtmlTag.Item(I + 1).innerText         'Valeur1 = HtmlTag.Item(I + 1).innerText
                    Valeur2 = HtmlTag.Item(I + 7).innerText       'Valeur2 = HtmlTag.Item(I - 1).innerText '
     
                ElseIf HtmlTag.Item(I).innerText = "Objectif de cours à trois mois" Then
                    Set Myvaleur3 = HtmlTag.Item(I)
                     Set THTag = Myvaleur3.parentElement.getElementsByTagName("th")
                    Valeur3 = THTag.Item(0).innerText         'Valeur1 = HtmlTag.Item(I + 1).innerText
     
                    Exit For
                End If
            Next I
            Cel.Offset(, 3) = Valeur1
            Cel.Offset(, 2) = Valeur2
            Cel.Offset(, 4) = Valeur3
            Cel.Offset(, 5) = Valeur4
        Next Cel
     
        IE.Visible = False
     
        Set HtmlTag = Nothing
        Set IEDoc = Nothing
        Set IE = Nothing
     
     
        IE.Visible = False
     
        '        Range("B1").Select
        '            ActiveSheet.Protect
        '
        '                ActiveWorkbook.Save
     
    End Sub

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    Re-bonjour Oliv' et bonjour pc 75,

    le code d'Oliv' ne semble pas fonctionner; il fonctionne ......parfaitement et répond tout à fait à ma demande.
    Mes connaissances en VBA étant très limitées, je n'ai pu explorer la piste proposée par pc 75.

    Je vous renouvelle mes remerciements et vous souhaite une très bonne fin de journée.

    Cordialement.
    Nonno 94.

  7. #7
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Pour info, une alternative (à condition que la mise en page ne change pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Sub Go()
    MyUrl = "http://bourse.lesechos.fr/bourse/synthese.jsp?code=FR0010557264&place=XPAR&codif=ISIN"
    Set web = CreateObject("InternetExplorer.Application")
    web.Navigate MyUrl
    Do While web.Busy
    Loop
    On Error Resume Next
    Set doc = Nothing
    Do Until Not doc Is Nothing
        Set doc = web.Document
    Loop
    strWebPage = doc.body.OuterHTML
    'web.Quit
    GetData = strWebPage
    Cours = "<td class=""b12-tab-int b12-tab-bold"">Cours</td>"
    Pos = InStr(1, GetData, Cours, vbTextCompare) + Len(Cours)
    Chaine = Mid(GetData, Pos)
    Valorisation = InStr(1, Chaine, "valorisation"">", vbTextCompare) + Len("valorisation"">")
    Pos = InStr(111, Chaine, "</TD>") - Valorisation
    Cours = Mid(Chaine, Valorisation, Pos)
    MsgBox "Cours = " & Cours
     
    Objectif = "<td>Objectif de cours à trois mois</td>"
    Pos = InStr(1, Chaine, Objectif, vbTextCompare) + Len(Objectif)
    Chaine = Mid(Chaine, Pos)
    Objectif = "<TH style=""FONT-WEIGHT: normal"">"
    FinPos = InStr(1, Chaine, Objectif, vbTextCompare) + Len(Objectif) - 1
    Chaine = Mid(Chaine, 1 + FinPos)
    Objectif = Mid(Chaine, 1, InStr(1, Chaine, "</TH", vbTextCompare) - 2)
    MsgBox Objectif
     
    Potentiel = "b12-rouge"
    Pos = InStr(1, Chaine, Potentiel, vbTextCompare) + Len(Potentiel) + 1
    Chaine = Mid(Chaine, Pos)
    Pos = InStr(1, Chaine, "</TH>") - 1
    Potentiel = Mid(Chaine, 1, Pos)
    MsgBox Potentiel
    web.Quit
     
    End Sub

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Alternative
    Re,

    la mise en page étant fluctuante, je ne peux retenir cette alternative mais l'utiliserai pour des pages + stables.

    Merci encore et bonne fin de journée.

    Nonno 94.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut heu
    bonsoir nono94
    Re,

    la mise en page étant fluctuante, je ne peux retenir cette alternative mais l'utiliserai pour des pages + stables.

    Merci encore et bonne fin de journée.

    Nonno 94.
    avec ta methode le probleme restera le meme

    j'ai fait moi même une recherche dans le code source je n'est pas trouvé cet élément

    rechercher un élément par son item n'est pas un bon choix car il peut varier

    ensuite est tu sur de cet élément "<td class=""b12-tab-int b12-tab-bold"">Cours</td>"

    d'ailleur rienque "Cours</td>" est inexistant aussi aujourdh'ui dans le code source
    il est inexistant dans la page"http://bourse.lesechos.fr/bourse/synthese.jsp?code=FR0010557264&place=XPAR&codif=ISIN"

    je pense que tu t'est trompé en donnant le lien de la page il se peut que pour avoir cet element il faut cliquer sur un lien donc une autre page



    par contre j'ai trou ver plein de "class=""b12-tab........."mais aucun comme le tien


    peut tu donner plus de précision ?

    au plaisir

  10. #10
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut
    Bonjour Patricktoulon, bonjour le Forum,

    m'étant absenté ces derniers jours et dans l'impossibilité de me connecter, je n'ai pu répondre à votre message et vous remercier pour votre recherche.

    Le lien que j'ai communiqué ouvre effectivement et curieusement la page "Consensus" de la valeur et non la page"Synthèse" contrairement au libellé du lien !
    Dans la page "Synthèse" que l'on ouvre à partir de la page "Consensus" en cliquant à gauche dans la barre située en haut de la page sous le nom de la Valeur.
    Le Cours est affiché en haut à droite : -0,69%14,390€(c) avec la variation mais également dans le tableau "Les cotations" :
    Temps réel - Paris 26/10/12- 17H35mn
    Cours 14,390€

    En haut et à droite de la page "Synthèse", l'élément a les caractéristiques suivantes :
    <span data-streamcolor="variation" data-field="valorisation"> et
    dans le tableau :
    <td class="b12-tab-chiff b12-tab-right b12-tab-bold" data-streamcolor="variation" data-field="valorisation">.

    Dans la page "Consensus", cet élément est affiché en haut à droite comme dans la page "Synthèse" et ses caractéristiques sont identiques :
    <span data-streamcolor="variation" data-field="valorisation">.

    Ainsi, je peux extraire et copier le Cours dans la page "Synthèse" avec "<td>" mais pas dans la page "Consensus" avec "<span>". Est-ce possible ?

    Je vous renouvelle mes remerciements pour votre patience et votre persévérance et vous souhaite une bonne fin de semaine.


    Cordialement.
    Nonno 94.

    P. S. : comment indiquer qu'une réponse a été apportée à une discussion ?
    (confirmation de mes "compétences" !).

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour

    regarde la capture d'ecran et dis moi si c'est bien ce qui est pointé par une fleche bleu que tu veux

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Re,
    Voir, dans la discussion, en complément de celui de 12 h 41, le message de 13 h 10 qui semble ne pas apparaître dans les discussiions commencées !

    Merci.

    Cordialement.
    Nonno 94.

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour nono_94

    copie ce code dans un module standard et lance "test1

    tu m'en dira des nouvelles
    il y a un proverve qui parle d'ordre et de cahot en voila un exemple
    qu'il y a de l'ordre dans le cahot malgré toute fluxtuation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    Option Explicit
    Public Function HtmlToText(sHtml)
        On Error Resume Next
        With CreateObject("htmlfile")
            .Write sHtml
            HtmlToText = .body.innerText
        End With
    End Function
    Public Function GetXml(sURL)
        Dim Xml
        Set Xml = CreateObject("Microsoft.XMLHTTP")
        Xml.Open "GET", sURL
        Xml.Send
        Do
            DoEvents
        Loop While Xml.ReadyState <> 4
        GetXml = Xml.ResponseText
    End Function
    Public Function Get_labourse_a_Nonno_94(sURL, elementName As String)
        Dim Xml
        Dim sourcebase
        Dim textohtml
        Set Xml = CreateObject("Microsoft.XMLHTTP")
        Xml.Open "GET", sURL
        Xml.Send
        Do: DoEvents: Loop While Xml.ReadyState <> 4
        '""""""""""""""""""""""""""""""""""""""""""""""""
        Get_labourse_a_Nonno_94 = Split(Xml.ResponseText, elementName)
        elementName = ""
    End Function
    Sub test1()
     
      Dim valeur(6) As Variant, paragraphe As String, lien As String, elements As Variant, oldtime, newtime
     oldtime = Now
        lien = "http://bourse.lesechos.fr//bourse/cours.jsp?code=FR0003500008&place=XPAR&codif=ISIN"
     
        'on cherche dans le code source a partir de "temps reel" c'est le titre qui juste en haut du petit tableau
        'elements deviens tout le texte qui se trouve a partir de la par portion coupé par le mot "temps reel"
        elements = Get_labourse_a_Nonno_94(lien, "Temps réel")
    ' au cas ou il y en ai plusieurs on sait que c'est le premierce sera donc elements(1) qui contiendra toute les données
    ' on donne au 6 valeurs du tableau "valeur(6)la donnée recherché
    valeur(1) = HtmlToText(Split(Split(Split(elements(1), "variation")(1), ">")(1), vbCrLf)(1))
     
    valeur(2) = HtmlToText(Split(Split(Split(elements(1), "variation")(2), ">")(1), "<")(0))
     
    valeur(3) = HtmlToText(Split(Split(Split(elements(1), "Ouverture")(1), ">")(2), "<")(0))
     
    valeur(4) = HtmlToText(Split(Split(Split(elements(1), "+ HAUT")(1), ">")(2), "<")(0))
     
    valeur(5) = HtmlToText(Split(Split(Split(elements(1), "+ BAS")(1), ">")(2), "<")(0))
     
    valeur(6) = HtmlToText(Split(Split(Split(elements(1), "Clôture précédente")(1), ">")(2), "<")(0))
    newtime = Now
    'COMME TU PEUT LE VOIR DEPUIS QUE TU A POSTE TA QUESTION IL Y A DES FLUXTUATIONS SUR L'ORGANISATION DE LA PAGE
    'CE QUI A POUR CONCEQUENCE UN DEPLACEMENT DES ELEMENTS PAR CONTRE DANS CE CAHOT SI JE PEUT M'EXPRIMER AINSI
    'il y a des éléments qui restent invariables (les titres de chaque lignes du tableau, _
    l'organisation du code avec les balises pour chaque elements reste inchangée
     
    'Cours               = valeur(1)
    'Variation%"         = valeur(2)
    'Ouverture           = valeur(3)
    'Plus haut           = valeur(4)
    'plus bas            = valeur(5)
    'Cloture précédente  = valeur(6)
     
    paragraphe = paragraphe & "             BONJOUR nono_94" & vbCrLf
    paragraphe = paragraphe & "ca cartonne a la bourse aujourdh'ui" & vbCrLf & vbCrLf
     
    paragraphe = paragraphe & " Le cours est a          : " & valeur(1) & vbCrLf & vbCrLf
    paragraphe = paragraphe & " La Variation% est a : " & valeur(2) & vbCrLf & vbCrLf
    paragraphe = paragraphe & " L'Ouverture est a     : " & valeur(3) & vbCrLf & vbCrLf
    paragraphe = paragraphe & " Le Plus haut est a    : " & valeur(4) & vbCrLf & vbCrLf
    paragraphe = paragraphe & " Le Plus bas est a      : " & valeur(5) & vbCrLf & vbCrLf
    paragraphe = paragraphe & " La Cloture précédente est a : " & valeur(6) & vbCrLf & vbCrLf
    paragraphe = paragraphe & " La recherche a durré :" & Format(oldtime - newtime, "ss") & "secondes"
     
     
    MsgBox paragraphe
    End Sub

  14. #14
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Re,
    Cher Toulonnais,

    ce code est effectivement impressionnant mais ne correspond pas à ma "préoccupation".
    Celle-ci est la suivante :
    extraire de pages Internet les données suivantes : Cours, Objectif de cours à 3 mois et Potentiel pour 210 Valeurs et les copier dans un fichier.
    2 possibilités pour ce faire : extraire ces données des pages Internet "Synthèse" ou "Consensus".
    La 1 ère permet de le faire dans les pages "Synthèse" avec le Code suivant dérivé d'un Code initial modifié par Oliv' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Sub Lire_Cours_Objectifs_Potentiels()
     
        Dim IE As New InternetExplorer
        Dim IEDoc As HTMLDocument
        Dim HtmlTag As IHTMLElementCollection
        Dim Valeur1 As String, Valeur2 As String
        Dim Cel As Range, I As Integer
     
    Sheets("Cours, Objectifs et Potentiels").Select
        ActiveSheet.Unprotect
     
        For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row)
            IE.Navigate Cel
            IE.Visible = True
            Do Until IE.readyState = READYSTATE_COMPLETE
                DoEvents
            Loop
            Set IEDoc = IE.document
     
            Set HtmlTag = IEDoc.getElementsByTagName("td")
     
            Valeur1 = "N/A": Valeur2 = "N/A"
            For I = 0 To HtmlTag.Length + 1
     
                If HtmlTag.Item(I).innerText = "Cours" Then
                    Set Myvaleur1 = HtmlTag.Item(I + 1)
                    Valeur1 = HtmlTag.Item(I + 1).innerText         'Cours
                    Valeur2 = HtmlTag.Item(I + 7).innerText         '+ HAUT
     
                ElseIf HtmlTag.Item(I).innerText = "Objectif de cours à trois mois" Then
                    Set Myvaleur3 = HtmlTag.Item(I)
                     Set THTag = Myvaleur3.parentElement.getElementsByTagName("th")
                    Valeur3 = THTag.Item(0).innerText               'Objectif
                        Set Myvaleur4 = HtmlTag.Item(I + 1)
                            Set THTag = Myvaleur4.parentElement.getElementsByTagName("th")
                            Valeur4 = THTag.Item(0).innerText       'Potentiel
     
                    Exit For
                End If
            Next I
            Cel.Offset(, 2) = Valeur1
            Cel.Offset(, 3) = Valeur2
            Cel.Offset(, 4) = Valeur3
            Cel.Offset(, 5) = Valeur4
        Next Cel
     
        IE.Visible = False
     
        Set HtmlTag = Nothing
        Set IEDoc = Nothing
        Set IE = Nothing
     
     
        IE.Visible = False
     
               Range("B1").Select
                    ActiveSheet.Protect
     
                       ActiveWorkbook.Save
     
    End Sub
    Malheureusement, toutes les pages "Synthèse" des 210 valeurs ne sont pas exploitables. Par contre toutes les pages "Consensus" le sont; d'où mes tentatives pour adapter le Code ci-dessus à ces pages et en extraire les données souhaitées.
    Pour cela, il est nécessaire d'extraire la donnée "Cours" dans les pages "Consensus" ce que je ne parviens pas à faire car ses caractéristiques sont :
    <span data-streamcolor="variation" data-field="valorisation"> et non :<td class="b12-tab-chiff b12-tab-right b12-tab-bold" data-streamcolor="variation" data-field="valorisation">comme dans les pages "Synthèse".
    Est-ce possible ?

    Si j'insiste "lourdement" pour extraire les données "Cours" alors que je peux les calculer en connaissant les "Objectifs" et les "Potentiels", c'est parce que les "Potentiels" communiqués dans les pages sont erronés.
    Ainsi, pour AB SCIENCE, l'Objectif étant de 9 € 30, le Potentiel de - 35,8 %, le Cours calculé est de 14 € 49 alors que le Cours réel est de 14 € 39 !

    Vous avez la gentillesse de terminer vos messages par la formule :"au plaisir".
    Celui-ci est naturellement partagé. Cela va-t-il durer longtemps avec ma nouvelle demande ?

    Avec mes remerciements renouvelés pour votre expertise et votre patience.

    Cordialement.
    Nonno 94.

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut
    ok

    donc si je comprend bien tua a récupérer re
    Cours 'ca tu la deja avec ma methode c'est le premier e valeur


    ensuite il te faut
    Objectif de cours à 3 mois toujour sur la page consencus de préférence je suppose???????


    et enfin potentiel de 210 valeur qui se trouvent dans leur pages respectives si j'ai bien compris ?????????

    il va te falloir donc récupérer les liens de ces pages par le href" dun element sur la page concensus si j'ai toujours bien compris

    est ce bien ca ??????

    dailleur donne moi le lien de la page concensus que j'aille voir


    au plaisir

    re

    deja dans la page concensus il n'y a pas "cours (celui que tu cherche)
    cours a 3 mois non plus

    il faudrait que tu soit plus clair dans ta demarche

    dans quel page ce trouvent ces éléments (lapage d'acceuil ,concensus,ect....)


    au plaisir

  16. #16
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Re,
    Je vous joins le fichier sur lequel je "travaille laborieusement".

    Les "bonnes" feuilles dont les codes fonctionnent sont :
    - "Objectifs et Potentiels" (liens avec les pages "Consensus")
    - "Cours, Objectifs et Potentiels" (liens avec les pages "Synthèse")

    Les onglets rouges pour les feuilles avec des liens "Consensus", les bleus pour les liens "Synthèse".

    Les Codes que je ne parviens pas à modifier sont ceux des feuilles rouges "Objectifs, potentiels et Cours" et "Objectifs, potentiels et Co (2)" (liens avec les pages "Consensus").
    Possible, impossible ?

    Au plaisir et encore merci.

    Nonno 94

  17. #17
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    re
    la prochaine fois déprotege tes cellules sur l'exemple que tu envoie sinon ca risque d'etre difficile

    je reviens dans un momment avec avec la premiere feuille "objectif a 3 mois "


    au plaisir

  18. #18
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 179
    Points : 77
    Points
    77
    Par défaut Protection des feuilles
    Re,

    les protections des feuilles protégées sont retirées lorsque les macros sont lancées avec les boutons.

    Cordialement.

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bon voila une premiere version

    j'ai pris deux de tes sheets qui semblaient avoir le meme principe

    j'ai fait une seule fonction pour les deux

    tu n'a qua regarder le temps d'execution deja tu m'en dira de mes nouvelles

    ne le prend pas mal mais j'ai regardé ton code j'ai abandonné l'idée de le reprendre en plus d'etre super long pendant l'execution c'st un probleme que j'ai eu a traiter souvent

    quand tu a beaucoup de page a ouvrir comme ca la methode IE est trop long ue
    rien que le temps que la page soit complement affiché j'ai bu 10 café

    je vais te refaire tout tes sheets les uns apres les autres

    essaie le model en piece jointe récupére le car je ne le laisserais pas pour le prochain envoie sinon je n'ai plus de place pour mes pieces jointes

  20. #20
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Public Function Get_labourse_a_Nonno_94(sURL, elementName As String)
    j'adore !!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 5 12345 DernièreDernière

Discussions similaires

  1. [XL-2003] Erreur code:copie de données non vides sur une autre feuille
    Par Razekiel_ dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/04/2013, 08h08
  2. [MySQL] Problème de copie de données.
    Par Necko dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/06/2010, 15h30
  3. Réponses: 4
    Dernier message: 07/02/2009, 17h19
  4. [VBA-E] Problème de copie de données
    Par JM_stp dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2006, 00h33
  5. [POO] Problème de code PHP avec Internet Explorer
    Par bzoler dans le forum Langage
    Réponses: 5
    Dernier message: 12/02/2006, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo