Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lancement automatique de macro

1 réponse
Avatar
J.M.Evrard
Bonjour,

Je voudrais faire executer automatiquement une macro dans=20
Excel, quand la cellule "B1" de la feuil2 passe de 0 =E0 1.
Cette cellule est remplie automatiquement par une autre=20
application au moyen d'un lien DDE.
La cellule B1 contient =3DPCDDE|Automate!'%MF8000'

Le code ci-dessous ne donne pas satisfaction:
bien que sur la feuille2 la cellule B1 passe de 0 =E0 1 la=20
macro n'est pas execut=E9e.
Si la cellule B1 est chang=E9e manuellement au clavier en=20
enlevant la formule, le fonctionnement est correct.

Y-a-t-il une incompatibilit=E9 avec le lien DDE?
Si oui lequel et que faire?

Private Sub Worksheet_Change(ByVal Target As Range)
=20
If Feuil2.Range("B1").Value =3D 0 Then
If x =3D True Then
x =3D False
'remet =E0 0 le flag
End If
Else
If x =3D False Then
x =3D True
'le flag indique que la macro a =E9t=E9 ex=E9cut=E9e
Call Macro3
End If
End If
=20
End Sub


Merci pour votre aide

Jean-Marc

1 réponse

Avatar
Frédéric Sigonneau
Bonjour,

Le changement de valeur d'une formule ne déclenche pas l'événement Change.
Utilise plutôt l'événement Calculate.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !

J.M.Evrard a écrit:
Bonjour,

Je voudrais faire executer automatiquement une macro dans
Excel, quand la cellule "B1" de la feuil2 passe de 0 à 1.
Cette cellule est remplie automatiquement par une autre
application au moyen d'un lien DDE.
La cellule B1 contient =PCDDE|Automate!'%MF8000'

Le code ci-dessous ne donne pas satisfaction:
bien que sur la feuille2 la cellule B1 passe de 0 à 1 la
macro n'est pas executée.
Si la cellule B1 est changée manuellement au clavier en
enlevant la formule, le fonctionnement est correct.

Y-a-t-il une incompatibilité avec le lien DDE?
Si oui lequel et que faire?

Private Sub Worksheet_Change(ByVal Target As Range)

If Feuil2.Range("B1").Value = 0 Then
If x = True Then
x = False
'remet à 0 le flag
End If
Else
If x = False Then
x = True
'le flag indique que la macro a été exécutée
Call Macro3
End If
End If

End Sub


Merci pour votre aide

Jean-Marc