Il est possible de définir ses propres types. Voyons comment ça marche : Les types permettent de créer des variables structurées, comme ceci :
Créez un nouveau module, et, en dehos de toute procédure, écrivez ceci :
Type Client
Nom As String
Prenom As String
Age As Integer
End Type
C'est la définition d'une variable Client, qui n'est en fait que l'ensemble de 3 variables : Nom, Prenom et Age. Nom et prénom sont du texte, Age est du chiffre.
Il est interdit de définir des types à l'intérieur même des procédures ou fonctions.
Sous cette définition de Type, créer une procédure TestType, comme ceci :
Sub TestType()
Dim MonPremierClient As Client
End Sub
Vous constatez que nous créons une variable Client d'un type un peu particulier : Le nôtre !
La suite n'est pas vien compliquée : On peut assigner des valeurs aux variables de cette variable structurée, comme suit :
Sub TestType()
Dim MonPremierClient As Client
MonPremierClient.Nom = "Dupont"
MonPremierClient.Prenom = "Marcel"
MonPremierClient.Age = 36
MsgBox "Le client s'appelle " & MonPremierClient.Prenom & MonPremierClient.Nom
End Sub
Voilà, ce n'est pas plus compliqué que ça.
Maintenant, il est possible d'inétégrer au sein même du Type Client, une variable de Type Adresse : Ce type Adresse, nous allons le définir, comme ceci :
Type Adresse
Rue As String
CodePostal As Integer
Ville As String
End TypeType Client
Nom As String
Prenom As String
SonAdresse As Adresse
End Type
Maintenant, nous allons pouvoir y accéder de cette manière :
Sub TestType()
Dim MonPremierClient As Client
MonPremierClient.Nom = "Dupont"
MonPremierClient.Prenom = "Marcel"
MonPremierClient.SonAdresse.Rue = "Route des Cerises 32"
MonPremierClient.SonAdresse.Ville = "Lyon"
MsgBox "Le client habite " & MonPremierClient.SonAdresse.Rue
End Sub
Maintenant, nous allons voir qu'il est possible de placer des tableaux directement dans les types : Voici l'exemple ou le client peut avoir 2 noms :
Type Client
Nom(2) As String
Prenom As String
End TypeSub TestType()
Dim MonPremierClient As Client
MonPremierClient.Nom(1) = "Dupont"
MonPremierClient.Nom(2) = "Lajoie"
MsgBox "Le client s'appelle : " & MonPremierClient.Nom(1) & MonPremierClient.Nom(2)
End Sub
Bien entendu, nous pouvons déclarer plisuers variables de type Client :
Sub TestType()
Dim Premier As Client
Dim Deuxieme As Client
Premier.Nom(1) = "Dupont"
Premier.Nom(2) = "Lajoie"
Deuxieme.Nom(1) = "Martin"
Deuxieme.Nom(2) = "Durand"
End Sub
Et, bien entendu, on peut très bien déclarer un tableau de variables de type Client :
Type Adresse
Rue As String
CodePostal As Integer
Ville As String
End TypeType Client
Nom(2) As String
Prenom As String
SonAdresse As Adresse
End TypeSub TestType()
Dim ListeClients(10) As Client
ListeClients(1).Prenom = "Gaspard"
ListeClients(7).Nom(2) = "Durand"
ListeClients(5).Adresse.Ville = "Genève"
End Sub
Il est également possible de placer une collection au sein des types :
Type Client
Prenom As String
Remarque As New Collection
End TypeSub TestTypeCollection()
Dim ListeClients As Client
ListeClients.Remarque.Add "Vive les vacances"
ListeClients.Remarque.Add "J'aime le soleil"
MsgBox ListeClients.Remarque(1)
MsgBox ListeClients.Remarque(2)
End Sub