Cours de Bourse dans feuille Excel

Bonjour,

J'ai un problème avec ce fichier VBA je n'arrive plus a récupérer les cours de Bourse

savez

vous ou cela bloque

Merci par avance

Cdt

CHY

Hé oui !! Bousorama a fait évoluer son site ...

Nouveaux paramètres dans la macro

Merci beaucoup pour votre retour rapide

Cela marche Nickel pour les Cours avec Code ISIN, il me reste plus qu'un petit problème sur le Cours €uros/£ivres

Vous trouverez ci-joint le fichier

Merci par avance de votre aide

Cdt

CHY

73barclays.xlsm (24.26 Ko)

Ton fichier est partiellement masqué, donc je n'ai pas approfondi.

En modifiant les paramètres

avant = "</h1><div class=""c-faceplate__info""><div class=""c-faceplate__values""><div class=""c-faceplate__price c-faceplate__price--inline""><span class=""c-instrument c-instrument--last"" data-ist-last>"
apres = "</span>"

est-ce que cela répond à ton problème ?

50barclays.xlsm (24.44 Ko)

Oui et non

Car j'ai bien la Valeur €/£ mais je n'ai plus la Valeur de l'action par elle même

Barclays https://www.boursorama.com/cours/1uAV..L/

£ Sterling https://www.boursorama.com/bourse/devises/taux-de-change-euro-livresterling-EUR-GBP/ 0,8605

Voici le fichier avec toutes les lignes & Colonnes

Merci par avance

37barclays-1.xlsm (24.22 Ko)

En effet, les paramètres ne sont plus les mêmes

J'ai donc pris une solution hybride, à terme on pourrait simplifier la macro.

Sub MajCotations()
Dim i%, k%, URL$, COT
k = Cells(Rows.Count, [REF].Column).End(xlUp).Row
Range(Cells(2, [Cotation].Column), Cells(k, [Cotation].Column)).Clear

On Error Resume Next
i = 4
avant = "</div><div class=""c-ticker__item c-ticker__item--value"">"
apres = "<span class=""c-ticker__currency"">"

    DoEvents
        ReDim COT(1 To k, 1 To 1)
        COT(1, 1) = Cells(i, [Cotation].Column).Value
        URL = Cells(i, [WWW].Column).Value
    Application.StatusBar = "Mise à jour des cotations en cours …"
    On Error Resume Next
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        If .Status = 200 Then COT(i, 1) = Val(Split(Split(.responseText, avant)(1), apres)(0))
    End With
    Application.StatusBar = False
        Cells(i, [Cotation].Column).Value = COT(i, 1)

i = 5
avant = "</h1><div class=""c-faceplate__info""><div class=""c-faceplate__values""><div class=""c-faceplate__price c-faceplate__price--inline""><span class=""c-instrument c-instrument--last"" data-ist-last>"
apres = "</span>"

    DoEvents
        ReDim COT(1 To k, 1 To 1)
        COT(1, 1) = Cells(i, [Cotation].Column).Value
        URL = Cells(i, [WWW].Column).Value
    Application.StatusBar = "Mise à jour des cotations en cours …"
    On Error Resume Next
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", URL, False
        .Send
        If .Status = 200 Then COT(i, 1) = Val(Split(Split(.responseText, avant)(1), apres)(0))
    End With
    Application.StatusBar = False
        Cells(i, [Cotation].Column).Value = COT(i, 1)

End Sub
145barclays-1.xlsm (24.94 Ko)

Bonjour,

Je suis en train de me bricoler un classeur avec pour base (entre autre) des bouts de code récupérés sur ce sujet (je n'ai jamais fait de VBA jusque là).

J'arrive à peu près à faire ce que je voulais mais malgré mes recherches je bloque sur un point: comment et où sont déclarés les noms de colonnes?

Par exemple ici:

Range(Cells(2, [Cotation].Column), Cells(k, [Cotation].Column)).Clear

Je pensais que c'était des noms de colonnes de tableaux mais il semble que non et je n'arrive pas à faire la même chose pour sélectionner les colonnes de mes autres tableaux.

Bonjour,

en fait, j'ai déclaré une cellule comme étant Cotation, et ensuite j'en déduis le numéro de colonne en prenant [Cotation].Column, le numéro de colonne est donc celui où se trouve la cellule nommée Cotation

Merci.

Je regarderai çà demain mais mon but était d'avoir un code un peu plus "robuste" en cas de suppression de colonne. L'utilisation de références structurées me semble lourd et complexe, je pense donc laisser tomber l'idée.

Merci!

Je viens de regarder et en fait cela répond à ce que je veux faire, en cas d'ajout/suppression de colonne le nom suit et cela pourra m'éviter de planter le fonctionnement de mes macros.

Bonjour,

J'ai simplifié à l'extreme un des fichiers ci-dessus (basé sur Barclays) pour juste me concentrer sur la facon de récupérer le cours de bourse.

Ca marche bien pour la première ligne (exemple avec Danone), mais ça ne marche pas pour les lignes supplémentaires.

Je ne sais pas comment faire en sorte que la macro soit pris en compte sur les différentes lignes.

Quelqu'un qui s'y connait un petit peu pourrait il avoir la gentillesse de m'expliquer ?

Merci par avance,

Cotp

Edit: j'ai supprimé le fichier car j'ai trouvé la réponse sur le forum ici

https://forum.excel-pratique.com/viewtopic.php?p=743065#p743065

Bonjour à tous et merci de votre aide

j ai essayé de récupérer avec votre fichier d 'exemple des cours de bourses avec Boursorama

Cela fonctionne avec des valeurs FR mais pas avec LU

est il possible de pouvoir faire cette opération?

141test-bourses.xlsm (17.69 Ko)

Un grand merci et mon fichier en pièces jointe

Bonjour, et

la page n'a pas la même structure, la valeur n'est pas encadrée par les mêmes termes

capture d ecran 468
317test-bourses.xlsm (18.25 Ko)

Un merci pour votre réactivité, c est très gentil

Bonne fin de journée

Bonjour,

Merci pour votre aide j'étais sur PC Microsoft et suis passé sur Mac Book Air et vous m'aviez fait une superbe Macro récupérant les cœurs de bourse sur Boursorama

Celle-ci ne marche pas sur mon Mac, auriez vous une explication y'a til quelque chose a changer dans la Macro et ci oui pourriez vous le faire étant complétement nus sur ce sujet

Merci par avance de votre aide

CHY

102long-terme-2021.xlsm (48.87 Ko)

Bonjour,

c'est lié à ceci, incompatible avec mac

With CreateObject("MSXML2.XMLHTTP")

je ne connais pas la commande pour mac.

Par contre, si tu utilisais Google Sheets, je pourrais t'aider (GSheets est mieux fait pour cela).

Rechercher des sujets similaires à "cours bourse feuille"