excelentille
XLDnaute Nouveau
Bonjour !
J'essaie de mettre en oeuvre une fonction glanée sur un forum, censée faire très précisément ce que je cherche.
Il s'agit d'une fonction qui vise à récupérer un taux de change depuis une plateforme en ligne, en fonction d'une date donnée.
Elle fait appel, entre autre, à la création d'objets, et la récupération de données depuis le web.
Je ne dispose pas davantage d'infos sur sa mise en oeuvre, et ne suis pas familier de ce genre de macros.
Puisqu'il est question d'objets, j'ai créé la fonction ci-dessous dans un module de classe (j'ai cru comprendre que c'était nécessaire lorsqu'on fait appel à des objects) :
Puis, je l'appelle depuis le bloc d'instructions suivant, dans ThisWorkbook :
Bref... Je ne sais pas si mon "agencement" est le bon, mais le fait est qu'à l'exécution de la macro, j'obtiens un cinglant "/!\ Objet requis", sans code d'erreur.
Un petit coup de main serait le bienvenu !
Merci
J'essaie de mettre en oeuvre une fonction glanée sur un forum, censée faire très précisément ce que je cherche.
Il s'agit d'une fonction qui vise à récupérer un taux de change depuis une plateforme en ligne, en fonction d'une date donnée.
Elle fait appel, entre autre, à la création d'objets, et la récupération de données depuis le web.
Je ne dispose pas davantage d'infos sur sa mise en oeuvre, et ne suis pas familier de ce genre de macros.
Puisqu'il est question d'objets, j'ai créé la fonction ci-dessous dans un module de classe (j'ai cru comprendre que c'était nécessaire lorsqu'on fait appel à des objects) :
VB:
'DESCRIPTION: Get FX rates from OAndaFX based on a date
'SOURCE: https://www.reddit.com/r/excel/comments/4onnkq/exchange_rates_from_a_certain_date_automatically/
Function GetOandaFX(fromCurr As String, toCurr As String, AsofDate As Date) As String
Dim oHttp As Object
Dim sURL As String
Dim HTMLdoc As Object
Dim TDelements As Object
Dim TDelement As Object
' Create an XMLHTTP object
Set oHttp = CreateObject("MSXML2.XMLHTTP")
' get the URL to open
sURL = "https://www.oanda.com/currency/table?" _
& "date=" & AsofDate _
& "date_fmt=us" _
& "&exch=" & fromCurr _
& "&sel_list=" & toCurr _
& "&value=1&format=HTML&redirected=1"
' open connection and get website html
oHttp.Open "GET", sURL, False
oHttp.send
Set HTMLdoc = CreateObject("htmlfile")
With HTMLdoc
If oHttp.readyState = 4 And oHttp.Status = 200 Then 'readystate checks loading, status checks the validity of URL
' ' assign the returned text to a HTML document
.body.innerHTML = oHttp.responseText
Set TDelements = .getElementsByTagName("TD")
'Loop within Table elements
For Each TDelement In TDelements
If RateFound = True Then
GetOandaFX = TDelement.innerText
Exit For
End If
If TDelement.innerText = toCurr Then RateFound = True
Next
End If
End With
Set oHttp = Nothing
End Function
Puis, je l'appelle depuis le bloc d'instructions suivant, dans ThisWorkbook :
VB:
Sub GetChangeRates()
Dim fromCurrency As String
Dim toCurrency As String
Dim dateBill As Date
' Variables fixées, pour simplifier le test
fromCurrency = "EUR"
toCurrency = "USD"
dateBill = "1/1/2016"
' N2, la cellule où je souhaite récupérer le taux de change EUR/USD du 1/1/2016
Range("N2").Select
Exchange = Classe1.GetOandaFX(fromCurrency, toCurrency, dateBill)
ActiveCell.Value = Exchange
End Sub
Bref... Je ne sais pas si mon "agencement" est le bon, mais le fait est qu'à l'exécution de la macro, j'obtiens un cinglant "/!\ Objet requis", sans code d'erreur.
Un petit coup de main serait le bienvenu !
Merci