Bonjour à tous,
vraissembablement le résultat d'une formule insérée dans une cellule X ne peux renvoyer de resultat que dans cette même cellule X (j'exclue le cas des arrays formulae qui ne m'interesse pas)
Mais (il y a toujours un mais), la fonction bdh de la xla fournie par blooomberg à ses utilisateurs semble y parvenir :
la formule
=BDH("USSA30 Curncy","PX_LAST","9/16/2009","10/16/2009","Dir=V","Dts=S","Sort=A","Quote=C","QtTyp=Y","Days=T","Per=cd","DtFmt=D","UseDPDF=Y","cols=2;rows=23")
tapée en A1 change la cellule A1 mais aussi B1 ,et un certain nombre de cellules dépendant des dates entrées en paramètre, en dessous d'A1 ET B1
voyez vous comment ils procedent? ( la xla est bien sur protégée par un mot de passe)
voici le code que j'essaie d'exécuter
cette partie fait planter la fonction qui me renvoie #value dans la cellule active
merci d'avance pour votre aide
vraissembablement le résultat d'une formule insérée dans une cellule X ne peux renvoyer de resultat que dans cette même cellule X (j'exclue le cas des arrays formulae qui ne m'interesse pas)
Mais (il y a toujours un mais), la fonction bdh de la xla fournie par blooomberg à ses utilisateurs semble y parvenir :
la formule
=BDH("USSA30 Curncy","PX_LAST","9/16/2009","10/16/2009","Dir=V","Dts=S","Sort=A","Quote=C","QtTyp=Y","Days=T","Per=cd","DtFmt=D","UseDPDF=Y","cols=2;rows=23")
tapée en A1 change la cellule A1 mais aussi B1 ,et un certain nombre de cellules dépendant des dates entrées en paramètre, en dessous d'A1 ET B1
voyez vous comment ils procedent? ( la xla est bien sur protégée par un mot de passe)
voici le code que j'essaie d'exécuter
Code:
Function GetData(sStartDate As String, sEndDate As String, sTenor As String, sUnderlying As String, sCurrency As String) As Variant
Dim Cn As ADODB.Connection
Dim CP As ADODB.Command
Dim Rs As ADODB.Recordset
Dim connectionString As String
Dim SQLQuery As String
Dim i As Integer
Dim oRec As ADODB.Recordset 'Objet Recordset SQL Server
Dim vValues As Variant
Dim raCell As Range
Set raCell = ActiveCell
'Connexion au serveur
connectionString = "DSN=" & "MarketParams" & ";UID=" & "" & ";PWD=" & "" & ";"
Set Cn = New ADODB.Connection
Set CP = New ADODB.Command
Set Rs = New ADODB.Recordset
With Cn
.connectionString = connectionString
.CursorLocation = adUseClient
.Open
End With
'Recuperation Data
sStartDate = Format(sStartDate, "YYYY-MM-DD")
sEndDate = Format(sEndDate, "YYYY-MM-DD")
With CP
.ActiveConnection = Cn
SQLQuery = "Select Date, Value From 'main'.'test' where date>='" & sStartDate & "' and date<='" & sEndDate & "' and tenor = '" & sTenor & "' and Underlying = '" & sUnderlying & "' and Currency = '" & sCurrency & "'"
.CommandType = adCmdText
.CommandText = SQLQuery
Set oRec = Cn.Execute(SQLQuery, adCmdText)
End With
If oRec.RecordCount <> 0 Then
vValues = oRec.GetRows
vValues = Application.Transpose(vValues) '"Data:"
GetData = vValues
For i = LBound(vValues, 1) To UBound(vValues, 1)
raCell.Offset(i + 1 - LBound(vValues, 1), 0).Value = vValues(i, 1)
raCell.Offset(i + 1 - LBound(vValues, 1), 1).Value = vValues(i, 2)
Next i
Else
GetData = "#N/A Data not found"
End If
'Close ADO objects
Cn.Close
Set Cn = Nothing
Set Rs = Nothing
Set CP = Nothing
End Function
cette partie fait planter la fonction qui me renvoie #value dans la cellule active
Code:
For i = LBound(vValues, 1) To UBound(vValues, 1)
raCell.Offset(i + 1 - LBound(vValues, 1), 0).Value = vValues(i, 1)
raCell.Offset(i + 1 - LBound(vValues, 1), 1).Value = vValues(i, 2)
Next i
merci d'avance pour votre aide
Dernière édition: