VBA Déclenchement évènements dans un module de classe

Hecatonchire 53,950 Points de réputation Modérateur bénévole
2021-07-07T18:54:37+00:00

Bonjour à tous,

Les modules de classe ne sont pas mon quotidien ! Les évènements ne se déclenches pas ! Une idée ? C'est surement devant mon nez !

(version allégée)

Module 1

Sub Test\_Evenement()  
    Dim MaChose As Chose  
    Set MaChose = New Chose  
    MaChose.value = 1000             
End Sub  

Classe Chose

Public Event Alerte(ByVal PreviousValue As Double)

Private cpValue As Double

Property Let value(NewValue As Double)
Dim Previous As Double

If NewValue >= 200 Then  
    Previous = cpValue  
    'cpValue = NewValue   
   RaiseEvent Alerte(Previous)  ' <========= Passe ici sans erreurs et continue son chemin  
    DoEvents   
Else  
    cpValue = NewValue  
End If  

End Property

Classe Chose_Events

Dim WithEvents MaChose As Chose

Private Sub Class_Initialize()
Set MaChose = New Chose
End Sub

Private Sub MaChose_Alerte(ByVal PreviousValue As Double)
MsgBox "Pas bon : " & PreviousValue
End Sub

Merci

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

12 réponses

  1. DanielCo 107.7K Points de réputation
    2021-07-08T17:51:29+00:00

    Désolé, je ne sais absolument pas le faire. Je ne sais pas si c'est possible.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2021-07-08T09:02:39+00:00

    Bonjour Daniel,

    Dans Module 1, quand s'exécute "MaChose.value = 1000" cela déclenche l'exécution de "Property Let value(NewValue As Double)" du module de classe Chose.

    Lors de cette affectation (Let) j'aimerai qu'un évènement se déclenche selon certain cas (>200 par ex)

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. DanielCo 107.7K Points de réputation
    2021-07-08T04:33:40+00:00

    Bonjour Arnaud,

    Désolé, je ne comprends pas, mais c'est sans doute lié à mon peu de connaissance des modules de classe. Concrètement, qu'est-ce qui doit déclencher la macro ? Pour moi, les modules de classe sont liés à des évènements, et je ne vois pas d'évènement déclencheur.

    Quel est problème cherches-tu à résoudre ?

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Hecatonchire 53,950 Points de réputation Modérateur bénévole
    2021-07-07T20:00:41+00:00

    Bonsoir Daniel,

    C'est plus par curiosité (pour paraitre moins bête :) au café )

    Je déclare une classe Chose et j'ai déclaré les 2 Property Get et Let pour accéder à la valeur en lecture écriture via Value ==> semble fonctionnel

    Je voulais ajouter un évènement qui se déclencherait si la valeur affectée est par exemple > 200.

    ? pb d'initialisation de la classe Chose_Events et si ou comment le faire ?

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  5. DanielCo 107.7K Points de réputation
    2021-07-07T19:12:13+00:00

    Bonsoir Arnaud,

    Les modules de classe, ce n'est vraiment pas ma tasse de café. Personnellement, j'ai deux ou trois modèles que je modifie (le moins possible) quand j'en ai besoin. Peux-tu me dire ce que tu souhaites faire (c'est loin d'être évident pour moi). Je regarderai demain soir, car là, j'étais en train de fermer la boutique.

    Cordialement.

    Daniel

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire