SlideShare une entreprise Scribd logo
1  sur  47
Introduction au language Visual Basic for Applications
dans le monde Excel
Ressources
 FAQ : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx
 Référence : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx
 Nombreux livres
 Aide en ligne d’Excel
Programmer sous Excel
 Pour accéder à l’environement de programmation sous
Excel, deux possibilités
 Par les menus
 Alt F11
L’environement de dévelopement
Explorateur de
projet
Éditeur
Espions
(débogage)
Propriétés
Ajouter une fonction à Excel
Click droit sur “Microsoft Excel objects” :
Séléctioner “Module”
Généralités sur VBA
 VBA est un langage compilé au moment de l’exécution.
 Insensible à la casse, l’editeur VBA modifie texte tapé
de tel sorte qu’il ay la même casse que des objets
existants (fonctions, variables, sub, etc.)
 Une fonction peut se nommer MyFunction, on tape
myfunction l’éditeur changera m et f an majuscules.
 Les commentaires débutent par ‘ et terminent en fin
de ligne.
 La barre d’outils ’Édition’ peut s’avérer pratique quand
on programme.
Structure d’une fonction
Délimiteurs
de fonction Nom de la fonction Type de la fonction
Nom de l’argument
Type de l’argument
Liste des arguments
Corps de la fonction:
Attribution fonctionne comme valeur de retour
Utilisation dans Excel
Conditions pour fonctions
à appeler dans Excel
 Ne pas changer la structure d’une feuille Excel.
 Ne pas changer les propriétés d’une cellule.
 Toute fonction appelée doit respecter les mêmes
restrictions.
 Si la fonction doit être exécuté même si ses arguments
ne changent pas il faut appeler Application.Volatile.
 Doit retourner un type qui Excel sait traiter.
Subroutines
 Les sub ne renvoient pas de résultat, contrairement
aux fonctions.
 Les sub ne peuvent pas être appelées directement
depuis les cellules de Excel.
 Si une sub est appelée depuis une fonction qui est
appelée depuis une cellule, alors elle doit respecter les
mêmes restrictions que ces fonctions.
Valeurs par défaut
 Les paramètres des Function et Sub peuvent être
optionnels. Si un paramètre est optionnel tous les
paramètres suivants le sont aussi.
 Si un paramètre est de type Variant on peut tester que
l’appel n’a pas définit ce paramètre avec IsMissing.
Sub ajoutEspace(ByRef str As String, Optional nb As Integer = 5)
Dim prefix As String
prefix = Space(nb)
str = prefix & str
Debug.Print str
End Sub
Sub ajoutEspace(ByRef str As String, Optional vnb As Variant)
Dim prefix As String
Dim nb As Integer
If IsMissing(vnb) Then
nb = 5
Else
nb = CInt(vnb)
End If
prefix = Space(nb)
str = prefix & str
Debug.Print str
End Sub
Paramètres nommés
 On peut appeler une fonction en nommant ses
paramètres.
ajoutEspace str:=res, nb:=10
Sub ajoutEspace(ByRef str As String, Optional nb As Integer = 5)
Dim prefix As String
prefix = Space(nb)
str = prefix & str
Debug.Print str
End Sub
Déclaration des variables
On déclare une variable à l’aide de
Dim :
Function surfCercle(x As Double) As Double
Dim pi As Double
pi = 3.1415279
surfCercle = x * x * pi
End Function
Par défaut les variables n’ont pas besoin d’etre
déclarées, elles ont le type Variant. Il faut utiliser
Option Explicit
pour rendre la déclaration obligatoire.
Types
 String : Chaines de caractères.
 Types numériques : entiers, réels en virgule flottante
(précision simple ou double) et réels en virgule fixe
(decimal).
 Dates : Représentation des dates en nombre de jours
écoulés depuis le premier janvier 1900.
 Tableaux : une collection de variables d’un autre type,
l’indexation est au choix de l’utilisateur, par défaut de 1
à N.
 Variant : Type abritant tout autre type.
 Objets : Types définis dans des bibliothèques ou par
des utilisateurs.
Strings
 Une chaine de caractères se déclare comme String, par
exemple :
 Dim message As String
 De nombreuses fonctions de manipulation de strings
sont disponibles, exemples :
 Len, calcule la taille
 InStr, cherche dans une String
 Replace, modifie une String
 Etc.
Types numériques
 Entiers :
 Byte
 Integer, entier 2 octets
 Long, entier 4 octets
 Decimal : Currency
 Réels virgule flotante :
 Single, 4 octets
 Double, 8 octets
Booléens et dates
 Boolean, représente vrai ou faux.
 Date, représente une date, stockée comme nombre de
jours depuis le premier janvier 1900. Il y a un jour de
décalage avec des dates Java.
Tableaux
 Un tableau (array) se déclare en ajoutant au nom d’une
variable des paranthèses et une dimension.
 On accéde aux éléments d’un tableau par indexation.
 L’option globale Option Base permet de fixer le
premier indice de chaque tableau, par défaut les
tableaux commencent à 1.
Sub arrTest(j As Integer)
Dim t(1 To 10) As Integer
Dim i As Integer
i = 1
While i <= 10
t(i) = j + I
i = i + 1
end
End Sub
Appel de Function
 Une Function s’appelle en plaçant une liste
d’expressions entre parenthèses à la place de la liste
des arguments.
 Un appel de fonction remplace toute expression du
même type que le type de retour de la fonction.
 Exemple :
 X=surfCercle(2.0)+4
Appel de sub
2 façons d’appeler une sub:
• Call suivi du nom, les arguments entre ()
• nom du Sub (sans Call) avec arguments séparés par ,
Function HelloWorld() As String
Dim res As String
res = "Hello World"
Call ajoutEspace(res)
HelloWorld = res
End Function
Sub ajoutEspace(ByRef str As String)
str = " " & str
End Sub
Sub, Function : paramètres
 Deux façons de passer un paramètre a une Function
où Sub :
 Par valeur, le nom du paramètre est précédé par ByVal.
 Par référence, le nom du paramètre est précédé par
ByRef (cette méthode de passage de paramètres est la
méthode par défaut).
Variables globales
 Une variable déclarée à l’extérieur de toute Function
ou Sub est globale.
 Deux types de visibilités sont possibles :
 Public, visible depuis tous modules,
 Private, visible uniquement dans le module courant.
Instructions de contrôle
 Conditionels :
 If
 Iif Function Signe(x As Double) As Byte
If x > 0 Then
Signe = 1
ElseIf x < 0 Then
Signe = -1
Else
Signe = 0
End If
End Function
Boucles
 While
 For
 For Each, s’utilise avec de collections.
Sub arrTest(j As Integer)
Dim t(1 To 10) As Integer
Dim i As Integer
i = 1
While i <= 10
t(i) = j + i
i = i + 1
Wend
End Sub
Manipulation des cellules
 Les feuilles et les cellules d’Excel sont des variables de
type spécial. Elles peuvent être manipulées dans VBA.
 À chaque feuille correspond une variable :
Utilisation d’objets
 Un objet est une variable dont le type est une classe
appartenant au projet courant où à une bibliothèque.
 Un objet se déclare à l’aide de Dim comme pour toute
variable.
 Un objet doit être crée avec une instruction New et
l’attribution du résultat de New se fait obligatoirement
à l’aide de Set.
 Un objet non initialisé contient Nothing.
Objets et classes
 Une classe est un type défini dans une bibliothèque.
 Une variable dont le type est une classe est un Object.
 Un Objet contient des membres qui peuvent être
 des propriétés,
 Des méthodes (des fonctions)
 Deux objets de même type ont, en général, des
propriétés avec des états différents.
Accès aux cellules
 Parmi les membres de la classe Worksheet on trouve la
méthode Cells.
 Il y a deux versions de la méthode Cells
 À deux arguments entiers représentant le nombre de
lignes et le nombre de colonnes. Ex: Cells(1,1)
 À un argument String représentant l’adresse d’une
cellule. Ex Cells("A1")
 La méthode Cells retourne un objet du type Range qui
