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 :

" Invalid procedure call or argument


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut " Invalid procedure call or argument
    Bonjour à tous,

    Je souhaite faire tourner une macro me ramenant la valeur suivante "INTERVAL_PERCENT_CHANGE" à partir de :
    L'identifiant du fonds ( ETF) concerné "S3.Range(Cells(3, 76), Cells(3, 77)).Value",
    Dates de début et de fin "S3.Cells(i, 73).Value" et "S3.Cells(i, 74).Value"
    Devise "S3.Cells(2, 76).Value"
    à partir des API de Bloomberg Mais je reçois un doux message d'erreur " invalid procedure call or argument".
    J'ai vraiment tout essayé mais il y a surement quelque chose qui m'échappe.

    la ligne soulignée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(cells(4,76),cells(12,77)).value  msg.GetElement("securitydata").GetValue(0).GetElement("fieldData").GetElement("INTERVAL_PERCENT_CHANGE").Value
    Merci pour toutes vos réponses et éclairages. ci-dessous le code en entier


    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
    Sub ref_data()
     
     
    Dim session As blpapicomLib2.session
    Set session = New session
    session.Start
     
    Dim Service As blpapicomLib2.Service
    session.OpenService ("//blp/refdata")
    Set Service = session.GetService("//blp/refdata")
     
    Dim Request As blpapicomLib2.Request
    Set Request = Service.CreateRequest("ReferenceDataRequest")
     
     
     
    Request.Append "securities", "S3.Range(Cells(3, 76), Cells(3, 77)).Value"
    Request.Append "fields", "INTERVAL_PERCENT_CHANGE"
    Dim overrides As Element
    Set overrides = Request.GetElement("overrides")
    Dim override As Element
    Set override = overrides.AppendElment
    Dim i As Integer
    For i = 4 To 12
     
    Dim override1 As Element
    Set override1 = overrides.AppendElment
     
    override1.SetElement "fieldId", "Start_Date_Override"
    override1.SetElement "value", "S3.Cells(i, 73).Value" 'Replace date with the cell reference eg Range("B10").Value
     
    Dim override2 As Element
    Set override2 = overrides.AppendElment
     
    override2.SetElement "fieldId", "End_Date_Override"
    override2.SetElement "value", "S3.Cells(i, 74).Value" 'Replace date with the cell reference eg Range("A10").Value
     
    Dim override3 As Element
    Set override3 = overrides.AppendElment
     
    override3.SetElement "fieldId", "CRNCY"
    override3.SetElement "value", "S3.Cells(2, 76).Value" 'Replace EUR with the cell reference eg Range("A10").Value
     
     
    session.SendRequest Request
     
    Dim blpevent As blpapicomLib2.Event
    Dim it As blpapicomLib2.MessageIterator
    Dim msg As blpapicomLib2.Message
    Dim finalResponse As Boolean
    Do While finalResponse = False
     
        Set blpevent = session.NextEvent
        Set it = blpevent.CreateMessageIterator
     
        Do While it.Next
            Set msg = it.Message
                    If blpevent.EventType = RESPONSE Or blpevent.EventType = PARTIAL_RESPONSE Then
     
               range(cells(4,76),cells(12,77)).value  msg.GetElement("securitydata").GetValue(0).GetElement("fieldData").GetElement("INTERVAL_PERCENT_CHANGE").Value
     
     
            End If
     
            If blpevent.EventType = RESPONSE Then
                    finalResponse = True
            End If
     
        Loop
    Loop
    Next i
     
    End Sub

  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
    Salut,

    Bienvenue sur DVP

    en principe si tu as un poste bbg, tu as un support dédié pour les spreadsheets et les macros

    Tu nous sors un code pour ainsi dire non commenté donc on ne sait pas ce qu'il est sensé faire

    Il nous manquerait également tes propres objectifs
    je souhaite écrire une macro intégrant des API qui me ramène les données de bloomberg
    Un cas concret peut être ? Le cours d'ouverture d'une action ? d'une commo ? d'un métal précieux ?

    Ta demande est trop vague pour que l'on puisse te donner des pistes pertinentes sans taper à côté de la cible
    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
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut
    Bonjour Jean philippe, merci pour les remarques je vais modifier avec les informations plus precises

  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
    Salut,

    à deux reprises tu passes par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Request.Append "securities", "S3.Range(Cells(3, 76), Cells(3, 77)).Value"
    alors que ce que tu cherches n'est pas chaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "S3.Range(Cells(3, 76), Cells(3, 77)).Value"
    mais bien le contenu de la plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S3.Range(Cells(3, 76), Cells(3, 77)).Value
    aussi tu peux tester plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Request.Append "securities", S3.Range(S3.Cells(3, 76), S3.Cells(3, 77)).Value
    je t'ai corrigé le code en prévision d'un probable erreur 1004

    Même chose plus bas concernant ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    override1.SetElement "value", "S3.Cells(i, 73).Value"
    à corriger en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    override1.SetElement "value", S3.Cells(i, 73).Value
    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
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 4
    Par défaut
    Bonjour Jean Philippe,
    j'ai modifié comme indiqué mais cette fois je reçois un message "type mismatch"

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut

    Il ne te manquerait pas un "=" quelque part ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range(cells(4,76),cells(12,77)).value
    n'attend aucun paramètre

    essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range(cells(4,76),cells(12,77)).value = msg.GetElement("securitydata").GetValue(0).GetElement("fieldData").GetElement("INTERVAL_PERCENT_CHANGE").Value
    J'attire aussi ton attention sur le fait que tu ne précise pas le classeur et la feuille sur laquelle tu travailles. SI le traitement est long et que l'utilisateur active un autre classeur ou une autre feuille, les données seront inscrite sur celui-ci, écrasant au passage leur contenu.

    Citation Envoyé par mariebasile Voir le message
    j'ai modifié comme indiqué mais cette fois je reçois un message "type mismatch"
    Peux-tu préciser sur quelle ligne? toujours la même ?
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Problème d'ouverture de fichier avec des API
    Par Serge_BDD dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/09/2014, 11h26
  2. [XL-2013] Activer une macro avec des CheckBox
    Par isrdum dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/08/2014, 10h58
  3. [Toutes versions] Affecter un bouton à une macro avec des paramètres
    Par nerixm dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/03/2011, 14h47
  4. Macro avec des accents
    Par ceweb dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/11/2008, 17h40
  5. Macro avec des ". . ."
    Par vanitom dans le forum MFC
    Réponses: 5
    Dernier message: 09/10/2008, 14h35

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