Recupp cours de bourse dans Excel

dans ce cas il faut que tu passe par une macro . regarde sur les premiers post de ce sujet , Steelson en à mis à dispo quelques une et elles te permetrons de récuperer l'info que tu cherche sur la page

Bonjour Steelson ,

te serait-il possible de me donner le code pour extraire le tableau " EVOLUTION DES PREVISIONS " sur la même page boursorama que celle des cotations ?

la page que j'intéroge :

https://www.boursorama.com/cours/ARLP/

la balise que je tente d'extraire :

<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">

2.15

<span class="c-table-evolution__suffix">USD</span>

</td>

j'utilise ta macro précédente ( cotations ) et je remplace le avant et apres , mais ca ne fonctione pas

merci

Sub MajCotations()

Sheets("RENDEMENTS").Select

Dim i%, k%, URL$, COT

k = Cells(Rows.Count, [REF].Column).End(xlUp).Row

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

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 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 rendements 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)

Next

Sheets("RENDEMENTS").Select

ActiveWorkbook.RefreshAll

End Sub

Steelson ,

j'ai réussi

par contre pour aller plus loin j'aimerais prendre les 3 valeurs qui se suivent , et donc pas simplement remplir une colonne mais 2

la macro est elle capable de remplir plus que 1 colonne ?

merci

No problemo ... peux-tu me retourner le fichier que tu utilises, avec a minima une adresse du site ?

Salut Steelson , merci à toi , finalement j'ai fini par comprendre le fonctionemen t de ta macro , des variables , etc ... donc je devrais enfin etre autonome désormais , j'ai dupliquer les variables , les boucles , etc ... et maintenant tout fonctione avec plusieurs colonnes merci encore pour ton aide

Parfait ! content que tu deviennes autonome (c'est aussi le but d'un forum)

quoi que ...une petite question quand même ..

j'ai 3 valeurs à récuperer , les 3 portes le même non de balise :

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 = "</tr>"

elles sont les unes après les autres , voila la page :

https://www.boursorama.com/cours/FF11-ACKB/

du coup je ne récupere que le premier des 3 pour le moment car je cherche comment lui dire de ne pas tenir compte du premier

Le split va donner un tableau à plusieurs valeurs. Dans ce cas il faut faire évoluer les indices (1) (2) puis (3) das la fonction split.

j'ai réussi en passant par ce site , il a l'avantage d'avoir des années indiquées dans les balises et donc je remplit bien mes diférentes colonne en fonction de l'année

https://www.tradingsat.com/ageas-BE0974264930/dividende.html

c'est juste un peu chiant car je ne peu pas utiliser les liens de bourso déja renseigné dans la partie cotation

ca veut dire quoi évoluer les indices ?

With CreateObject("MSXML2.XMLHTTP")

.Open "GET", URL, False

.Send

If .Status = 200 Then REND(i, 1) = Val(Split(Split(.responseText, avant)(1), apres)(0))

End With

je vais rester sur le premier problême et faire evoluer le SPLIT , quand tu m'aura expliquer si tu veux bien

site intéressant ... on peut charger tous les tableaux d'une autre façon

trop d'infos tue l'info ! trop lourd pour moi , je prefere rester sur ton principe de départ à savoir creer un tableau avec SPLIT et extraire les infos

tu peux me dire comment faire ?

C'est "simple" ... on découpe avec split aussi, avec un indice i

texte = "<table" & Split(Split(.responseText, "<table")(i), "</table>")(0) & "</table>"

puis j'utilise le presse-papier pour coller le texte que je recopie dans un onglet (excel prend bien en compte le formatage d'une table html)

                obj.SetText txt
                obj.PutInClipboard
                ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
                ActiveSheet.Paste

simple !! lolll

voici le code pour le moment que j'utilise , il reprends bien sur 2 fois le même chiffre puisque je n'arrive pas a comprendre cette histoire de Split ...

Sub MajRendements()

Sheets("RENDEMENTS").Select

Dim i%, k%, URL$, COT, REND

k = Cells(Rows.Count, [REF].Column).End(xlUp).Row

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

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

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

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

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

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

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 COT(1 To k, 1 To 1)

COT(1, 1) = Cells(i, [div2k18].Column).Value

URL = Cells(i, [www].Column).Value

Application.StatusBar = "Mise à jour des dividendes 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, [div2k18].Column).Value = COT(i, 1)

Next

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 REND(1 To k, 1 To 1)

REND(1, 1) = Cells(i, [rend2018].Column).Value

URL = Cells(i, [www].Column).Value

Application.StatusBar = "Mise à jour des rendements en cours …"

On Error Resume Next

With CreateObject("MSXML2.XMLHTTP")

.Open "GET", URL, False

.Send

If .Status = 200 Then REND(i, 1) = Val(Split(Split(.responseText, avant)(1), apres)(0))

End With

Application.StatusBar = False

Cells(i, [rend2018].Column).Value = REND(i, 1)

Next

Sheets("RENDEMENTS").Select

ActiveWorkbook.RefreshAll

End Sub

boucle
Val(Split(Split(.responseText, avant)(1), apres)(0))

puis

Val(Split(Split(.responseText, avant)(2), apres)(0))

mince alors !! j'étais sur d'avoir déja éssayer

en tout cas ca fonctione impecable !

pour les montants en EURO c'est passé nickel , par contre il ne prend pas la ligne du dessous , les pourcentages , est ce toujours le même tableau ? j'ai mis un split numéro 4 mais la ca ne fonctionne pas

c'est un deuxieme tableau , comment je passe de l'un à l'autre ?

boucle

c'est bon ca fonctione , j'avais une erreur dans ma macro

Rechercher des sujets similaires à "recupp cours bourse"