IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA & Requete Bloomberg


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut VBA & Requete Bloomberg
    Bonjour à tous,

    Je cherche à faire des requêtes dans Bloomberg dans une macro.
    Je voudrais que pour chaque "Fields", il me prenne un tableau de String et non une seule valeur à chaque fois, ca du coup il effectue à chaque fois une reqûete et ça ralention donc beaucoup le code.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub GetOptionsData()
    Dim i As Long, j As Long, nTotCount As Long, iMax As Long, nCnt As Long, vChainResult As Variant
    Dim objBloomberg As BlpData, strSec() As String
    Const offset As Integer = 10
    Dim vArrayFields(1 To 5) As String
    vArrayFields(1) = "OPT_EXPIRE_DT"
    vArrayFields(2) = "OPT_STRIKE_PX"
    vArrayFields(3) = "OPT_PUT_CALL"
    vArrayFields(4) = "BID"
    vArrayFields(5) = "ASK"
     
    Ticker = Range("Ticker")
    Range("B" & offset & ":AA" & Rows.Count).ClearContents
     
    Application.StatusBar = Ticker & " Subscription Status: Retrieving Option Chain Tickers"
    Set objBloomberg = New BlpData
    objBloomberg.Subscribe Ticker, 1, "OPT_CHAIN", Results:=vChainResult
    If IsArray(vChainResult) Then
    iMax = UBound(vChainResult, 1)
    For i = 0 To iMax
    ReDim Preserve strSec(UBound(vChainResult(i, 0), 1) + nTotCount)
    For nCnt = 0 To UBound(vChainResult(i, 0), 1)
    strSec(nTotCount) = vChainResult(i, 0)(nCnt, 0)
    nTotCount = nTotCount + 1
    Cells(i + offset, 1) = strSec(i)
    Next nCnt
    Next i
     
    Cells(i + offset, 1) = strSec(i)
    DoEvents
    Application.StatusBar = Ticker & " Subscription Status: Retrieving Data for " & strSec(i) & " (" & i & _
    " of " & UBound(strSec) - LBound(strSec) & ")"
    objBloomberg.Subscribe strSec(i), i + 1, vArrayFields, monitor:=True, Results:=vbData
    For j = 1 To UBound(vArrayFields)
    Cells(i + offset, j + 1) = vbData(0, j - 1)
    Next j
    vbData = vbEmpty
    Next i
     
    End If
     
    End Sub
    Le bout de code que je voudrais changer est donc celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.StatusBar = Ticker & " Subscription Status: Retrieving Data for " & strSec(i) & " (" & i & _
    " of " & UBound(strSec) - LBound(strSec) & ")"
    objBloomberg.Subscribe strSec(i), i + 1, vArrayFields, monitor:=True, Results:=vbData
    Au lieu de prendre une valeur de strSec, je voudrais qu'il prenne l'ensemble de strSec.

    Dans excel ceci est posssible via la formule :
    =BDP(F17:F19,G16)


    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut

    peux-tu nous dire ce qu'il y a dans tes cellules avec ta formule, parce qu'autant la fonction subscribe de la blpdata se fait ticker par ticker, j'ai du mal à saisir ta question
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Les cellules F17:F19 contiennent des tickers d'options et la range("G16") contient le "field" comme par exmple "BID"

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ok,

    il est toujours possible de gérer les formules par le code hein

    La souscription à un ticker via VBA, je n'ai jamais utilisé autre chose que le "un par un".

    POur que ca "prenne" moins de temps, on peut toujours freezer l'écran (pas de mise à jour du statusbar par exemple)...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 46
    Par défaut
    Mais je ne veux pas utiliser ces formules, car sur des indices par exemple où il y a 3000 ligne d'options listées, les données sont beaucoup trop long à s'actualiser via ces formules (plus d'une minute), d'où ma volonté de faire un requête directe dans Bloom.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Ok, donc tu es bien obligé de passer par le VBA et de subir la lenteur du requêtage

    Rien ne t'empeche de recreer la fonction BDP en code, avec une boucle for each derriere. Mais on ne peut pas faire grand chose pour améliorer le temps de réponse de BBG de ce point de vue la
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. Réponses: 31
    Dernier message: 28/04/2006, 11h09
  2. [VBA-E] Requete SQL incluant des donnees provenant de cells
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2006, 18h16
  3. [VBA-E]requete sous excel
    Par isa21493 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/02/2006, 10h50
  4. [Vba + Excel] requete rechercher en vba
    Par Emcy dans le forum Access
    Réponses: 2
    Dernier message: 14/11/2005, 09h38
  5. (VBA-A] Requete access sous VBA
    Par vanima dans le forum VBA Access
    Réponses: 12
    Dernier message: 20/07/2004, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo