Vous êtes sur la page 1sur 92

Cours Assia Hachichi avec la participation

de Badr Benmammar

Programmation
des applications financières
sous Excel en VBA
Référence bibliographique

Fabrice Riva, «Applications financières sous Excel en


Visual Basic», collection techniques de gestion.
Partie I

Syntaxe du VBA
Introduction à l’informatique
 L’informatique désigne l’automatisation des traitements
répétitifs et souvent long.

 Exemple :

 Quels sont les nombres parfaits parmi les 10000 premiers nombres

entiers positifs ?
 Un nombre est parfait s’il est égal à la somme de ses diviseurs (6 et 28 sont

des nombres parfaits, 6 = 1 + 2 + 3, 28 = 1 + 2 + 4 + 7 + 14).

Impossible de résoudre ce problème sans machine.


Domaines d'application de l’informatique
(1/2)
 Plusieurs domaines :
 Le domaine de la téléphonie, des communications et des médias :
l’informatique communicante.
 Le codage numérique permet la transmission du texte, de la voix, du son, des
images fixes ou vidéo et leur traitement par ordinateur.
 Le domaine industriel : l’informatique industrielle.
 Les ordinateurs peuvent être utilisés pour contrôler un (ou des) robot(s), une
chaîne de fabrication, une usine entière.
 Un seul ordinateur contrôle, un ou plusieurs équipements, ou plusieurs
ordinateurs communiquent, par un réseau informatique, pour contrôler
ensemble, l'ensemble des équipements industriels.
Domaines d'application de l’informatique
(2/2)
 Le domaine scientifique et l’ingénierie : l’informatique scientifique.
 L’informatique a d’abord permis de réaliser plus vite et plus précisément les
calculs nécessaires à la conception de systèmes en tous genres.
 La puissance de calcul des ordinateurs permet actuellement la "simulation" de
ces systèmes.
 L’informatique au service des chercheurs et des scientifiques dans le domaine
de la recherche fondamentale, par exemple.
 Le domaine banque/finance/comptabilité : l’informatique de gestion.
 La gestion de l’entreprise (gestion des stocks, des paies, des banques de
données).

L’informatique dans la science financière


L’informatique dans la science financière

 Appliquer des traitements statistiques et économétrique à des


données financières.

 Faire appel à des procédures numériques pour le traitement


des données.

 Omniprésence de l’informatique dans la science financière


 Programmation sous VBA (Visual Basic for Application)
Visual Basic for Application
 Visual Basic pour Applications (VBA) est le langage de programmation
des applications de Microsoft Office.

 VBA utilise le même langage que Microsoft Visual Basic.

 VBA permet :

 d’automatiser les tâches,


 de créer des applications complètes,
 de sécuriser vos saisies et vos documents,
 de créer de nouveaux menus et de nouvelles fonctions.

 La différence entre VB et VBA est que VB est un ensemble complet qui permet de
développer des applications indépendantes et librement distribuables alors qu’une
application réalisée en VBA est complètement liée au logiciel sous lequel elle a été
créée.

 Une application VBA créée sous Excel ne pourra pas se lancer sur un poste
si Excel n’est pas installé.
Structure de l’ordinateur

Unité d’entrée

Mémoire
CPU (instructions
et données)

Unité de sortie
Structure de programme
Sub <nomProgramme>()
Sub equation()
Déclaration de variables
Dim x, fx as integer

x = InputBox("donner la valeur de x")


Instructions
fx = x + 2

MsgBox(fx)

End sub
End Sub
Déclaration de variables
 Variable :
 Case mémoire.
 Définie par son identificateur (nom).
 Définie par son type (catégorie).
 Types des variables
 Integer : nombres entiers.
 Double : nombres décimaux.
 String : Chaîne de caractères.
 Boolean : prend la valeur Vrai et faux.
 Object : désigne un objet (Exemple: cellule d’Excel).
 Variant : peut prendre une valeur de n’importe quel type.
 Syntaxe : Dim <nom_var> As <type>
Instructions
 Instruction d’affectation.

 Instruction d’entrée.

 Instruction de sortie.

 Instruction conditionnelle.

 Instruction de répétition (boucles).


