Вы находитесь на странице: 1из 14

Manipulation des Objets

Excel sous VBA

Programmation objet


Dabords les enregistrements :





Regroupement au sein dune mme structure dun ensemble de donnes lmentaires


Dclars en VB avec le mot cl Type :


Syntaxe :
Type nom
champs_1 as type_1
champs_2 as type_2

End Type

Exemple :
Type TDate
jour As Integer
mois As Integer
annee As Integer
End Type
Type Etudiant
numero As Integer
nom As String
prnom As String
dateNaissance As TDate
End Type

Pour accder aux champs :




Dim e As Etudiant

e.numero = 100
e.dateNaissance.annee = 1988

Ensuite les Classes :





Enrichissement de la notion denregistrement


Objet = ensemble de donnes (attributs) permettant de
caractriser lobjet
+
ensemble de programmes (mthodes) servant
modifier les attributs
Programme Objet = ensemble dobjets

Exemple
ETUDIANT
numro
nom
prnom
dateNaissance
note

+age()
+modifierNote()
+afficher()

Encapsulation


Consiste regrouper dans un objet et ses proprits


et les mthodes quon peut lui appliquer
Intrts :


Masquer limplmentation : les utilisateurs nont pas


besoin de savoir comment vous avez implment votre
module
Ces objets, une fois implments, deviennent des botes
noires

Proprits


La mthode la plus simple pour implmenter des proprits


est dutiliser des variables publiques. Pour implmenter une
proprit, il suffit de dclarer des variables publiques dans
notre module de classe
Public nom as String
Public prnom as String

Problmes :




Impossible de crer une proprit en lecture (ou criture) seule


Impossible de savoir quand une proprit est modifie
Impossible de vrifier la valid des valeurs (par exemple une date de
naissance doit toujours tre une date rvolue)

Les procdures Propoerty




Les procdures Property permettent de donner un


accs complet ou limit aux proprits dun objet
Nous accdons ces donnes travers des
mthodes
Il existe 3 procdures Property :





Property get : lecture de la proprit quelque soit son


type
Property let : criture des proprits de type simple
Property set : criture des proprits de type objet.

 Nouvelle implmentation

Private eNom As String


Private ePrenom As String
Private eDateNaissance As Date
Property let Nom(nNom as String)
eNom = nNom
End Property
Property get Nom() as String
Nom = eNom
End Property

Property let DateNaissance(nDateNaissance as Date)


If nDateNaissance > Now Then
MsgBox Une date de naissance ne peut tre dans le futur !
Else
eDateNaissance = nDateNaissance
End Property

Mthodes


Comme dans un module simple, les mthodes


peuvent, soit ne pas renvoyer de valeur (procdure
Sub), soit renvoyer une valeur (fonction Function)


Exemple :
Public Function age() As Integer
age = DateDiff(yyyy,eDateNaissance,Now,vbMonday,vbFirstFourDays)
If DateAdd(yyyy,age,Me.DateNaissance)>Now Then
age = age 1
End If
End Function

Exemple
Aller sur lditeur VBA (Alt+F11)
Crer une nouvelle classe Etudiant
Saisir le code de la classe

1.
2.
3.
1.

Dabords les proprits


Private eNumero As Integer
Private eNom As String
Private ePrenom As String
Private eDateNaissance As Date

2.

Puis les accesseurs :

Property let Numero(nNumero as Integer)


If Len(nNumero) = 0 Then
MsgBox Le numro ne peut tre vide
Else
eNumero = nNumero
End If
End Property
Property get Numero () as Integer
Numero = eNumero
End Property
Property let Nom(nNom as String)
If Len(nNom) = 0 Then
MsgBox Le nom ne peut tre vide
Else
eNom = nNom
End If
End Property
Property get Nom() as String
Nom = eNom
End Property

Property let DateNaissance(nDateNaissance as Date)


If nDateNaissance > Now Then
MsgBox Une date de naissance ne peut tre dans le futur !
Else
eDateNaissance = nDateNaissance
End Property

3.

Dfinir les mthodes


Public Function age() As Integer
age = DateDiff(yyyy,eDateNaissance,Now,vbMonday,vbFirstFourDays)
If DateAdd(yyyy,age,Me.DateNaissance)>Now Then
age = age 1
End If
End Function
Public Sub nSet(newNote As Double)
eNote = newNote
End Sub

Pour tester notre classe :


1.
2.

Dans l diteur, on cre un nouveau module


On saisie le code du test :
Sub TestEtudiant()
Dim e As New Etudiant
With e
.Numero = InputBox(Numro de ltudiant :)
.Nom =
.Prenom =
.DateNaissance =
.Note =
End With
MsgBox (Ltudiant est g de : + CStr(e.age) + ans)
End Sub

Exercice


Dans une feuille de calcul, saisir une liste


dtudiants faisant partie dune classe (nom,
prnom, Date de naissance, Moyenne)
Dfinir lobjet Classe. Cet objet contiendra un
tableau dtudiants et doit permettre de calculer la
moyenne, la meilleur et la plus mauvaise note de la
classe