OVH Cloud OVH Cloud

Procédure évènementielle pour lien DDE

4 réponses
Avatar
Rémy
Bonjour,

(je suis débutant en VBA, et je crois que mes questions nécessite déjà un
bon niveau)

Voilà, dans une cellule j'ai un lien DDE qui change de valeur en temps réel.
Je voudrais créer une macro qui, à chaque fois que le lien DDE change de
valeur,
vérifie s'il est entre deux autres valeur. Et s'il n'y est plus change une
donnée (un compteur).

J'ai donc utilisé une procédure évènementielle "SelectionChange" pour cela,
mais :
- comment peut-on limiter cette procédure à la seule cellule ou est le lien
DDE
- je dois me tromper tout de même car la procédure ne fonctionne que quand
je clique moi même
sur la feuille, mais pas quand le lien DDE change de valeur. Alors
qu'aurais-je oublier ?

Mon code : (D4 = le lien DDE, K6 et K7 les deux valeur d'interval, K9 le
compteur)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("D4") >= Range("K6") Then
Range("K9") = Range("K9") + 1
End If


If Range("D4") <= Range("K7") Then
Range("K9") = Range("K9") - 1
End If

End Sub

Merci d'avance,

Rémy.

4 réponses

Avatar
xoco
pour specifier la selectionchange dans une seul cellule,
tu specifie un condition :
If target.address="$D$4" then
'ton code
end if
target representant la selection qui change (une cellule)
Xoco
-----Message d'origine-----
Bonjour,

(je suis débutant en VBA, et je crois que mes questions
nécessite déjà un

bon niveau)

Voilà, dans une cellule j'ai un lien DDE qui change de
valeur en temps réel.

Je voudrais créer une macro qui, à chaque fois que le
lien DDE change de

valeur,
vérifie s'il est entre deux autres valeur. Et s'il n'y
est plus change une

donnée (un compteur).

J'ai donc utilisé une procédure
évènementielle "SelectionChange" pour cela,

mais :
- comment peut-on limiter cette procédure à la seule
cellule ou est le lien

DDE
- je dois me tromper tout de même car la procédure ne
fonctionne que quand

je clique moi même
sur la feuille, mais pas quand le lien DDE change de
valeur. Alors

qu'aurais-je oublier ?

Mon code : (D4 = le lien DDE, K6 et K7 les deux valeur
d'interval, K9 le

compteur)

Private Sub Worksheet_SelectionChange(ByVal Target As
Range)


If Range("D4") >= Range("K6") Then
Range("K9") = Range("K9") + 1
End If


If Range("D4") <= Range("K7") Then
Range("K9") = Range("K9") - 1
End If

End Sub

Merci d'avance,

Rémy.



.



Avatar
Jean-Paul Viel
Bonjour, Votre code devait être Worksheet_Calculate(), mais vous devriez
ajouter du code pour tenir compte uniquement du calcul dans la cellule DDE
pas des calculs de vos compteurs. Jean-Paul


--
JP
jp@?NOSPAM?solutionsvba.com
http://www.solutionsvba.com


"Rémy" wrote in message
news:#ee$
Bonjour,

(je suis débutant en VBA, et je crois que mes questions nécessite déjà un
bon niveau)

Voilà, dans une cellule j'ai un lien DDE qui change de valeur en temps
réel.

Je voudrais créer une macro qui, à chaque fois que le lien DDE change de
valeur,
vérifie s'il est entre deux autres valeur. Et s'il n'y est plus change une
donnée (un compteur).

J'ai donc utilisé une procédure évènementielle "SelectionChange" pour
cela,

mais :
- comment peut-on limiter cette procédure à la seule cellule ou est le
lien

DDE
- je dois me tromper tout de même car la procédure ne fonctionne que quand
je clique moi même
sur la feuille, mais pas quand le lien DDE change de valeur. Alors
qu'aurais-je oublier ?