représente un groupe de cellules.
Range : quelques membres
 Value, propriété qui représente le contenu de la cellule.
 Text, propriété qui représente le texte affiché par la
cellule.
 Formula, propriété qui représente la formule de la
cellule.
 ClearContents, méthode qui efface le contenu de la
cellule.
 ClearComments, méthode qui efface les comentaires
de la cellule.
Exemple
Option Explicit
Sub displaySquare()
Dim i As Integer
For i = 1 To 100
result.Cells(i, 1).Value = i * i
result.Cells(i, 1).Interior.ColorIndex = i Mod 32
Next i
End Sub
Result est un Objet
de type
Excel.Worksheet
Excel -> bibliothèque
Worksheet -> class
Cells est une méthode de la class
Worksheet à 2 arguments (il a une
Autre méthode de même nom à 1
argument) qui retourne un objet
de type Excel.Range
Value est une propriété de
la class Range
Évènements
 Le évènements sont des subroutines qui s’exécutent
assynchronement . Ils sont déclenchés
automatiquement par des actions extérieures.
 Quelques exemples :
 Click de souris sur bouton
 Changement de contenu d’une cellule
 Changement de la cellule courante
Private Sub btnGo_Click()
displaySquare
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or IsEmpty(Target) Then
Exit Sub
End If
If Target.Address = "$A$1" Then
calc.Cells(1, 4).Value = "A1 Changed"
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
calc.Cells(2, 4).Value = "selection is now " & Target.Address
End Sub
Évènements
Nom de la class,
Dans certains cas nom
De l’objet
Nom de l’évènement
Erreurs
 Dans son comportement par défaut l’exécution s’arrête
et un message est affiché.
 On peut spécifier un autre comportement si une erreur
se produit, trois comportemens sont possibles :
 On Error Goto 0, le comportement par défaut
 On Error Resume Next, ignorer les erreurs et passer à
l’instruction suivante.
 On Error Goto <label>, sauter à <label> (ligne marqué
de <label>:) si une erreur se produit.
 Si une erreur se produit la variable Err est initialisée.
Erreurs (suite)
 La variable Err contient plusieurs membres, les plus
