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 :

Récupération donnée sur page internet fonction getElementsByClassName


Sujet :

Macros et VBA Excel

  1. #21
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    et moi j'ai le message de securité qui s'affiche a chaque cookies avec "Microsoft.xmlhttp"
    si je clique non a chaque fois j'ai rien si je clique oui a chaque fois j'ai un puré de charabia en retour pas possible
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #22
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Je n'ai pas testé cette bibliothèque (car plus lente !) mais juste MSXML2.XMLHttp et la WinHttp de mon code …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #23
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Je suis impressionné par vos connaissances. Je commence par lire vos postes que j'ai en retard et je distribue les votes, puis je vais essayer de tout comprendre.

    Je pense que je vais me coucher tard

    Je m'attaque à ce tuto j'espère qu'il m'aidera.

    Citation Envoyé par Marc-L Voir le message
    La constante PriceTag n'est pas trouvée, le code est caduque car la page HTML a dû être modifiée depuis …



    J'aurais bien aimé voir ta tentative car aucun souci pourtant de mon côté avec la bibliothèque MSXML2 ou encore WinHttp :

    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
    Sub DemoBloombergSplitSplitSplit()
        Const URL = "http://www.bloomberg.com/quote/", _
              PRI = "<meta itemprop=""price"" content=""", CUR = "<span itemprop=""priceCurrency"">"
     
        With Worksheets("PEA Binck")
            TCK = .Cells(1).CurrentRegion.Columns(3).Value
            ReDim VA(2 To UBound(TCK), 1)
            On Error Resume Next
     
            With CreateObject("WinHttp.WinHttpRequest.5.1")
                For R& = 2 To UBound(TCK)
                    If TCK(R, 1) > "" Then
                        .Open "GET", URL & TCK(R, 1), False
                        .SetRequestHeader "DNT", "1"
                        .Send
                        If .Status <> 200 Then MsgBox "Erreur de connexion !", 16, Space(7) & Split(URL, "/")(2): Exit Sub
                              SP = Split(Split(.ResponseText, PRI)(1), CUR)
                        VA(R, 0) = Val(SP(0))
                        VA(R, 1) = Split(SP(1), "<")(0)
                    End If
                Next
            End With
     
            On Error GoTo 0
            .[E2:F2].Resize(UBound(VA) - 1).Value = VA
        End With
    End Sub
    Split de Split de Split : Chrüterchraft ‼ Hein Patrick !

    _____________________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion
    Bonjour Marc votre code ci-dessus est fonctionnel sur ma feuille excel, il est déjà beaucoup plus rapide que le précédent.

    Citation Envoyé par patricktoulon Voir le message
    re
    essaie ca
    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
    Option Base 1
    Function GetPrice(symb)
    Const PriceTag = "span class="" price"">"
    Dim tablo(1, 2)
    Dim oHttp As Object, txt$, i&, j&
    On Error Resume Next
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If Err <> 0 Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
    If oHttp Is Nothing Then MsgBox "MSXML2.XMLHTTP not found", 16, "Error": Exit Function
    On Error GoTo 0
     
    With oHttp
    .Open "GET", "http://www.bloomberg.com/quote/" & symb, False
    .send
    txt = .responseText
    i = InStr(1, txt, PriceTag, 1)
    If i = 0 Then
    GetPrice = "PriceTag not found"
    Else
    code = Split(txt, PriceTag)(1)
    code = Split(code, "</span>")(0)
    code = "<" & PriceTag & vbCrLf & code & "</span></span>"
    Debug.Print code
    With CreateObject("htmlfile")
    .body.innerhtml = code
    tablo(1, 1) = Replace(.getelementsbytagname("span")(0).innertext, "EUR", "")
    tablo(1, 2) = .getelementsbytagname("span")(0).Children(0).innertext
    End With
    End If
    End With
    Set oHttp = Nothing
    GetPrice = tablo
    End Function
    Sub test()
        For i = 5 To Cells(Rows.Count, 3).End(xlUp).Row
        Range(Cells(i, 5), Cells(i, 6)) = GetPrice(Cells(i, 3).Value)
    End Sub
    Bonjour Patrick,

    J'ai également réussi à faire tourner votre code avec les modifications mineures suivantes (en rouge)
    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
    Option Base 1
    Function GetPrice(symb)
    Const PriceTag = "span class="" price"">"
    Dim tablo(0, 1)
    Dim oHttp As Object, txt$, i&, j&
    On Error Resume Next
    Set oHttp = CreateObject("MSXML2.XMLHTTP")
    If Err <> 0 Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
    If oHttp Is Nothing Then MsgBox "MSXML2.XMLHTTP not found", 16, "Error": Exit Function
    On Error GoTo 0
    
    With oHttp
    .Open "GET", "http://www.bloomberg.com/quote/" & symb, False
    .send
    txt = .responseText
    i = InStr(1, txt, PriceTag, 1)
    If i = 0 Then
    GetPrice = "PriceTag not found"
    Else
    code = Split(txt, PriceTag)(1)
    code = Split(code, "</span>")(0)
    code = "<" & PriceTag & vbCrLf & code & "</span></span>"
    Debug.Print code
    With CreateObject("htmlfile")
    .body.innerHTML = code
    tablo(0, 0) = Replace(.getElementsByTagName("span")(0).innerText, "EUR", "")
    tablo(0, 1) = .getElementsByTagName("span")(0).Children(0).innerText
    
    
    End With
    End If
    End With
    Set oHttp = Nothing
    GetPrice = tablo
    End Function
    Sub test()
        For i = 5 To Cells(Rows.Count, 3).End(xlUp).Row - 1 '-1 pour ne pas considérer la ligne TOTAL ajoutée
        Range(Cells(i, 5), Cells(i, 6)) = GetPrice(Cells(i, 3).Value)
        Next
    End Sub
    Concernant la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tablo(0, 0) = Replace(.getElementsByTagName("span")(0).innerText, "EUR", "")
    J'ai remplacé avec votre astuce vue plus haut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tablo(0, 0) = Val(Replace(.getElementsByTagName("span")(0).innerText, ",", "."))
    Cela permet de "généraliser" la ligne si la devise n'est pas EUR (USD par exemple).

    Merci pour votre aide

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    si ca fonctionne comme ca alors tu a un soucis
    car je met option base 1 justement pour démarrer a 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    :
    Option Base 1
    Function GetPrice(symb)
    Const PriceTag = "span class="" price"">"
    Dim tablo(0, 1)
    Dim oHttp As Object, txt$, i&, j&
    ca devrait planter grave !!!!!!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #25
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Merci Dap !

    Piloter Internet Explorer est la procédure la moins rapide, à utiliser en dernier recours …

    Ensuite la méthode intermédiaire est la fonctionnalité d'Excel du menu Données : Importer à partir du Web
    (QueryTables en VBA) mais ne fonctionne pas avec toutes les pages Web …

    Enfin, une bibliothèque de requêtes (MSXML2, WinHttp, …) est utilisée par les pages Web pour charger les données,
    c'est donc la voie à privilégier …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #26
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    si ca fonctionne comme ca alors tu a un soucis
    car je met option base 1 justement pour démarrer a 1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    :
    Option Base 1
    Function GetPrice(symb)
    Const PriceTag = "span class="" price"">"
    Dim tablo(0, 1)
    Dim oHttp As Object, txt$, i&, j&
    ca devrait planter grave !!!!!!!
    Ok "option base 1" signifie que le tableau a une taille minimum ? Pouvez-vous m'en dire plus sur l’intérêt que cela apporte dans le cadre de ce programme ?

    En tout les cas cela fonctionne bien avec mais aussi sans cet "option base 1" par contre je ne sais pas pourquoi cela marche (drôle de questionnement ).

    Citation Envoyé par Marc-L Voir le message
    Merci Dap !

    Piloter Internet Explorer est la procédure la moins rapide, à utiliser en dernier recours …

    Ensuite la méthode intermédiaire est la fonctionnalité d'Excel du menu Données : Importer à partir du Web
    (QueryTables en VBA) mais ne fonctionne pas avec toutes les pages Web …

    Enfin, une bibliothèque de requêtes (MSXML2, WinHttp, …) est utilisée par les pages Web pour charger les données,
    c'est donc la voie à privilégier …
    Oui je m'aperçoit que cette méthode est bien efficace et plus rapide, je vais essayer de me former davantage sur ces requêtes !

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    voila le code que j'utilise qui est un peu plus adapter a ton cas
    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
    Option Base 1
    Function GetPrice(symb)
        Const PriceTag = "span class="" price"">"
        Dim tablo(1, 2)
        Dim oHttp As Object, txt$, i&, j&
        On Error Resume Next
        Set oHttp = CreateObject("MSXML2.XMLHTTP")
        If Err <> 0 Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
        If oHttp Is Nothing Then MsgBox "MSXML2.XMLHTTP not found", 16, "Error": Exit Function
        On Error GoTo 0
        With oHttp
            .Open "GET", "http://www.bloomberg.com/quote/" & symb, False
            .send
            txt = .responseText
            i = InStr(1, txt, PriceTag, 1)
            If i = 0 Then
                GetPrice = "PriceTag not found"
            Else
                code = Split(txt, PriceTag)(1)
                code = Split(code, "</span>")(0)
                code = "<" & PriceTag & vbCrLf & code & "</span></span>"
                Debug.Print code
                With CreateObject("htmlfile")
                    .body.innerhtml = code
                    tablo(1, 1) = Val(.getelementsbytagname("span")(0).innertext)
                    tablo(1, 2) = .getelementsbytagname("span")(0).Children(0).innertext
                End With
            End If
        End With
        Set oHttp = Nothing
        GetPrice = tablo
    End Function
    Sub test()
        For i = 5 To Cells(Rows.Count, 3).End(xlUp).Row
            Range(Cells(i, 5), Cells(i, 6)) = IIf(Cells(i, 3) <> "", GetPrice(Cells(i, 3)), "")
        Next
    End Sub
    et l'apercu a la fin
    Pièce jointe 175509
    un visuel c'est mieux que les mots
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #28
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    Votre dernière version du programme est fonctionnelle sur ma machine.

  9. #29
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    dis moi tu en a beaucoup comme ca de ligne??
    si oui demande a MarcL de te parler de sa ruche il comprendra
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #30
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    A terme je pense que mon fichier devra aller chercher plusieurs milliers d'informations sur plusieurs pages internet puisque le but est de créer un fichier de suivi de mon patrimoine et d'analyse de choix d'achat / de vente d'actions, analyse de liste vastes de trackers et d'OPCVM, analyse de bilan de sociétés ...

    Bon pour cela je me laisse au moins 1 an pour obtenir quelque chose qui me convienne car je commence tout juste et la route est longue.

    Par contre s'il y a des d'autres techniques / méthodes intéressante à connaitre je suis preneur!

    En tout cas en parlant de ruche j'aime bien le miel

    Bon cette histoire de ruche m'a mis en appétit du coup je suis allé me prendre une cuillère de miel et je suis tombé sur ce poste suis-je sur la bonne piste?

    Cela voudrait dire que le code pourrait être encore plus rapide ? Bon sur mon exemple actuel ce n'est peut être pas nécessaire mais par contre cela m’intéresse fortement pour la suite et autant partir sur une base optimisée. Donc si vous avez des pistes pour améliorez le code actuel n'hésitez pas !

    Bien je lirai ce poste de Marc demain car le miel fait son effet, je commence à dormir et je ne suis pas (encore) développeur donc je me suis arrêté au préambule du poste

  11. #31
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Oui c'est la bonne piste, le premier post suffit à lui seul, voir aussi le #26 …

    Mais encore faut-il attendre une conception définitive de la feuille de calculs (position des colonnes, infos à télécharger)
    avant de l'envisager …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    bonjour
    MarcL t'entends ca ?
    Bon pour cela je me laisse au moins 1 an pour obtenir quelque chose qui me convienne car je commence tout juste et la route est longue.
    on a un nouveau itwoo
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #33
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Oui j'y est pensé aussi : son tunnel ayant commencé en novembre 2013 et il a aperçu la lumière un an après …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    et encore!! je ne suis pas sur qu'il ai tout compris aujourd'hui

    surtout quand il me dit il y a moins d'un mois dans un MP qu'il a pas encore tester le hta qui est obsolète aujourd'hui
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #35
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    Bonsoir,

    Bon du coup j'ai pas trop avancé sur mon projet aujourd'hui par contre j'ai lu pleins de choses intéressantes sur le forum. Je lis aussi le sujet itwoo dont vous parliez plus haut pour essayer de profiter de ses interrogations ça pourra m'aider.

    Sinon je pense que je vais déjà passer pas mal de jours pour améliorer et compléter mes feuilles Excel et déployer le peu de code que je commence maitriser mais qui devrait déjà me permettre de faire pas mal de récupérations de données.

    Je pense que je vais être capable de récupérer des données d'autres sites comme Yahoo finance. Par contre j'entrevois déjà des grosses difficultés pour la récupération de données sur les certains sites comme http://www.morningstar.fr/fr/ car la construction de leurs URL me semble beaucoup plus compliquée.

    Je reviens par ici lorsque je serai bloqué.

    Bonsoir,

    J'ai un peu avancé sur mon programme et j'ai besoin de votre aide pour comprendre comment fonctionne l'URL pour Morningstar et s'il y a moyen de récupérer les informations sur ce site à partir de l'ISIN ou d'un autre moyen d'identification.

    Voici ma feuille actuelle :

    Nom : Capture.PNG
Affichages : 731
Taille : 93,5 Ko

    Par exemple :

    Pour le premier fond, CARMIGNAC EMERGENTS A EUR / ISIN : FR0010149302
    L'URL est la suivante : http://www.morningstar.fr/fr/funds/s...?id=F0GBR04F8J

    Pour le deuxième fond, CCR CROISSANCE EUROPE R / ISIN : FR0007016068
    L'URL est la suivante : http://www.morningstar.fr/fr/funds/s...?id=F0GBR04QFV

    Donc apparemment la reconnaissance se fait par un id mais y a-t-il un moyen en regardant le code source de la page internet de savoir comment cet id fait la correspondance avec l'isin par exemple?

  16. #36
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    d'abords 1 question
    les éléments précèdent sont ils sur la même feuille exel?? vu que la capture d'écran est très ressemblante

    si c'est le cas tu t'embarque pour 4 ans pas 1

    alors il n'y a pas de correspondance directe dans le code source exploitable

    par contre avec l'espion IE quand on utilise le moteur de recherche interne a morni.....

    on trouve ceci:
    et on tombe sur une page avec les occurrences trouvées en l'occurrence une seule

    quand on clique sur cette occurrence on arrive enfin sur la page

    donc si tu veux continuer a travailler avec les isin tu va devoir faire 2 requête pour cette page
    la première pour trouver le lien la deuxième pour y aller
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #37
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    d'abords 1 question
    les éléments précèdent sont ils sur la même feuille exel?? vu que la capture d'écran est très ressemblante
    Je ne suis pas sûr de comprendre la question, en fait, je fait un onglet par compte ici je suis sur l'onglet "Avie Linxea Evol" (c'est donc une assurance vie et le site morningstar est plus fournis pour ce type de compte) jusqu'à présent j'étais sur l'onglet "PEA Binck" qui était donc mon Plan épargne en Action (on voit les différents onglets sur la capture de mon message précédent).

    Une fois abouti, tous les onglets de compte auront la même forme (à priori), à savoir
    • 1 tableau avec les fond/action/tracker... détenus dans le portefeuille
    • différents détails avec des informations à extraire du site morningstar (ou autre) comme on peut le voir (pour partie) sur la capture de mon message précédent


    D'autres onglets différents dédiés à l'analyse et au choix des actions viendront s'ajouter plus tard. Le premier onglet "Synthèse" résumera les totaux des différents comptes et leur évolution dans le temps et servira je pense d'interface de saisie pour les achats et les ventes d'action/fonds/...

    Citation Envoyé par patricktoulon Voir le message
    si c'est le cas tu t'embarque pour 4 ans pas 1
    Aïe


    Citation Envoyé par patricktoulon Voir le message
    par contre avec l'espion IE quand on utilise le moteur de recherche interne a morni.....

    on trouve ceci:
    http://www.morningstar.fr/fr/funds/S...s.aspx?search= FR0010149302 &type=
    et on tombe sur une page avec les occurrences trouvées en l'occurrence une seule

    quand on clique sur cette occurrence on arrive enfin sur la page

    donc si tu veux continuer a travailler avec les isin tu va devoir faire 2 requête pour cette page
    la première pour trouver le lien la deuxième pour y aller
    A oui c'est une bonne piste que je vais examiner demain même si cette histoire de double requête me parait être au delà de mes capacités actuelles de programmeur, enfin je n'ai pas encore essayé on verra. J'aimerai dans un premier temps réussir à récupérer la valeur et la devise pour les intégrer dans les colonnes F et G pour voir si le code tourne bien déjà pour ces manipulations "simples".

    Sinon pour les ISIN ça ne me dérange pas de ne pas travailler avec mais cela serait quand même plus pratique et plus homogène car l'ISIN est un numéro unique normé utilisé avec tous les sites (pour Bloomberg, je n'avais pas trouvé les ISIN donc je suis parti sur les Tickers pour l'instant mais l'ISIN serait aussi préférable). Après peut-être est il possible d'avoir une fonction VBA qui convertisse l'ISIN entré avec les id qui sont propres à Morningstar il me faudrait alors peut être une base de donnée ou un équivalent?

  18. #38
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    Après peut-être est il possible d'avoir une fonction VBA qui convertisse l'ISIN entré avec les id qui sont propres à Morningstar il me faudrait alors peut être une base de donnée ou un équivalent?
    je viens de te le dire comment faire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #39
    Candidat au Club
    Homme Profil pro
    Chef de projet
    Inscrit en
    Avril 2015
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 49
    Points : 4
    Points
    4
    Par défaut
    Merci Patrick,

    Alors grâce à ta piste et à l'espion IE j'ai compris en théorie comment faire.



    Du coup je me lance dans un début de programmation que voici. (code incomplet car j'ai déjà une erreur donc j'ai arrêté)

    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
    Option Base 1
    Function RecuperationMorningstar(iSin)
     
        Const priX = "td class=""msDataText searchLink"">"
        Dim tablo(1, 2)
        Dim oHttp As Object, txt$, i&, j&
     
        On Error Resume Next
     
        Set oHttp = CreateObject("MSXML2.XMLHTTP")
        If Err <> 0 Then Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
        If oHttp Is Nothing Then MsgBox "MSXML2.XMLHTTP not found", 16, "Error": Exit Function
        On Error GoTo 0
     
    '1ere étape, récupérer l'iD morningstar à partir de l'ISIN
     
        With oHttp
            .Open "GET", "http://www.morningstar.fr/fr/funds/SecuritySearchResults.aspx?type=ALL&search=" & iSin, False
            .send
            txt = .responseText
            i = InStr(1, txt, priX, 1)
     
    '(...)
     
    '2ème étape, récupérer la valeur et la devise à partir de l'iD morningstar
     
    '(...)            
     
    End Function
     
    '------------------------------------------------------------------------------------------
    Sub test2()
        For i = 6 To Cells(Rows.Count, 3).End(xlUp).Row
            Range(Cells(i, 6), Cells(i, 7)) = IIf(Cells(i, 3) <> "", RecuperationMorningstar(Cells(i, 3)), "")
        Next
    End Sub
    J'ai une erreur "erreur de compilation constante requise sur "priX" en ligne 21 que je n'arrive pas à comprendre puisque je l'ai déclarée en ligne 4.

    D'autre part, je me demande si le code en ligne 31 va fonctionner puisque j'ai ajouté d'autres tableaux sous le premier sur ma feuille Excel (voir ci-après).

    Nom : Capture.PNG
Affichages : 897
Taille : 88,1 Ko

    Avez-vous des pistes pour résoudre cette erreur ?

  20. #40
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    wahouh!! t'é un furieux toi
    tu répète exactement ce que je t'ai dis (a propos des deux requête)

    le mieux c'est que tu mette en pièce jointe un exemplaire avec seulement les donné non confidentielle

    la colonne 1 et 3 pour les blomberg

    et la colonne utile (titre et isin pour les morningstar

    on va pas y arriver , on va passer un temps fou a ce comprendre et j'ai pas envie de recommencer ce que j'ai fait avec un autre
    va y envoie la patate
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Récupération de données sur page distante
    Par depelek dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 27/04/2010, 15h10
  2. récupération données depuis page web
    Par Elay dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/01/2008, 08h35
  3. récupération de données sur page dynamique
    Par jpconrad dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/06/2007, 20h40
  4. récupération données de page à page
    Par Hisander dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2007, 11h22
  5. Excel et données sur site internet
    Par jevany dans le forum Excel
    Réponses: 3
    Dernier message: 16/03/2007, 23h46

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