Compléments
Les objets et les macros dans Visual Basic pour Excel
Quand vous utilisez Excel, vous saisissez des données dans des cellules qui appartiennent à des feuilles de calculs qui elles-mêmes appartiennent à des fichiers, vous pouvez tracer des graphiques, etc. Ces concepts, une cellule, une feuille, un fichier, un graphique sont des objets informatiques. Il en existe beaucoup d’autres, tous les éléments que vous manipulez sous Excel sont des objets. Chaque objet possède des propriétés et des méthodes. Certains possèdent également des évènements. Par exemple, une cellule a parmi ses propriétés une adresse, et parmi ses méthodes la possibilité de vider son contenu.
Il est possible de déclarer des variables comme des objets. Pour créer un objet contenant les cellules de la zone A1 à A5, il faut faire :
Dim rgZone As Range
Set rgZone = Range("$A$1:$A$5")
L’objet contenant une plage de cellules est un objet de type Range. L’affectation pour les objets se fait avec le mot clef Set. Ici, nous avons affecté la zone A1:A5 de la feuille active à l’objet rgZone. Nous pouvons le vérifier par ce code :
Sub Test()
Dim rgZone As Range
Set rgZone = Range("$A$1:$A$5")
MsgBox " L'adresse de l'objet est : " +rgZone.Address
...
Le passage de tableaux en arguments d’une fonction
Dans le prochain chapitre consacré aux fonctions de manipulations des courbes de taux, vous allez devoir passer en paramètres des fonctions des tableaux. Une limitation de VBA est que ces tableaux n’ont pas le même format si la fonction est appelée à partir d’une feuille de calcul ou d’une autre fonction (ou macro). Dans le cas d’un appel à partir d’une feuille de calcul, le tableau est entré sous la forme d’une plage de cellules et est traité comme un objet Range. Dans le cas d’un appel à partir d’une fonction, le tableau a le format défini par la fonction appelante, par exemple un tableau de double. Pour pouvoir appeler indifféremment vos fonctions d’une feuille de calcul ou par du code VBA, vous allez écrire une fonction de conversion en tableau de double.
La fonction CTableau
Quel que soit l’argument entré lors de l’appel de cette fonction, celle-ci doit retourner un tableau de double. L’argument entré doit être de type variant qui est le format recouvrant tous les autres.
La fonction TypeName permet de connaître le format d’un argument.
Vous devez distinguer le cas où il est du type Range, Tableau ou encore entier, double ou date.
Code de la fonction CTableau
Grâce à CTableau, vous n’aurez pas à traiter les différents formats possibles lors des appels de nos futures fonctions. Vous n’utiliserez que des tableaux de double. Voici le code de cette fonction :
Function CTableau(vDonnees)
'Cette fonction renvoie un tableau de double.
'Elle permet de convertir l'argument vDonnees,
'qui peut être de différents types,
'en un type unique et connu.
Dim TableauRetour(), i As Integer
'La fonction TypeName permet de connaître le type de vDonnees
Select Case TypeName(vDonnees)
Case "Range"
'C'est une plage de cellules
'vDonnees.Cells.Count compte le nombre de cellules de
'la plage vDonnees.
ReDim TableauRetour(1 To vDonnees.Cells.Count) ...