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 :

Msgbox si une des valeurs devient supérieure à une cible [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Msgbox si une des valeurs devient supérieure à une cible
    Bonjour à tous,
    Je lance cette discussion car dans le cadre de mon travail je dois programmer un outil d'aide à la gestion.
    Dans mon fichier, j'ai tout un tas de valeurs avec des variations en temps réel de cours sur les 15 dernières minutes. Mon objectif est de créer une macro qui surveille ces variations et qui ne se déclenche seulement quand une des valeurs passe au dessous ou au dessus d'une cible. Je n'ai pas de soucis pour le faire sur une cellule mais pour toute une colonne je ne vois pas d'autre solution qu'une boucle qui va ralentir fortement l’exécution...
    De même, depuis vba j'aimerai aller dans une autre application, par exemple, je suis dans VBA la macro active la fenêtre du programme (qui est déjà ouvert) et tape un texte? j'ai trouvé une solution en utilisant DDEExecute mais j'ai l'impression que c'est très lent, y aurait -il un moyen plus rapide ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Call_bloomberg_ticket_Buy()
    Dim ticker As String
    ticker = "RNO FP"
     
        BLP = DDEInitiate("Winblp", "bbk")
        Call DDEExecute(BLP, "<Blp-1>")
     
        Call DDEExecute(BLP, ticker & " <EQUITY>" & " XB <go>")
     
        Call DDETerminate(BLP)
    Auriez vous des pistes ?

    Merci par avance à tous !

  2. #2
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Bonjour,
    Mon objectif est de créer une macro qui surveille ces variations et qui ne se déclenche seulement quand une des valeurs passe au dessous ou au dessus d'une cible.
    peut-être en utilisant une fonction personnalisée par cellule à surveiller, chaque fonction se déclenchera à la variation de sa cellule liée uniquement.
    Que devrait faire cette macro ?

    A+

  3. #3
    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 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 334
    Points
    34 334
    Par défaut
    Salut,

    tu peux te faire une formule dans une cellule qui détermine si tu as une valeur qui correspond à tes critères dans une colonne, voire récupérer la ligne ?
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Algoplus Voir le message
    Bonjour,

    peut-être en utilisant une fonction personnalisée par cellule à surveiller, chaque fonction se déclenchera à la variation de sa cellule liée uniquement.
    Que devrait faire cette macro ?

    A+
    La macro "surveille" les valeurs des cellules contenant les variations sur 15 minutes. Ensuite, si ces variations dépassent une valeur cible (admettons 1%), la position de l'action concernée est localisée et un msgbox apparaît, en indiquant le nom de l'action concernée et 3 possibilités (Acheter, vendre, Retour).
    - si la réponse est Acheter : j'appelle une fenêtre bloomberg avec le code cité dans mon 1er post, puis je tape le ticker de la valeur (son ID) puis l'instruction d'acheter, c'est à ce moment là que la macro doit s'arrêter et que l'utilisateur reprend le contrôle pour passer l'ordre.
    - si vendre : pareil que pour acheter.
    - si retour : la macro continue à surveiller.

    Voilà, parce que j'ai l'impression que si je laisse la macro s'exécuter en continu, le fichier va être inutilisable...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    tu peux te faire une formule dans une cellule qui détermine si tu as une valeur qui correspond à tes critères dans une colonne, voire récupérer la ligne ?
    Salut,

    Ah oui, je pourrais par exemple rajouter une colonne avec une fonction si() basique et récupérer les coordonnées de la cellule si la condition est remplie, c'est ça ?

  6. #6
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Si le nombre de ligne à traiter n'est pas trop important la solution de la fonction personnalisée est peut-être mieux adaptée. une colonne supplémentaire nécessitera toujours de balayer cette colonne pour voir l'action à mener.


    Une trame de principe pour créer la fonction personnalisée:

    dans un module standard:

    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
    function Surveil(Cel as range)
     
    'test si vendre , acheter ......
     
    if cel.value > xxx  then ' xxx=seuil où il faut vendre
       macrovente ' lancement de la macro vendre
       Surveil = "Vente en cours" 'affiche ce message dans la cellule contenant l'appel à la fonction
    end if
     
    if cel.value < xxx  then ' xxx=seuil où il faut vendre
       macroachat ' lancement de la macro acheter
       Surveil = "Achat en cours" 'affiche ce message dans la cellule contenant l'appel à la fonction
    end if
     
    End Function
    à adapter, ce n'est pas du code testé !!

    Dans la feuille:
    Si les valeurs à surveiller sont en colonne C depuis C1, en D1 on insère: =Surveil(C1) puis on "tire" jusqu'à la fin des données.


    A voir comment ça peut réagir en cas de déclenchement de la fonction sur plusieurs lignes en même temps (si c'est possible)

    A+

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    OK Merci Algoplus je vais essayer de faire comme ça et voir ce que ça donne

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 11
    Dernier message: 12/07/2018, 17h50
  2. Réponses: 3
    Dernier message: 13/11/2017, 07h17
  3. Réponses: 8
    Dernier message: 29/10/2016, 09h09
  4. Réponses: 15
    Dernier message: 21/05/2010, 00h36
  5. [Conception] inserer des valeurs provenant d'une liste multiple
    Par digger dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 24/11/2005, 17h35

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