Fonction dans une cellule qui change le contenu d'une autre cellule

pasko

XLDnaute Nouveau
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

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:

Discussions similaires

Réponses
2
Affichages
264