Mon code : (D4 = le lien DDE, K6 et K7 les deux valeur d'interval, K9 le
compteur)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("D4") >= Range("K6") Then
Range("K9") = Range("K9") + 1
End If


If Range("D4") <= Range("K7") Then
Range("K9") = Range("K9") - 1
End If

End Sub

Merci d'avance,

Rémy.





Avatar
Daniel.M
Salut Rémy,

Quelle est ta version d'Excel?
Avec XL 97, les changements par DDE n'enclenchent pas d'événements _Change.

Pour de la doc là-dessus (et quelques pistes):
http://support.microsoft.com/support/kb/articles/Q172/8/32.ASP
XL97: Worksheet Change Event Macro Fails to Run

Salutations,

Daniel M.

"Rémy" wrote in message
news:%23ee$
Bonjour,

(je suis débutant en VBA, et je crois que mes questions nécessite déjà un
bon niveau)

Voilà, dans une cellule j'ai un lien DDE qui change de valeur en temps réel.
Je voudrais créer une macro qui, à chaque fois que le lien DDE change de
valeur,
vérifie s'il est entre deux autres valeur. Et s'il n'y est plus change une
donnée (un compteur).

J'ai donc utilisé une procédure évènementielle "SelectionChange" pour cela,
mais :
- comment peut-on limiter cette procédure à la seule cellule ou est le lien
DDE
- je dois me tromper tout de même car la procédure ne fonctionne que quand
je clique moi même
sur la feuille, mais pas quand le lien DDE change de valeur. Alors
qu'aurais-je oublier ?

Mon code : (D4 = le lien DDE, K6 et K7 les deux valeur d'interval, K9 le
compteur)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("D4") >= Range("K6") Then
Range("K9") = Range("K9") + 1
End If


If Range("D4") <= Range("K7") Then
Range("K9") = Range("K9") - 1
End If

End Sub

Merci d'avance,

Rémy.





Avatar
Rémy
Merci tout le monde, j'ai réussi...
Pour ceux que ça intéresse, l'évenement change n'est pas délenché par un
liens DDE,
par contre l'évènement calculate lui fonctionne.
De plus il faut mettre "Application.EnableEventsúlse" au début puis
"Application.EnableEvents=True" à la fin
de la procédure pour évité les itérations.






"Daniel.M" a écrit dans le message de
news:
Salut Rémy,

Quelle est ta version d'Excel?
Avec XL 97, les changements par DDE n'enclenchent pas d'événements
_Change.


Pour de la doc là-dessus (et quelques pistes):
http://support.microsoft.com/support/kb/articles/Q172/8/32.ASP
XL97: Worksheet Change Event Macro Fails to Run

Salutations,

Daniel M.

"Rémy" wrote in message
news:%23ee$
Bonjour,

(je suis débutant en VBA, et je crois que mes questions nécessite déjà
un


bon niveau)

Voilà, dans une cellule j'ai un lien DDE qui change de valeur en temps
réel.


Je voudrais créer une macro qui, à chaque fois que le lien DDE change de
valeur,
vérifie s'il est entre deux autres valeur. Et s'il n'y est plus change
une


donnée (un compteur).

J'ai donc utilisé une procédure évènementielle "SelectionChange" pour
cela,


mais :
- comment peut-on limiter cette procédure à la seule cellule ou est le
lien


DDE
- je dois me tromper tout de même car la procédure ne fonctionne que
quand


je clique moi même
sur la feuille, mais pas quand le lien DDE change de valeur. Alors
qu'aurais-je oublier ?

Mon code : (D4 = le lien DDE, K6 et K7 les deux valeur d'interval, K9 le
compteur)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("D4") >= Range("K6") Then
Range("K9") = Range("K9") + 1
End If


If Range("D4") <= Range("K7") Then
Range("K9") = Range("K9") - 1
End If

End Sub

Merci d'avance,

Rémy.