Instructions d’affectation
 Instruction d’affectation : définie avec "=".
 le "=" de l’informatique est différent du "=" mathématique.
 Il s’agit d’une affectation du contenu d’une case mémoire
dans une autre.

 Exemple : x y
 Dim x,y as integer Instruction 1
x y
x=2 Instruction 2 2
x y
y=x+5 Instruction 3 2 7
x y
y =y+1 Instruction 4 2 8
Instruction sortie d'information
 Besoin d’afficher un message à l’écran
 Syntaxe : MsgBox(y)
 Assure la recopie de la valeur de la variable y de la mémoire
centrale à l'écran.
 Affiche l’information au sein d'une fenêtre (boîte de message).
 Exemple :

 MsgBox("Bonjour")
Instruction entrée d'information
 Besoin d’afficher un message à l’utilisateur pour entrer une
valeur à partir du clavier.
 Syntaxe : x = InputBox("<message>").
 La valeur tapée est transmise par InputBox au sein de la
case-mémoire désignée par x.
 Exemple : x
Instruction 1 2

 Dim x as integer
 x = InputBox("donne la valeur de x")
Calcul de fonction f(x)
 Soit l’équation mathématique : f(x) = x + 2

 Sub equation()
 Dim x, fx as integer
 x = InputBox("donner la valeur de x")
 fx = x + 2
 MsgBox(fx)
 End sub
Exercice
 Rédiger un programme qui lors de son exécution permet à l’utilisateur de
donner son prénom et son nom, et qui affiche ensuite le prénom et le nom de
l’utilisateur sur une seule ligne, puis sur 2 lignes.

 Sub prenom_nom()

 Dim prenom, nom As String

 prenom = InputBox ("donnez votre prénom")

 nom = InputBox ("donnez votre nom")

 MsgBox (prenom & " " & nom)

 MsgBox (prenom & Chr(10) & nom)

 End Sub
Expressions arithmétiques
 Toute expression s’écrit en informatique sous forme :
 opérande 1 opérateur opérande 2

 Exemples:
 c = b² s’écrit : c = (b * b)

c=2*a s’écrit : c = (2 * a) / 3
3
 c = 2x + 3y + z² s’écrit : c = (2 * x) + ( 3 * y ) + (z * z)
 Incrémentation
z=z+1
Instruction conditionnelle

Syntaxe : If <condition> Then


