1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
| Option Explicit
Private WithEvents mobjPerson As person 'Provoque une erreur si placé ailleurs que
'dans un module de classe
Private mstrNom As String 'Nom de la personne
Private mstrPrenom As String 'Prénom de la personne
Private mdtmDateNaissance As Date 'Date de naissance de la personne
Private mblnNom As Boolean 'est à vrai lorsque le nom a été renseigné
Private mblnPrenom As Boolean 'est à vrai lorsque le prénom a été renseigné
Private mblndateNaissance As Boolean 'est à vrai lorsque la date de naissance a été renseignée
Private Sub class_Initialize()
Debug.Print "Evénement Initialize - Création d'un objet Person"
End Sub
Private Sub class_Terminate()
Debug.Print "Evénement Terminate - destruction d'un objet Person : " & Me.NomComplet
End Sub
Private Sub mobjPerson_Completed()
Debug.Print "l'Evénement Completed vient de se produire !"
End Sub
Private Sub IsCompleted()
If mblnNom And mblnPrenom And mblndateNaissance Then
'Si les 3 propriétés privées sont vrai alors l'événement se produit
RaiseEvent Completed
End If
End Sub
Public Function Age() As Integer
'on calcule le nombre d'années entre l'année de naissance et aujourd'hui
Age = DateDiff("yyyy", DateNaissance, Now, vbMonday, vbFirstFourDays)
'si la jour de l'anniversaire n'est pas passé on retire 1 an
If DateAdd("yyyy", Age, Me.DateNaissance) > Now Then
Age = Age - 1
End If
End Function
' Propriété Nom
Property Let Nom(strNom As String)
If Len(strNom) = 0 Then
MsgBox "Le nom ne peut pas être vide."
Exit Property
Else
mstrNom = strNom
mblnNom = True
End If
IsCompleted
End Property
Property Get Nom() As String
Nom = mstrNom
End Property
' Propriété Prenom
Property Let Prenom(ByVal strPrenom As String)
If Len(strPrenom) = 0 Then
MsgBox "Le prénom ne peut pas être vide."
Exit Property
Else
mstrPrenom = strPrenom
mblnPrenom = True
End If
IsCompleted
End Property
Property Get Prenom() As String
Prenom = mstrPrenom
End Property
' Propriété DateNaissance
Property Let DateNaissance(ByVal dtmDateNaissance As Date)
If dtmDateNaissance > Now Then
MsgBox "Une date de naissance ne peut être dans le futur."
Exit Property
Else
mdtmDateNaissance = dtmDateNaissance
mblndateNaissance = True
End If
IsCompleted
End Property
Property Get DateNaissance() As Date
DateNaissance = mdtmDateNaissance
End Property
' Propriété NomComplet en lecture seule
Property Get NomComplet() As String
NomComplet = Me.Prenom & " " & Me.Nom
End Property |
Partager