Recupp cours de bourse dans Excel

padon ce n'est pas le PER le problême , celui -ci fonctione il n'est pas en %

c'est le RENDEMENT

image

Quelle valeur de rendement ? les 3

Là tu tombes sur un cas intéressant ... dans html il s'agit d'un tableau que l'on peut récupérer par powerquery ou directement par ceci ... https://www.excel-pratique.com/fr/telechargements/macros/tables-html-site-excel-no432

et notamment la table 3

... mais pour rester classique et ne pas t'embrouiller, tu peux mettre ceci

Sub ESSAI()

    i = 2
        DoEvents
        URL = Range("A2")
        With CreateObject("MSXML2.XMLHTTP")
            .Open "GET", URL, False
            .Send
            If .Status = 200 Then
                donnee = .responsetext

                avant = "<td class=""c-table__cell c-table__cell--dotted c-table__cell--inherit-height c-table__cell--align-top / u-text-left u-text-right u-ellipsis"">"
                apres = "</td>"
                indice = 4
                donnee = Split(Split(donnee, avant)(indice), apres)(0)

                donnee = Val(Replace(donnee, "%", ""))

                Range("B2") = donnee & "%"
            End If
        End With

End Sub

avec indice 4 pour le réalisé 2019, 5 pour estimation 2020 etc.

capture d ecran 734

Une fois tout ceci digéré, je te montrerai comment simplifier tes macros ...

Bonjour,

c'est très claire pour moi merci Steelson.

je vais bosser la dessus et je te dis ça.

Dans un deuxième temps et maintenant que je comprends un peu mieux la syntaxe je vais faire une copie de mon fichier et essayer de travailler en powerquery pour comprendre aussi cette méthode que tu conseille.

En dehors du côté purement technique entre une macro et powerquery est ce qu'il y a une différence de vitesse dans le chargement des informations dans le classeur ? Ou est ce juste une autre façon de travailler qui est plus propre ou plus simple mais qui ne change pas la vitesse de chargement des infos dans un fichier ?

Merci encore pour le temps consacré et ton aide aportée

Ps : dans plusieurs files de discution tu parle de mettre un coeur ( que c'est votre seul salaire :-) pour reprendre ta phrase ...) il est où le coeur ?

Dans un deuxième temps et maintenant que je comprends un peu mieux la syntaxe je vais faire une copie de mon fichier et essayer de travailler en powerquery pour comprendre aussi cette méthode que tu conseille.

En dehors du côté purement technique entre une macro et powerquery est ce qu'il y a une différence de vitesse dans le chargement des informations dans le classeur ? Ou est ce juste une autre façon de travailler qui est plus propre ou plus simple mais qui ne change pas la vitesse de chargement des infos dans un fichier ?

En dehors de la récupération, de tableaux, je ne connais pas assez powerquery pour te répondre. Il faut qu le site web soit structuré de façon plus simple et ce n'est plus le cas de plus en plus.

La méthode split est souvent la plus rapide avec le web.

ca fonctione nickel , je l'ai mis au même format que les autres du coup :-)

avant = "<td class=""c-table__cell c-table__cell--dotted c-table__cell--inherit-height c-table__cell--align-top / u-text-left u-text-right u-ellipsis"">"
apres = "</td>"

On Error Resume Next
For i = 2 To k
DoEvents
ReDim rendc(1 To k, 1 To 1)
URL = Cells(i, [www].Column).Value
Application.StatusBar = "Mise à jour des rendements 2021 en cours …"
On Error Resume Next
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.Send
If .Status = 200 Then
donnee = .responsetext

avant = "<td class=""c-table__cell c-table__cell--dotted c-table__cell--inherit-height c-table__cell--align-top / u-text-left u-text-right u-ellipsis"">"
apres = "</td>"
indice = 4
donnee = Split(Split(donnee, avant)(indice), apres)(0)

donnee = Val(Replace(donnee, "%", ""))

End If
End With
Application.StatusBar = False
Cells(i, [rend2k21].Column).Value = donnee & "%"


Next

maintenant que grace a toi tout fonctione je vais creuser un peu quelques détails , la valorisation ne fonctione pas sur toutes les valeurs , MICROSOFT fonctione , HERMES ne renvois rien

c'est le fait qu'elle soit en MEUR qui le perturbe , les autres sont en MUSD cela fonctionent , c'est surprenant puisque je lui indique nul part de faire une diférence

arf c'est vraiment compliqué leur truc !! la position pour les valeurs en MUSD est à 6 et pour les MEUR elle est a 8 , donc je dois faire un bloc diférent pour chaque

avant = "<p class=""c-list-info__value u-color-big-stone"">"
apres = "/p"

On Error Resume Next
For i = 2 To k
DoEvents
ReDim VALOR(1 To k, 1 To 1)
VALOR(1, 1) = Cells(i, [valorisation].Column).Value
URL = Cells(i, [www].Column).Value
Application.StatusBar = "Mise à jour de la valorisation en cours …"
On Error Resume Next
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", URL, False
.Send
If .Status = 200 Then VALOR(i, 1) = Val(Split(Split(.responsetext, avant)(8), apres)(0))
End With
Application.StatusBar = False
Cells(i, [valorisation].Column).Value = VALOR(i, 1)

Next

Quand tu écris le code, utilise la balise </> qui se trouve au-dessus du rectangle de réponse pour plus de lisibilité

salut Steelson,

juste pour ton information

sur certaine valeurs "avant 8 " te sors le résultat , sur d'autre le résultat se trouve en "avant 6" , sur une autre encore "avant 7"

ce n'est pas en rapport avec le type de valeur ( USD, EURO, 3 chiffre, 4 chiffres ...etc ..) c'est tout simplement lié au fait que les pages de Boursorama ne sont pas toute structurées de la même manière , ou plutôt si, mais il doit manquer des tableaux dans certaines pages par rapport aux autres et du coup pour une même info en fonction de la page on est obligé de changer le AVANT car les indices sont décalés.

en pièce jointe un petit fichier pour visualiser facilement le problème

pour ma part cette valeur ne m’intéresse pas vraiment , elle me servais seulement à comprendre ton écriture des Macros :-) et toutes les autres valeurs fonctionne grasse à ton aide :-)

je voulais juste le signaler au cas ou cela arriverait par la suite pour d'autres personnes

24valorisation.xlsm (18.77 Ko)

Je ne suis pas d'accord,

quelque soit sa position et son unité de valeur, j'obtiens bien sa valeur

93valorisation.xlsm (16.71 Ko)

et avec les 2 solutions proposées plus haut du reste !

https://forum.excel-pratique.com/excel/recupp-cours-de-bourse-dans-excel-77216/12#p890957

https://forum.excel-pratique.com/excel/recupp-cours-de-bourse-dans-excel-77216/12#p891051

oui je suis d'accord avec toi , je parlais de la façon utilisée dans le fichier exemple que j'ai mis et qui utilise le code d'origine de ce sujet , avant que tu ne fasse des modifs dans le code qui ont réglés le problême

Rechercher des sujets similaires à "recupp cours bourse"