I1
I2
… (autant d'instructions que nécessaire)
Else
J1
J2
… (autant d'instructions que nécessaire)
End If
<condition> est une condition logique, qui peut avoir soit la valeur vrai ou
faux
 Cas particulier : la partie "Else J1 J2 …" peut être omise si elle n'est
pas nécessaire.
Instruction conditionnelle
If <condition1> Then
I1
I2
… (autant d'instructions que nécessaire)
Else
.
.
If <condition2> Then
… (autant d'instructions que nécessaire)

Else
… (autant d'instructions que nécessaire)

End If

End If
Résoudre une équation
 Soit l’équation mathématique : ax² + bx + c = 0 (a≠0 et b≠0)
 La solution mathématique :
 Calcul de Delta := b² - 4ac.
 Si delta  0 alors il existe des solutions sinon il n’existe pas.
Résoudre une équation

 Solution informatique :
 Dim a,b,c,x1,x2,delta as double
 a = InputBox("donner la valeur de a")
 b = InputBox("donner la valeur de b")
 c = InputBox("donner la valeur de c")
 delta = (b*b) – (4 * a * c)
 Besoin d’exprimer un traitement selon la valeur de
delta
 Instruction conditionnelle
Résoudre une équation
Sub equation2degre()
Dim a,b,c,x1,x2,delta as double
a = InputBox("donner la valeur de a")
b = InputBox("donner la valeur de b")
c = InputBox("donner la valeur de c")
delta = (b * b) – (4 * a * c)
if (delta < 0 ) then
MsgBox("il n’existe pas de solutions")
Else
x1 = ((b * (-1)) + sqr(delta))/(2*a)
x2 = ((b * (-1)) - sqr(delta))/(2*a)
MsgBox("les solutions sont : ")
MsgBox(x1)
MsgBox(x2)
End if
End sub
Instruction de répétition (boucles)
 Soit une classe de 3 étudiants.
 Saisir les 3 notes et Calculer la moyenne de la classe.
Sub moyenne()
Dim x, somme as double
x = inputBox("Entrer la première note :")
somme = x
x = inputBox("Entrer la deuxième note :")
somme = somme + x
x = inputBox("Entrer la troisième note :")
somme = somme + x
MsgBox("la moyenne est : " & somme/3)
End sub
 Refaire le même programme pour 20 étudiants
 Besoin d’une instruction de répétition (boucles)
Boucle For
 Syntaxe :
For i = n1 To n2
I1
I2
… (autant d'instructions à répéter que nécessaire)
Next

 i est une variable de type Integer.


 n1 et n2 : deux valeurs entières.
 I1, I2,… : des instructions.
Saisie des notes des étudiants
Sub moyenne()
Dim x, somme as double
Dim i as integer
somme = 0
For i = 0 to 19
x = inputBox("Entrer la note :" )
somme = somme + x
next
MsgBox("la moyenne est : " & somme/20)
End sub
Boucle While et Do
 Syntaxe de la boucle while :  Syntaxe de la boucle Do

While <condition> Do
I1 I1
I2
I2
(…)
(…)
Loop Until <condition>
Wend
Méthodes utiles
 Concaténation de chaînes de caractères : &
 Dim t1, t2, t3 as string
 t1="Bonjour" 
 t2="Comment vas-tu?"
 t3= t1 & t2  
 Reste de la division entière : Mod
 17 Mod 3 (donne 2)
 Tirage au hasard : Rnd()
 x = Rnd() => x ]0,1[
 x = Rnd()*100 => 0<x<100
 x = Int(Rnd()*100) => tous les entiers tel que : 0<=x<100
 x = Int(1+Rnd()*6) => x  {1,2,3,4,5,6}
Exemple : Lancement de 2 dés
 Soit les valeurs x et y, résultats du lancer de 2 dés. Tester si x et
y sont égaux.
Sub Dés()
Dim x, y As Integer
x = Int(1 + Rnd() * 6)
MsgBox (" x = " & x)
y = Int(1 + Rnd() * 6)
MsgBox (" y = " & y)
If (x = y) Then
MsgBox (" x et y sont égaux")
Else
MsgBox (" x et y ne sont pas égaux")
End If
End Sub
Exemple : Calculer le Max
 Donner successivement 10 nombres. Quelle est la valeur du nombre le plus
grand ?

Sub plusgrand()
Dim nombre, i, Max As Integer
nombre = InputBox ("donner un nombre:")
Max = nombre
For i = 1 To 9
nombre = InputBox ("donner un nombre:")
If nombre > Max Then
Max = nombre
End If
Next
MsgBox ("le max est: " & Max)
End Sub
Exemple : Somme et Produit
 Soit 2 nombres x et y donnés par l’utilisateur, puis une lettre donnée par
l’utilisateur.
Si la lettre tapée est « P », le résultat calculé par le programme vaut le produit
x*y ; si la lettre tapée est « S », le résultat calculé vaut la somme x+y.

Sub Somme_Produit()
Dim x, y, produit, somme As Integer
Dim lettre As String
x = InputBox("donnez x")
y = InputBox("donnez y")
lettre = InputBox("donnez la lettre")
If (lettre = "P") Then
produit = x * y
MsgBox (produit)
Else
If (lettre = "S") Then
somme = x + y
MsgBox (somme)
Else
MsgBox ("pas de traitement")
End If
End If
End Sub
Exemple : Factorielle
 Le programme qui effecute le factorielle de x :
Sub PgrFactorielle()
Dim f As Double
Dim i,x As Integer
f=1 x=5
For i = 1 To x
f=f*i
Next
MsgBox(f)
End Sub
Ecrivez le programme qui calcul : 3! + 5! + 8!
Sub PgrFactorielle()
Dim f As Double Dim i, somme As Integer
somme =0,
f=1
For i = 1 To 3
f=f*i
Next
somme = somme + f
f=1
For i = 1 To 5
f=f*i
Next
somme = somme + f
f=1
For i = 1 To 8
f=f*i
Next
somme = somme + f
MsgBox(somme)
End Sub
Ecrivez le programme qui calcul : 3! + 5! + 8!
Sub PgrFactorielle()
Dim f As Double Dim i, somme As Integer
somme =0,

facto(3)

somme = somme + f

facto(5)

somme = somme + f

facto(8)

somme = somme + f
MsgBox(somme)
End Sub
Fonctions et Procédures
Sub calcul()
Dim res As Double
res = facto(3) + facto(5) + facto(8)
MsgBox ("le résultat vaut " & res)
End Sub

Function facto(x As Integer) As Double


Instructions …
facto = resultat
End Function
Factorielle
Sub calcul()
Dim res As Double
res = facto (3) + facto (5) + facto (8)
MsgBox ("le résultat vaut " & res)
End Sub
Function facto (n As Integer) As Double
Dim f As Double
Dim i As Integer
f=1
For i = 1 To n
f=f*i
Next
facto = f
End Function
Fonction puissance
 Calculer (x^4+x^7+x^12) à l'aide d'une fonction puissance(x,n)
qu’il convient de définir.
Sub calcul()
Dim res, x As Double
x = InputBox ("Donner x : ")
res = puissance(x, 4) + puissance(x, 7) + puissance(x, 12)
MsgBox ("le résultat vaut " & res)
End Sub

Function puissance(x As Double, n As Integer) As Double


Dim f As Double
Dim i As Integer
f=1
For i = 1 To n
f=f*x
Next
puissance = f
End Function
Partie II

VBA sous Excel


VBA : VB for Application
 Visual Basic for Excel
 VBA est un langage orienté objet
 Un objet est un élément sur lequel il est possible d’agir :
 Un classeur qu’on peut ouvrir ou fermer
 Un menu que l’on active
 Une cellule dans laquelle on saisit une formule
 Les objets peuvent être manipulés à partir de :
 Clavier, souris
 Par le biais d’un programme
Le fonctionnement d’un objet
 Le fonctionnement d’un objet est déterminé par ce que l’on
nomme :
 Ses propriétés : ses différentes caractéristiques
 Exemples : couleur de fond, largeur, valeur, etc
 Range(“A1").Font.Bold = True

 Modifier une propriété : <objet>.<propriété> = valeur


 Lire une propriété : <variable> = <objet>.<propriété>

 Ses méthodes : actions attachées à cet objet


 Exemples : sélectionner, couper, coller
 Appliquer : <objet>.<méthode>
 Range("A1").Cut Destination:=Range("B1")
Organisation des objets Excel

 Les objets se présentent sous une organisation hiérarchique


 Application Excel
 Workbooks (classeurs)
 Worksheets (feuilles de calcul)
 Range (plage de cellules)

Range ("A1") : désigne la cellule A1.


Range ("A1:C3") : désigne la plage délimitée en haut
à gauche par la cellule A1 et en bas à droite par la
cellule C3.
Accéder aux objets Excel

 Les objets sont organisés sous forme de répertoire et sous


répertoire

 L’accès s’effectue en partant du sommet et en progressant


jusqu’à atteindre l’objet voulu
 Le point est utilisé comme séparateur
Exemple d’accès à une cellule
 Griser l’intérieur de la cellule B2 dans la feuille « feuil3 » du
classeur en cours d’utilisation

ActiveWorkbook.Worksheets("feuil3").Range("B2").interior.color
= vbgray

 Plus simplifié :

Range("B2").interior.color =vbgray
Hiérarchie des objets Excel

ActiveWorkbook("Classeur1").Worksheets("Feuil1").Range("A1").interior.color = vbgreen
Désignation de cellules
Range : renvoie une collection de cellules

Range ("A1") : désigne la cellule A1.


Range ("A1:C3") : désigne la plage délimitée en haut à gauche par la
cellule A1 et en bas à droite par la cellule C3.

Cells : renvoie une collection de cellules

Cells (5): désigne la cellule E1.


Cells (2,3): désigne la cellule C2.

Rows : renvoie une collection de lignes

Rows (1) : désigne la première ligne.


Rows ("1:3") : désigne les lignes 1 à 3.
Désignation de cellules
Columns : renvoie une collection de colonnes
Columns ("A") : désigne la première colonne.
Columns ("A:C"): désigne les colonnes A à C.

ActiveCell : correspond à la cellule active

Selection : renvoie la plage sélectionné par l’utilisateur

Offset : correspond à une plage décalée


Range ("A1").Activate
ActiveCell.Offset (1,1): désigne la cellule B2 (décalage d’une ligne
vers le bas et une colonne vers la droite).
Sélection de cellules et plages
 La sélection d’un objet Range s’obtient par les méthodes
 Select : sélectionne l’objet
 Activate : rend une cellule, classeur ou feuille active
 Adressage direct
 Range ("A1:C3,D4:E5").select
 Cells(2,3).select
 Columns("A").select
 Adressage indirect
 Range ("A1").offset(2,3).select
 ActiveCell.offset(1,1).select
Propriétés utiles
propriété Son rôle
Count Rend le nombre d’éléments
Name Permet de nommer

 Range ("A1:C3").Name ="MaPlage".


 Range ("MaPlage").Count
 Range ("A1").Formula = "=sum(B2:B6)"
 Range ("A2").Formula = "=average(B2:B6)"

Exemple:
Sub nbelement()
Dim i As Integer
Range("A1:D3").Name = "MaPlage"
i = Range("MaPlage").Count
MsgBox ("le nombre d’éléments: " & i)
End Sub
Exemple : selection + Offset
 Sub exemple1()
 Dim plage As Object
 Dim nb As Integer
 Set plage = selection
 nb = plage.Count
 MsgBox (nb)
 End Sub

 Sub exemple2()
Range("A1").Offset(2, 3).Select
ActiveCell.Value = 5
 End Sub
Exemple 1

 Soit 5 notes mises dans les cellules B1:B5.

 Ecrire un programme qui calcule la moyenne des 5 notes.

 Le résultat doit être mis en B6.


Solution 1
Sub cinqnotes1()
Dim plage As Object
Dim i As Integer
Dim s, m As Double
Set plage = Range("B1:B5")
s=0
For i = 1 To 5
s = s + plage.Cells(i).Value
Next
m=s/5
Range("B6").Value = m
End Sub
Exemple 2

 Soit plusieurs notes mises sur une colonne au sein de la feuille


de calcul.
 Ecrire un programme qui calcule la moyenne de ces notes et
qui calcule le nombre de notes >12.
 Les résultats doivent être mis en-dessous des notes au sein de
la même colonne.
Solution 2
Sub cinqnotes2()
Dim plage As Object
Dim s,m As Double
Dim i, nbsup, nb As Integer
Set plage = Selection
nb = plage.Count
s=0
nbsup = 0
For i = 1 To nb
s = s + plage.Cells(i).Value
If plage.Cells(i).Value > 12 Then nbsup = nbsup + 1
Next
m = s / nb
plage.Cells(nb + 1).Value = m
plage.Cells(nb + 2).Value = nbsup
End Sub
Exemple 3
 Soit une facture structurée par 5 lignes où figure sur chaque
ligne, pour chacun des 5 produits, le nombre de produits et le
prix unitaire.

 Définir le programme qui calcule la somme à payer pour


chaque produit ainsi que le montant total de la facture, et qui
affecte les résultats aux cellules concernées.
Solution 3
Sub cinqnotes3()
Dim plage As Object
Dim i As Integer
Dim s, ttc As Double

Set plage = Range ("B1:D5")


s=0
For i = 1 To 5
ttc = plage.Cells(i,1) * plage.Cells(i,2)
plage.Cells(i,3) = ttc
s = s + ttc
Next
Range ("D6") = s
End Sub
Organisation de projet VB

 Un projet VB est un ensemble hiérarchisé


 Modules
 Deux types de modules existent
 Module de classes
 Module de code
 Userforms
 Interface créée pour l’utilisateur
Modules
 Modules de classe
 Servent à définir de nouvelles classes d’objets, méthodes et
propriétés
 Modules de code
 Ils sont destinés à recevoir du code VB
 Ils contiennent les instructions qui constituent un programme

 Création du module : menu insertion/module


 Offrent plusieurs propriétés et méthodes
Userforms
 Userforms
 Sont utilisées pour créer des interfaces utilisateurs interactives
 Construites en fonctions des éléments suivants :
 Listesdéroulantes
 Cases à cocher
 Barres de déplacement

 Nécessite le développement d’évènements associés


 Clique sur un bouton
 Mise à jour d’une zone de texte
Code Visual Basic
 Le code VB est structuré au sein de ces éléments de projet par
 Procédures : Sub
 Fonctions : Function

 Procédure :
 Un ensemble d’instructions destiné à accomplir une tâche
élémentaire
 Les procédures peuvent s’appeler les unes les autres
 Call <nom_module>.<nom_proc>(arg1, …)
Exemples
Sub proc1()
Instruction1
Call proc2(arg1, arg2)
Instruction2
End sub

Sub proc2(arg1, arg2)


Instruction3
End sub
Procédures
 (private/public)(static) sub <nom> (…)

 Instructions

 End sub

 Public / private (autorisation d’appel entre modules)


Fonctions
 (private/public) Function <nomfct> (variables as <type>) as <type>
 Instructions
 nomfct = expression
 End Function
 Appel à une fonction s’effectue sans Call
Public Function facto(n As Integer) As Double
Dim f As Double
Dim i As Integer
f=1
For i = 1 To n
f=f*i
Next
facto = f
End Function
Sub calcul()
Dim res As Double
res = facto (3)
End Sub
Exemple de Fonction
Calculer la valeur acquise d’un placement (m = 1000 €) aux taux (i = 5%) pendant
(n = 10 années)

Function capi (m As Double, i As Double, n As Integer) As Double

If n = 1 Then
capi = m + m * i
Else
capi = capi (m, i, n - 1) + capi (m, i, n - 1) * i
End If

End Function

Sub valeur ()
Dim res As Double
res = capi (1000, 0.05, 10)
MsgBox (res)
End Sub
Partie III

Construction de
l’interface graphique
Construction de l’interface graphique

 Etapes de construction :

 Insertion d’interface graphique

 Ajout de contrôles

 Attribuer des noms aux contrôles

 Programmation de la UserForm
Insertion d’interface graphique

 Explorateur de projet
 Objet ThisWorkbook

 Insertion/UserForm
Insertion d’interface graphique

 Apparition de :

 fenêtre UserForm

 fenêtre Boite à outils


Les contrôles
 Un UserForm se présente sous la forme d’une grille vierge.
 Ajout de contrôles :
 Label : afficher un texte descriptif (Jour, Mois, Année, …).
 TextBox : zone de saisie d’informations, affichage d’un résultat.
 ComboBox : affiche une liste de valeurs et permet
d’en sélectionner une parmi celles proposées.
 CheckBox : case à cocher
 OptionButton : proposer à l’utilisateur un choix parmi
plusieurs options possibles.
 CommandButton : lance, termine ou interrompt une action
ou une série d’actions.
 MultiPage : constituer au sein d’une même UserForm
des feuilles multiples accessibles chacune via un onglet.
 ScrollBar : barre de défilement, définir la valeur d’un autre
contrôle en fonction de la position du curseur de défilement.
 SpinButton : incrémente ou décrémente la valeur
d’un autre contrôle.
Propriétés des contrôles

 Name : chaîne de caractères correspondant au nom de l’objet.

 Caption : chaîne de caractères correspondant au texte descriptif

apparaissant sur l’objet.

 Value : récupère et change la valeur d’un objet.


Programmation de la UserForm
 Associer du code aux évènements
 Cliquer sur un bouton
 Mettre à jour une zone de texte

 Spécifier le comportement des contrôles


 Ecrire les procédures événementielles
 Pour basculer vers le code d’un objet
 Double cliquer sur l’objet concerné
 Génération du nom de la procédure adaptée
Fermer l’UserForm

Private Sub CommandButton1_Click()


Unload UserForm1
End Sub
Ajoutez un contrôle dynamiquement dans
l’UserForm
 Private Sub CommandButton1_Click()
 Dim Obj As Control
 Set Obj = Controls.Add ("Forms.Textbox.1")
 With Obj
 .Name = "monTextBox" ‘Renvoie le nom de l’objet
 .Left = 140 ‘définit la position par rapport au bord gauche de la UserForm
 .Top = 30 ‘définit la position par rapport au bord supérieur de la UserForm
 .Width = 50 ‘définit la dimension horizontale
 .Height = 20 ‘définit la dimension verticale
 End With
 End Sub
Suppression d’un contrôle

 Private Sub CommandButton2_Click()

 Controls.Remove "monTextBox"

 End Sub
Conversion Francs -> euros
Code
 Public S As Double

 Function conveuro (F As Double) As Double


 conveuro = F / 6.559
 End Function

 Private Sub CommandButton1_Click()


 Unload UserForm1
 End Sub

 Private Sub Label1_Click()


 S = InputBox ("entrez une somme en francs")
 TextBox1.Value = S
 TextBox2.Value = (conveuro(S))
 TextBox2.Value = Format(TextBox2.Value, "0.###")
 End Sub
Partie IV

Matrices et Statistiques
Boucles
 For <compteur> = <Début> To <Fin>
 Inst
 Next

 Appliquer le même traitement à chaque objet appartenant à


une collection

 For Each <variable> In <nom de collection>


 Inst
 Next
Exemple

Sub Exemple_For_Each()
Dim Feuille as worksheet
For Each Feuille in worksheets
Feuille.Activate
Range("A1").Interior.Color = vbred
Next
End sub
Fonctions de conversion
 Val : convertit une chaîne de caractères en un nombre.
 Exemple : Val ("3.4") retourne le nombre 3,4.

 CStr : convertit un nombre en une chaîne da caractères.


 Exemple : CStr (3,4) retourne la chaîne de caractères "3.4".
Portée d’une variable
 3 types de portée :
 La portée de niveau procédure
 La porté de niveau module privée
 La de niveau module publique

Public x As Integer
Sub module1()
Sub module2()
x = 10
MsgBox (module1.x)
MsgBox (x)
End Sub
End Sub
Déclaration de tableau
 Les tableaux
 Structure composée d’éléments de même type

 Chaque élément est identifié par un numéro Index

 Déclaration de tableau
 Dim <nom>(<nb1>, …, <nbn>) As <type>
 Le nombre d’éléments dans chacune de ses dimensions.
 Option Base 1 : le numéro d’index du premier élément figurant dans chacune des n
dimensions.

 Dim <nom>(<debut1> to <fin1>, …, <debutn> To <finn>) as <type>


 L’intervalle d’appartenance des index dans chacune des dimensions.
Tableaux
 Tableau à une seule dimension

 Vecteur
 Dim Vect (20) As Integer

 Tableau Multidimensionnel

 Matrice à deux dimensions


 Dim Mat (20,40) As Double
Tableau Dynamique
 Déclaration
 Dim|private|public <nom> () As <type>
 Parenthèses vides servent à indiquer le caractère dynamique de la variable.
 Redimensionner un tableau dynamique
 ReDim [Preserve] <nom>(<nb1>, …, <nbn>) As <type>

 ReDim [Preserve] <nom>(<debut1> to <fin1>, …, <debutn> To <finn>)


as <type>
 Preserve: argument optionnel, indique que les éléments contenus dans la
variable avant redimensionnement doivent être conservés.
Gestion des matrices
 Matrice => tableau à deux dimensions

 Le résultat d’une opération matricielle (produit, inversion, …) ne peut


être affecté qu’à des variables de type Variant.
 Le contenu ne peut pas être récupéré immédiatement
 Le contenu de la matrice est affiché dans une feuille
 <Plage>.Value = <Matrice>
 Le contenu de la matrice est stocké dans une variable tableau
 <Variable>(< i >, < j >) = WorksheetFunction.Index(<Matrice>,< i >,< j >)
 WorksheetFunction est utilisé comme conteneur des fonctions de feuille de
calcul Microsoft Excel que vous pouvez appeler à partir de VBA.
Exemple 1
 Option Base 1
 Sub Feuille_Vect()
 Dim i As Integer
 Dim Vect(10) As Integer
 Dim Vari(10) As Integer
 Dim plage As Object
 Set plage = Range("A1:A10")
 For i = 1 To 10
 Vect (i) = i
 plage (i).Value = Vect(i)
 Vari (i) = WorksheetFunction.Index(Vect, i)
 Next
 End Sub
Exemple 2
 Option Base 1
 Sub Feuille_Mat ()
 Dim i, j As Integer
 Dim Mat(10, 10) As Integer
 Dim Mati(10, 10) As Integer
 Dim plage As Object
 Set plage = Range("A1:B10")
 For i = 1 To 10
 For j = 1 To 10
 Mat(i, j) = i * j
 plage(i, j).Value = Mat(i, j)
 Mati(i, j) = WorksheetFunction.Index(Mat, i, j)
 Next
 Next
 End Sub
Opérations matricielles

Opération Fonction Excel Fonction VBA

Produit PRODUITMAT MMult

Transposée TRANSPOSE Transpose

Inverse INVERSEMAT MInverse

Déterminant DETERMAT MDeterm

Exemple: Le déterminant d’une matrice est calculé comme suit :


WorksheetFunction.MDeterm (Matrice)
Déterminant
 Option Base 1
 Sub Determinant()
 Dim i, j As Integer
 Dim Mat(2, 2) As Integer
 Dim Det As Double
 Dim plage As Object
 Set plage = Range ("A1:B2")
 For i = 1 To 2
 For j = 1 To 2
 Mat (i, j) = i * j + 2
 plage (i, j).Value = Mat(i, j)
 Next
 Next
 Det = WorksheetFunction.MDeterm(Mat)
 MsgBox ("Déterminant : " & Det)
 End Sub
Exercice
1 -2
 Soit la matrice A =
3 4

 Afficher la matrice A ainsi que l’Inverse de A dans des plages de cellules de


votre choix.
Solution
Option Base 1
Sub MatriceInverse()
Dim i, j As Integer
Dim Mat(2, 2) As Integer
Dim plage As Object
Dim MatInv As Variant
Set plage = Range ("A1:B2")
Set plage1 = Range ("A4:B6")
Mat(1, 1) = 1
Mat(1, 2) = -2
Mat(2, 1) = 3
Mat(2, 2) = 4
MatInv = WorksheetFunction.MInverse(Mat)
For i = 1 To 2
For j = 1 To 2
plage(i, j).Value = Mat(i, j)
plage1(i, j).Value = MatInv(i, j)
Next
Next
End Sub
Les statistiques

Fonction Excel Fonction VBA


NOMBRE Count
MOYENNE Average
ECARTYPE StDev
ECARTYPEP StDevP
MEDIANE Median
COEFFICIENT.ASYMETRIE Skew
KURTOSIS Kurt
Exemple: Propriétés des taux de rentabilité
boursiers
Count: le nombre d’objets d’une collection

Average: la moyenne (arithmétique) des arguments.

StDev: mesure la dispersion des valeurs par rapport à la moyenne en se basant sur un échantillon
de cette population.
StDevP: même chose que StDev sauf que les données représentent l’ensemble de la population.

Median: c’est la valeur qui se trouve au centre d’un ensemble de nombres.

Skew: caractérise le degré d’asymétrie d’une distribution par rapport à sa moyenne.


Une asymétrie positive indique une distribution décalée vers les valeurs les plus positives.
Une asymétrie négative indique une distribution décalée vers les valeurs les plus négatives.
Kurt: caractérise la forme de pic ou l’aplatissement relatifs d’une distribution comparée à une
distribution normale.
Un kurtosis positif indique une distribution relativement pointue.
Un kurtosis négatif signale une distribution relativement aplatie.
Un kurtosis en excès nettement > 0 : une fréquence des événements extrêmes (très fortes hausses
et très fortes baisses).

Vous aimerez peut-être aussi