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

VB.NET Discussion :

Depuis VB 2008 lancer Excel et récupérer des résultats de fonction Bloomberg


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2008
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Depuis VB 2008 lancer Excel et récupérer des résultats de fonction Bloomberg
    Bonjour à tous,

    Je dois développer une application en Visual Basic compilé qui doit rechercher des cours de devises à travers Bloomberg. N'ayant pas trouvé moyen d'utiliser les API de Bloomberg avec Visual Studio, j'ai choisi d'utiliser la fonction Bloomberg d'Excel 2007 =BDP().

    Pour cela j'ai conçu un classeur "Loader.xls" que j'alimente avec les variables A et B et la formule =BDP(A,B). En ouvrant ce classeur directement avec Excel 2007 la formule fonctionne très bien.

    Mon problème est que depuis Visual Basic 2008, en activant Excel et en ouvrant le même classeur, les fonctions Bloomberg ne sont plus accessibles !
    J'ai fait le test en laissant Excel 2007 visible et à ma grande surprise l'assistant Fx ne me montre plus le groupe de fonctions Bloomberg.

    C'est peut-être bien un détail qui m'échappe mais si quelqu'un avait une idée j'en serais ravi...

    Merci d'avance

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
        Public Sub TestBloombergExcel_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ExcelLink = New Excel.Application
            ExcelLink = New Excel.Application
            ExcelFileName = "C:\PMS\FunctionLoader.xls"
            ExcelSheet = "LoaderSheet"
            ExcelLink.Visible = True
            'ExcelLink.Visible = False
            ExcelWorkBook = ExcelLink.Workbooks.Open(ExcelFileName)
            ExcelWorkBook.Sheets(ExcelSheet).activate()
        End Sub
     
        Public Sub BtnExec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnExec.Click
            Dim Fx_value As String
            Dim Result As VariantType
            Dim ResultNumeric As Double
            Dim ResulText As String
            Dim ResultError As Boolean
            Dim ExcelSymbolError As String
            Fx_value = CType(Formula_text.Text, String)
            ResultNumeric = 0
            ResulText = ""
            Result_Text.Text = ""
            ResultError = False
            ExcelSymbolError = ""
            Fx_value = FormulaAddLineNumber(Fx_value, 1, True)
            With ExcelLink
                .Range("A1:Z200").ClearContents()
                .Cells(1, 1).value = "A"
                .Cells(1, 2).value = "B"
                .Cells(1, 3).value = "C"
                .Cells(1, 4).value = "D"
                .Cells(1, 5).value = "E"
                .Cells(1, 6).value = "F"
                .Cells(1, 7).value = "Formula"
                .Cells(2, 1).value = ColA_text.Text
                .Cells(2, 2).value = ColB_text.Text
                .Cells(2, 3).value = ColC_text.Text
                .Cells(2, 4).value = ColD_text.Text
                .Cells(2, 5).value = ColE_text.Text
                .Cells(2, 6).value = ColF_text.Text
                .Cells(2, 7).formula = Fx_value
                If .iserror(.Cells(2, 7)) Then
                    ResultError = True
                Else
                    ResultError = False
                End If
                Result = .Cells(2, 7).value
                If IsNumeric(Result) Then
                    ResultNumeric = .Cells(2, 7).value
                Else
                    ResulText = .Cells(2, 7).value
                End If
            End With
            If ResultError Then
                MsgBox("Your Excel formula contains errors !")
                ExcelSymbolError = "Unknow"
                If Result = -2146826281 Then ExcelSymbolError = "#DIV/0!"
                If Result = -2146826273 Then ExcelSymbolError = "#VALUE!"
                If Result = -2146826246 Then ExcelSymbolError = "#N/A"
                If Result = -2146826259 Then ExcelSymbolError = "#NAME?"
                Check_Text.Text = ExcelSymbolError
            Else
                Check_Text.Text = ""
                If IsNumeric(Result) Then
                    Result_Text.TextAlign = HorizontalAlignment.Right
                    Result_Text.Text = ResultNumeric
                Else
                    Result_Text.TextAlign = HorizontalAlignment.Left
                    Result_Text.Text = ResulText
                End If
            End If
            ExcelLink.ActiveWorkbook.Save()
        End Sub
        Private Sub Formula_text_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Formula_text.Leave
            If Mid(Formula_text.Text, 1, 1) <> "=" Then
                MsgBox("First character of a formula must be '=' !")
                Formula_text.Select()
            End If
        End Sub
     
        Public Sub BtnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnClose.Click
            ExcelLink.Workbooks.Close()
            System.Threading.Thread.Sleep(1)
            ExcelLink.Quit()
            Close()
        End Sub

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    1-il ya un forum VB.nET
    2 pourquoi 2 d'instances d'objet Excel sont crées ?
    3-as-tu mis un breakpoint sur la ligne de création d'un objet Excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.Threading.Thread.Sleep(1)
    Tu n'as pas tout précisé : y-a-t-il utilsation de thread ?

    Question bête : c'est pas possible d'utiliser directement les fonctions de Bloomberg dans l'appli VB2008 ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2013, 19h17
  2. [XL-2003] récupérer des valeurs en fonction de caractères
    Par doudou8mc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/09/2009, 09h31
  3. [MySQL] Récupérer des résultats de requêtes
    Par mouaa dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/03/2008, 11h02
  4. [MySQL] Récupérer des données en fonction du posteur
    Par darkphenx dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 06/11/2006, 16h27
  5. Réponses: 2
    Dernier message: 27/07/2006, 07h46

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