importants :
 Number, contient le numéro unique de l’erreur.
 Description, contient la description de l’erreur.
 Raise, produit une erreur (utile pour signaler des erreurs
à d’autres parties du programme.
 Clear, nettoye la dernière erreur.
Erreurs (exemple)
Sub ajoutEspace(ByRef str As String, Optional vnb As Variant)
Dim prefix As String
Dim nb As Integer
On Error GoTo err_label
If IsMissing(vnb) Then
nb = 5
Else
nb = CInt(vnb)
End If
prefix = Space(nb)
str = prefix & str
Exit Sub
err_label:
MsgBox Err.Description
End Sub
Modification du
traitement des
erreurs.
Label
Accès à l’erreur
Modules de classe
 Dans un module de classe on peut définir ses propres
classes.
 Une classe contient 3 types de membres :
 Des variables membres
 Des méthodes
 Des propriétés
 2 types de visibilité pour les membres :
 Private
 Public
Créer une classe
Exemple : Action
Option Explicit
Public nom As String
Public cours As Currency
Variables membres
Exemple : Option
Option Explicit
Private isCall As Boolean
Public strike As Currency
Public maturity As Date
Public sousjacent As Act
Public Property Let TypeContrat(tp As String)
If LCase(tp) = "call" Then
isCall = True
Else
isCall = False
End If
End Property
Membre privé
Propriété : Écriture
Membres publiques
Exemple : Option
Public Property Get TypeContrat() As String
If isCall Then
TypeContrat = "Call"
Else
TypeContrat = "Put"
End If
End Property
Propriété : Lecture
Exemple : Option
Public Function GetPrice(r As Double, vol As Double) As Double
Dim td As Date
Dim days2exp As Long
td = Date
days2exp = maturity - td
If isCall Then
GetPrice = Call_Eur(sousjacent.cours, strike, days2exp, r, vol)
Else
GetPrice = Put_Eur(sousjacent.cours, strike, days2exp, r, vol)
End If
End Function
Fonction membre
Utilisation d’une classe
Sub test()
Dim FT As New Act
Dim CallFT As New Opt
Dim price As Double
FT.nom = "Fance Telecom"
FT.cours = 15.3
CallFT.TypeContrat = "Call"
Set CallFT.sousjacent = FT
CallFT.strike = 15
CallFT.maturity = "20/12/2012"
price = CallFT.GetPrice(0.01, 0.2)
Debug.Print price
End Sub
Déclarations/allocations
Utilisation de propriétés
Appel de méthode
Forms
 Les forms sont des objets graphiques qu’on peut
afficher dans Excel.
 On utilise des forms pour intéragir avec un utilisateur.
 Une form est toujours composé d’une fenêtre sur
laquelle s’affichent des contrôles graphiques.
 La boite à outils de Excel propose plusieurs contrôles :
boutons, zones de texte, liste de choix, etc.
 Chaque contrôle propose des évènements qui
permettent d’interagir avec l’utilisateur.
 Chaque form gère son propre module.
Créer une form
Form et boite à outils
Design de la form
Code associé à une form
Évènement
click du bouton
Accès à une
propriété d’un
autre contrôle

Contenu connexe

Similaire à Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel

03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdfAhmed12314
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scalaSOAT
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#MSDEVMTL
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de ClasseabdoMarocco
 
mis
mismis
misISIG
 
Visual studio
Visual studioVisual studio
Visual studioISIG
 
initiation au javascript
initiation au javascriptinitiation au javascript
initiation au javascriptAbdoulaye Dieng
 
Fonction Excel
Fonction ExcelFonction Excel
Fonction ExcelHouda001
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfAdjimbawNDIAYE
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Mamadou Oury Ba
 
Introduction java
Introduction javaIntroduction java
Introduction javaFouad Root
 
js---Partie1----.pdf
js---Partie1----.pdfjs---Partie1----.pdf
js---Partie1----.pdfMiRA452885
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxbetalab
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Mathieu Saby
 

Similaire à Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel (20)

03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf03_Prog_C_Fonctions.pdf
03_Prog_C_Fonctions.pdf
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
Kevin Olivier Avignon: Une introduction à la pensée fonctionnelle avec F#
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
 
mis
mismis
mis
 
Visual studio
Visual studioVisual studio
Visual studio
 
initiation au javascript
initiation au javascriptinitiation au javascript
initiation au javascript
 
Fonction Excel
Fonction ExcelFonction Excel
Fonction Excel
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Chapitre 3 et 4
Chapitre 3 et 4Chapitre 3 et 4
Chapitre 3 et 4
 
ExJava.pdf
ExJava.pdfExJava.pdf
ExJava.pdf
 
Theme 7
Theme 7Theme 7
Theme 7
 
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdfChapitre 2-Concepts de base de l'algorithme-2024.pdf
Chapitre 2-Concepts de base de l'algorithme-2024.pdf
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5
 
JAVA Chapitre7
JAVA Chapitre7JAVA Chapitre7
JAVA Chapitre7
 
Introduction java
Introduction javaIntroduction java
Introduction java
 
js---Partie1----.pdf
js---Partie1----.pdfjs---Partie1----.pdf
js---Partie1----.pdf
 
Formation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptxFormation en Python_Niveau1_2023.pptx
Formation en Python_Niveau1_2023.pptx
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
Python.pptx
Python.pptxPython.pptx
Python.pptx
 

Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel

  • 1. Introduction au language Visual Basic for Applications dans le monde Excel
  • 2. Ressources  FAQ : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx  Référence : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx  Nombreux livres  Aide en ligne d’Excel
  • 3. Programmer sous Excel  Pour accéder à l’environement de programmation sous Excel, deux possibilités  Par les menus  Alt F11
  • 4. L’environement de dévelopement Explorateur de projet Éditeur Espions (débogage) Propriétés
  • 5. Ajouter une fonction à Excel Click droit sur “Microsoft Excel objects” : Séléctioner “Module”
  • 6. Généralités sur VBA  VBA est un langage compilé au moment de l’exécution.  Insensible à la casse, l’editeur VBA modifie texte tapé de tel sorte qu’il ay la même casse que des objets existants (fonctions, variables, sub, etc.)  Une fonction peut se nommer MyFunction, on tape myfunction l’éditeur changera m et f an majuscules.  Les commentaires débutent par ‘ et terminent en fin de ligne.  La barre d’outils ’Édition’ peut s’avérer pratique quand on programme.
  • 7. Structure d’une fonction Délimiteurs de fonction Nom de la fonction Type de la fonction Nom de l’argument Type de l’argument Liste des arguments Corps de la fonction: Attribution fonctionne comme valeur de retour
  • 9. Conditions pour fonctions à appeler dans Excel  Ne pas changer la structure d’une feuille Excel.  Ne pas changer les propriétés d’une cellule.  Toute fonction appelée doit respecter les mêmes restrictions.  Si la fonction doit être exécuté même si ses arguments ne changent pas il faut appeler Application.Volatile.  Doit retourner un type qui Excel sait traiter.
  • 10. Subroutines  Les sub ne renvoient pas de résultat, contrairement aux fonctions.  Les sub ne peuvent pas être appelées directement depuis les cellules de Excel.  Si une sub est appelée depuis une fonction qui est appelée depuis une cellule, alors elle doit respecter les mêmes restrictions que ces fonctions.
  • 11. Valeurs par défaut  Les paramètres des Function et Sub peuvent être optionnels. Si un paramètre est optionnel tous les paramètres suivants le sont aussi.  Si un paramètre est de type Variant on peut tester que l’appel n’a pas définit ce paramètre avec IsMissing. Sub ajoutEspace(ByRef str As String, Optional nb As Integer = 5) Dim prefix As String prefix = Space(nb) str = prefix & str Debug.Print str End Sub Sub ajoutEspace(ByRef str As String, Optional vnb As Variant) Dim prefix As String Dim nb As Integer If IsMissing(vnb) Then nb = 5 Else nb = CInt(vnb) End If prefix = Space(nb) str = prefix & str Debug.Print str End Sub
  • 12. Paramètres nommés  On peut appeler une fonction en nommant ses paramètres. ajoutEspace str:=res, nb:=10 Sub ajoutEspace(ByRef str As String, Optional nb As Integer = 5) Dim prefix As String prefix = Space(nb) str = prefix & str Debug.Print str End Sub
  • 13. Déclaration des variables On déclare une variable à l’aide de Dim : Function surfCercle(x As Double) As Double Dim pi As Double pi = 3.1415279 surfCercle = x * x * pi End Function Par défaut les variables n’ont pas besoin d’etre déclarées, elles ont le type Variant. Il faut utiliser Option Explicit pour rendre la déclaration obligatoire.
  • 14. Types  String : Chaines de caractères.  Types numériques : entiers, réels en virgule flottante (précision simple ou double) et réels en virgule fixe (decimal).  Dates : Représentation des dates en nombre de jours écoulés depuis le premier janvier 1900.  Tableaux : une collection de variables d’un autre type, l’indexation est au choix de l’utilisateur, par défaut de 1 à N.  Variant : Type abritant tout autre type.  Objets : Types définis dans des bibliothèques ou par des utilisateurs.
  • 15. Strings  Une chaine de caractères se déclare comme String, par exemple :  Dim message As String  De nombreuses fonctions de manipulation de strings sont disponibles, exemples :  Len, calcule la taille  InStr, cherche dans une String  Replace, modifie une String  Etc.
  • 16. Types numériques  Entiers :  Byte  Integer, entier 2 octets  Long, entier 4 octets  Decimal : Currency  Réels virgule flotante :  Single, 4 octets  Double, 8 octets
  • 17. Booléens et dates  Boolean, représente vrai ou faux.  Date, représente une date, stockée comme nombre de jours depuis le premier janvier 1900. Il y a un jour de décalage avec des dates Java.
  • 18. Tableaux  Un tableau (array) se déclare en ajoutant au nom d’une variable des paranthèses et une dimension.  On accéde aux éléments d’un tableau par indexation.  L’option globale Option Base permet de fixer le premier indice de chaque tableau, par défaut les tableaux commencent à 1. Sub arrTest(j As Integer) Dim t(1 To 10) As Integer Dim i As Integer i = 1 While i <= 10 t(i) = j + I i = i + 1 end End Sub
  • 19. Appel de Function  Une Function s’appelle en plaçant une liste d’expressions entre parenthèses à la place de la liste des arguments.  Un appel de fonction remplace toute expression du même type que le type de retour de la fonction.  Exemple :  X=surfCercle(2.0)+4
  • 20. Appel de sub 2 façons d’appeler une sub: • Call suivi du nom, les arguments entre () • nom du Sub (sans Call) avec arguments séparés par , Function HelloWorld() As String Dim res As String res = "Hello World" Call ajoutEspace(res) HelloWorld = res End Function Sub ajoutEspace(ByRef str As String) str = " " & str End Sub
  • 21. Sub, Function : paramètres  Deux façons de passer un paramètre a une Function où Sub :  Par valeur, le nom du paramètre est précédé par ByVal.  Par référence, le nom du paramètre est précédé par ByRef (cette méthode de passage de paramètres est la méthode par défaut).
  • 22. Variables globales  Une variable déclarée à l’extérieur de toute Function ou Sub est globale.  Deux types de visibilités sont possibles :  Public, visible depuis tous modules,  Private, visible uniquement dans le module courant.
  • 23. Instructions de contrôle  Conditionels :  If  Iif Function Signe(x As Double) As Byte If x > 0 Then Signe = 1 ElseIf x < 0 Then Signe = -1 Else Signe = 0 End If End Function
  • 24. Boucles  While  For  For Each, s’utilise avec de collections. Sub arrTest(j As Integer) Dim t(1 To 10) As Integer Dim i As Integer i = 1 While i <= 10 t(i) = j + i i = i + 1 Wend End Sub
  • 25. Manipulation des cellules  Les feuilles et les cellules d’Excel sont des variables de type spécial. Elles peuvent être manipulées dans VBA.  À chaque feuille correspond une variable :
  • 26. Utilisation d’objets  Un objet est une variable dont le type est une classe appartenant au projet courant où à une bibliothèque.  Un objet se déclare à l’aide de Dim comme pour toute variable.  Un objet doit être crée avec une instruction New et l’attribution du résultat de New se fait obligatoirement à l’aide de Set.  Un objet non initialisé contient Nothing.
  • 27. Objets et classes  Une classe est un type défini dans une bibliothèque.  Une variable dont le type est une classe est un Object.  Un Objet contient des membres qui peuvent être  des propriétés,  Des méthodes (des fonctions)  Deux objets de même type ont, en général, des propriétés avec des états différents.
  • 28. Accès aux cellules  Parmi les membres de la classe Worksheet on trouve la méthode Cells.  Il y a deux versions de la méthode Cells  À deux arguments entiers représentant le nombre de lignes et le nombre de colonnes. Ex: Cells(1,1)  À un argument String représentant l’adresse d’une cellule. Ex Cells("A1")  La méthode Cells retourne un objet du type Range qui représente un groupe de cellules.
  • 29. Range : quelques membres  Value, propriété qui représente le contenu de la cellule.  Text, propriété qui représente le texte affiché par la cellule.  Formula, propriété qui représente la formule de la cellule.  ClearContents, méthode qui efface le contenu de la cellule.  ClearComments, méthode qui efface les comentaires de la cellule.
  • 30. Exemple Option Explicit Sub displaySquare() Dim i As Integer For i = 1 To 100 result.Cells(i, 1).Value = i * i result.Cells(i, 1).Interior.ColorIndex = i Mod 32 Next i End Sub Result est un Objet de type Excel.Worksheet Excel -> bibliothèque Worksheet -> class Cells est une méthode de la class Worksheet à 2 arguments (il a une Autre méthode de même nom à 1 argument) qui retourne un objet de type Excel.Range Value est une propriété de la class Range
  • 31. Évènements  Le évènements sont des subroutines qui s’exécutent assynchronement . Ils sont déclenchés automatiquement par des actions extérieures.  Quelques exemples :  Click de souris sur bouton  Changement de contenu d’une cellule  Changement de la cellule courante Private Sub btnGo_Click() displaySquare End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub End If If Target.Address = "$A$1" Then calc.Cells(1, 4).Value = "A1 Changed" End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) calc.Cells(2, 4).Value = "selection is now " & Target.Address End Sub
  • 32. Évènements Nom de la class, Dans certains cas nom De l’objet Nom de l’évènement
  • 33. Erreurs  Dans son comportement par défaut l’exécution s’arrête et un message est affiché.  On peut spécifier un autre comportement si une erreur se produit, trois comportemens sont possibles :  On Error Goto 0, le comportement par défaut  On Error Resume Next, ignorer les erreurs et passer à l’instruction suivante.  On Error Goto <label>, sauter à <label> (ligne marqué de <label>:) si une erreur se produit.  Si une erreur se produit la variable Err est initialisée.
  • 34. Erreurs (suite)  La variable Err contient plusieurs membres, les plus importants :  Number, contient le numéro unique de l’erreur.  Description, contient la description de l’erreur.  Raise, produit une erreur (utile pour signaler des erreurs à d’autres parties du programme.  Clear, nettoye la dernière erreur.
  • 35. Erreurs (exemple) Sub ajoutEspace(ByRef str As String, Optional vnb As Variant) Dim prefix As String Dim nb As Integer On Error GoTo err_label If IsMissing(vnb) Then nb = 5 Else nb = CInt(vnb) End If prefix = Space(nb) str = prefix & str Exit Sub err_label: MsgBox Err.Description End Sub Modification du traitement des erreurs. Label Accès à l’erreur
  • 36. Modules de classe  Dans un module de classe on peut définir ses propres classes.  Une classe contient 3 types de membres :  Des variables membres  Des méthodes  Des propriétés  2 types de visibilité pour les membres :  Private  Public
  • 38. Exemple : Action Option Explicit Public nom As String Public cours As Currency Variables membres
  • 39. Exemple : Option Option Explicit Private isCall As Boolean Public strike As Currency Public maturity As Date Public sousjacent As Act Public Property Let TypeContrat(tp As String) If LCase(tp) = "call" Then isCall = True Else isCall = False End If End Property Membre privé Propriété : Écriture Membres publiques
  • 40. Exemple : Option Public Property Get TypeContrat() As String If isCall Then TypeContrat = "Call" Else TypeContrat = "Put" End If End Property Propriété : Lecture
  • 41. Exemple : Option Public Function GetPrice(r As Double, vol As Double) As Double Dim td As Date Dim days2exp As Long td = Date days2exp = maturity - td If isCall Then GetPrice = Call_Eur(sousjacent.cours, strike, days2exp, r, vol) Else GetPrice = Put_Eur(sousjacent.cours, strike, days2exp, r, vol) End If End Function Fonction membre
  • 42. Utilisation d’une classe Sub test() Dim FT As New Act Dim CallFT As New Opt Dim price As Double FT.nom = "Fance Telecom" FT.cours = 15.3 CallFT.TypeContrat = "Call" Set CallFT.sousjacent = FT CallFT.strike = 15 CallFT.maturity = "20/12/2012" price = CallFT.GetPrice(0.01, 0.2) Debug.Print price End Sub Déclarations/allocations Utilisation de propriétés Appel de méthode
  • 43. Forms  Les forms sont des objets graphiques qu’on peut afficher dans Excel.  On utilise des forms pour intéragir avec un utilisateur.  Une form est toujours composé d’une fenêtre sur laquelle s’affichent des contrôles graphiques.  La boite à outils de Excel propose plusieurs contrôles : boutons, zones de texte, liste de choix, etc.  Chaque contrôle propose des évènements qui permettent d’interagir avec l’utilisateur.  Chaque form gère son propre module.
  • 45. Form et boite à outils
  • 46. Design de la form
  • 47. Code associé à une form Évènement click du bouton Accès à une propriété d’un autre contrôle