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
| Sub refresh_portefeuille()
Dim W As Worksheet: Set W = Worksheets("Portefeuille")
Dim groupeticker As String, URL As String, Resp As String, X As New WinHttpRequest, ligne As Variant, Valeur As Variant,ind as long,plage as range
With W
If .Cells(6, 1) = "" Then Exit Sub
Set plage = .Range(.Cells(6, 1), .Cells(Rows.Count, 1).End(xlUp))
groupeticker = Join(Application.Transpose(plage), "+")
End With
URL = "http://finance.yahoo.com/d/quotes.csv?s=" & groupeticker & "&f=snc4yl1d"
X.Open "GET", URL, False
X.send
Resp = Replace(X.responseText, Chr(34), "")
ligne = Split(Resp, Chr(10))
For i = 0 To UBound(ligne)
If InStr(ligne(i), ",") > 0 Then
Valeur = Split(ligne(i), ",")
Debug.Print UBound(Valeur)
m = 6 + i
'm saute d'une ligne a chaque tour
'si il y a plus de 6 element alors ind=1 sinon zero que l'on ajoute a l'index lors de la retranscription dans w.cells.......
ind = IIf(UBound(Valeur) > 5, 1, 0)
'pour le premier si ind=1 alors lacelluelem,2 aura valeur1 et 2
'pour les autres si ind = 1 alors on ajoute a l'index (=valeur(X +ind))
W.Cells(m, 2).Value = Replace(Valeur(1) & IIf(UBound(Valeur) > 5, Valeur(2), ""), Chr(34), "")
W.Cells(m, 4).Value = Replace(Valeur(2 + ind), Chr(34), "")
W.Cells(m, 5).Value = Valeur(3 + ind)
W.Cells(m, 9).Value = Valeur(4 + ind)
W.Cells(m, 13).Value = Valeur(5 + ind) 'pb sur cette valeur, affiche le rendement et le deuxieme nom du code mnémo
End If
Next i
W.Cells.Columns.AutoFit
End Sub |
Partager