Problème d?évènement entre une fonction et un évènement souris.
laurent1475
Messages postés7Date d'inscriptiondimanche 17 décembre 2006StatutMembreDernière intervention18 février 2007
-
17 févr. 2007 à 17:37
laurent1475
Messages postés7Date d'inscriptiondimanche 17 décembre 2006StatutMembreDernière intervention18 février 2007
-
18 févr. 2007 à 16:46
Bonjour à tous
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
J’ai une application Excel qui communique avec un serveur OPC (Tout fonction bien, stable)
J’ai une procédure qui ai appelée par événement à chaque fois (qu’une variable abonné) a changée de valeur.
Le problème ai que si la fonction n’ai pas terminé ET qu’un événement souris se produit par exemple : clique gauche sur la feuille et bien un message d’erreur se produit ?????
Sub GroupeReadWriteOnly_DataChange(ByVal TransactionID As Long, ByVal NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)
' We don't have error handling here since this is an event called from the OPC interface
On Error GoTo Err_GroupeReadWriteOnly_DataChange
Dim i As Integer
For i = 1 To NumItems
Worksheets("Feuil1").Range("B" & ClientHandles(i)).Value = ItemValues(i) <--- L’erreur se produit ici losqu’on a fait un clique gauche sur la feuille
Next i
GoTo SkipErr_GroupeReadWriteOnly_DataChange
Err_GroupeReadWriteOnly_DataChange:
MsgBox Err.Description + vbCrLf + "Erreur produite dans le programme: GroupeReadWriteOnly_DataChange"
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 17 févr. 2007 à 18:04
Tu pourrais mettre une variable booléenne (déclarée globale) en début d'exécution et en fin d'exécution
Au début, tu la changes à True. À la fin, tu la remets à False
ex:
Public EnAction as boolean
Sub MaSub()
If not EnAction then
EnAction = True
...Code
end if
En Action = False
End sub
laurent1475
Messages postés7Date d'inscriptiondimanche 17 décembre 2006StatutMembreDernière intervention18 février 2007 18 févr. 2007 à 16:46
Merci de ta réponse MPi
<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
J’ai fait le test mais rien n’est résolut toujours le même problème. De toute façon qui commande <?xml:namespace prefix st1 ns "urn:schemas-microsoft-com:office:smarttags" /??><st1:personname w:st="on" productid="la variable EnAction">la variable EnAction</st1:personname> ?
Mais le problème n’ai pas un conflit entres mes fonctions (qu’il faudrait synchronisé) mais un problème entre la fonction à("Feuil1").Range("B" & ClientHandles(i)).Value = ItemValues(i) et la sélection de la souris.
Ce que tu préconise c'est de mettre EnAction = True dans l’événement de la souris ? Pour ne pas exécuté l’autre fonction ? (Je perdrais la lecture de l’événement)
Ou une autre manière, (qui serais mieux) sa serai de stopper l’événement de la souris pendant l’exécution de ma fonction (avec ta variable EnAction)
Comment
récupères tu l’évènement
de la souris avec API windows dans Excel ?