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-E]evènement Change(ByVal Target As Range) et DDE


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut [VBA-E]evènement Change(ByVal Target As Range) et DDE
    bonjour
    je pense utiliser ce type de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(Target, Range("A1")) Is Nothing Then
            Select Case Target.Value
                Case Is > 0
                    Target.Offset(0, 1).Interior.ColorIndex = 10
                Case Is < 0
                    Target.Offset(0, 1).Interior.ColorIndex = 4
            End Select
        End If
    ceci fonctionne très bien, mais si les données arrivent par une liaison DDE, l'évènement n'est pas déclenché. y a t il une possibilité de tourner la difficulté?
    merci.
    Jean Pierre

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut
    ma question n'a pas l'air de faire recette...
    est ce quelqu'un pourrait au moins me dire s'il est possible de déclencher un évènement par une liaison DDE. les changements des valeurs de cellules ont l'air de se faire de façon transparente pour excel qui ne semble ne s'apercevoir de rien.
    merci.
    Jean Pierre

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    cool man on passe pas notre temps devant l'écran.
    je te répond sans avoir essayé parce que je ne sais meme pas exactement ce que tu appele une liaison dde. mais bon, je suppose que tes cellules sont liées. tu peux essayer d'utiliser l'evenement quand calculate, ça peut le faire

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut
    i beg your pardon...
    dans la cellule A1 arrive le cours de bourse d'une action, cours transmis par une liaison DDE (comment, ça, j'en sais pas plus que toi!) directement d'un serveur boursier.
    l'instant d'arrivée est bien sur inconnu (c'est du live!) et de plus plusieurs arrivées peuvent se faire dans le même "jet" donc on ne peut pas travailler avec une boucle qui surveillerait toutes les 10 secondes, et de toutes façons, vu le nombre d'actions à surveiller...
    je pense que l'arrivée d'une nouvelle valeur n'est pas détectée par excel var cette arrivée n'est pas interne. A mon avis, il faut ruser, mais comment?
    en tout cas, merci pour ta réponse.
    Jean Pierre

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    tu as essayer le quand calculate?

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par alsimbad
    tu as essayer le quand calculate?
    oui l'événement calculate est bien exécuté ... reste ensuite à recherché les valeurs modifiées....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_Calculate()
    Debug.Print "Calculate " & Now
    End Sub

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut
    désolé, j'étais au boulot...
    effectivement calculate fonctionne (plusieurs lignes par seconde...)
    mais ça ne fait que déplacer le problème, non ? puisque calculate ne peut s'appliquer à une cellule.
    sinon il y a la boucle pemanente, mais au risque de rater des valeurs!
    bref, ça me parait pas évident.
    Jean Pierre

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    il y a quelque chose que je ne saisi pas, et je ne vais pas pouvoir recréer ta macro pour le savoir. en terme français, elle fais quoi exactement? je veux dire, j'ai bien compris qu'elle change la couleur de la cellule selon sa valeur, mais quelle cellule exactement? et quel est le but? t'avertir d'un changement?tu peux peut etre ascocier quand calculate et quand change, ou meme quand calculate et une condition si changement.avec une action quand change, tu peux recuperer l'arrivée d'une valeur, savoir quelle est l'adresse de la cellule qui change, et n'analyser que celle là, ainsi pas de boucle et étant seule a etre analyser, tu ne perd pas de temps. remarque, je dis ça, je sais pas encore si c'est possible, c'est des idées, mais je pense quen associant ces fonctions là, on devrait y arriver

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Par défaut
    la petite macro fait changer de couleur, effectivement selon le signe de la variation du cours qui arirve en A1, pour attirer l'atention visuellement.
    mais ce n'était qu'une première approche, il me faudra aussi calculer, par exemple la somme des volumes correspondant à cette action et qui, eux, arriveront en A2, par ex.
    Bref, il faut pouvoir "jouer" avec la cellule qui a bougé, avec elle précisément, et le plus rapidement possible, avant qu'elle ait à nouveau changé.
    ton idée d'associer calculate et changement est à creuser, je vais continuer à tenter de ce côté.

Discussions similaires

  1. [XL-2007] Macro "Activate" ou "SelectionChange(ByVal Target As Range)" ?
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2013, 14h34
  2. [Toutes versions] Private Sub Worksheet_Change(ByVal Target As Range) et protection
    Par Giantrick dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2013, 10h21
  3. [XL-2007] petit soucis avec un Private Sub Worksheet_Change(ByVal Target As Range)
    Par dris974 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/03/2011, 12h57
  4. [XL-2000] Enigme Worksheet_SelectionChange(ByVal Target As Range)
    Par Invité(e) dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/01/2010, 08h32
  5. SelectionChange(ByVal Target As Range)
    Par newsinfos dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/11/2007, 11h00

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