Sie sind auf Seite 1von 45

Introduction au language Visual Basic for Applications dans le monde Excel

Ressources
FAQ : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx
Rfrence : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx Nombreux livres Aide en ligne dExcel

Programmer sous Excel


Pour accder lenvironement de programmation sous

Excel, deux possibilits


Par les menus Alt F11

Lenvironement de dvelopement

diteur

Explorateur de projet

Proprits

Espions (dbogage)

Ajouter une fonction Excel


Click droit sur Microsoft Excel objects :

Slctioner Module

Structure dune fonction


Dlimiteurs de fonction NomType de largument Liste des Type de de largument Nom de la fonction argumentsla fonction

Corps de la fonction: Attribution fonctionne comme valeur de retour

Utilisation dans Excel

Conditions pour fonctions appeler dans Excel


Ne pas changer la structure dune feuille Excel.
Ne pas changer les proprits dune cellule. Toute fonction appele doit respecter les mmes

restrictions. Si la fonction doit tre excut mme 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 rsultat, contrairement

aux fonctions. Les sub ne peuvent pas tre appeles directement depuis les cellules de Excel. Si une sub est appele depuis une fonction qui est appele depuis une cellule, alors elle doit respecter les mmes restrictions que ces fonctions.

Valeurs par dfaut


Les paramtres des Function et Sub peuvent tre

optionnels. Si un paramtre est optionnel tous les paramtres suivants le sont aussi. 5) Si Sub ajoutEspace(ByRef str As type Variantnb Aspeut tester que un paramtre est de String, Optional on Integer =Variant) Dim prefix ajoutEspace(ByRef str As String, Optional vnb As Sub As String lappel na pas dfinit ce paramtre avec IsMissing. prefix = Dim prefix As String Space(nb)
str = prefix &nb As Integer Dim str Debug.Print str If IsMissing(vnb) Then End Sub nb = 5 Else nb = CInt(vnb) End If
prefix = Space(nb) str = prefix & str Debug.Print str End Sub

Paramtres nomms
On peut appeler une fonction en nommant ses

paramtres.
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

ajoutEspace str:=res, nb:=10

Dclaration des variables


On dclare une variable laide de Dim :
Function surfCercle(x As Double) As Double Dim pi As Double pi = 3.1415279 surfCercle = x * x * pi End Function

Par dfaut les variables nont pas besoin detre dclares, elles ont le type Variant. Il faut utiliser Option Explicit pour rendre la dclaration obligatoire.

Types
String : Chaines de caractres. Types numriques : entiers, rels en virgule flottante

(prcision simple ou double) et rels en virgule fixe (decimal). Dates : Reprsentation des dates en nombre de jours couls depuis le premier janvier 1900. Tableaux : une collection de variables dun autre type, lindexation est au choix de lutilisateur, par dfaut de 1 N. Variant : Type abritant tout autre type. Objets : Types dfinis dans des bibliothques ou par des utilisateurs.

Strings
Une chaine de caractres se dclare 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 numriques
Entiers : Byte Integer, entier 2 octets Long, entier 4 octets Decimal : Currency
Rels virgule flotante : Single, 4 octets Double, 8 octets

Boolens et dates
Boolean, reprsente vrai ou faux. Date, reprsente une date, stocke comme nombre de

jours depuis le premier janvier 1900. Il y a un jour de dcalage avec des dates Java.

Tableaux
Un tableau (array) se dclare en ajoutant au nom dune

variable des paranthses et une dimension. On accde aux lments dun tableau par indexation. Dim t(1 To 10) As Integer Sub arrTest(j As Integer) Loption globablle Option Integer permet de fixer le Base Dim t(1 To 10) As premier indice dei chaque tableau, par dfaut les Dim As Integer tableaux commencent 1. i=1
While i <= 10 t(i) = j + I i=i+1 Wend

End Sub

Appel de Function
Une Function sappelle en plaant une liste

dexpressions entre parenthses la place de la liste des arguments. Un appel de fonction remplace toute expression du mme type que le type de retour de la fonction. Exemple :
X=surfCercle(2.0)+4

Appel de sub
2 faons dappeler une sub: Call suivi du nom, les arguments entre () Function HelloWorld() As String nom du Sub (sans Call) avec arguments spars par ,
Dim res As String Function HelloWorld() As String res = "Hello World" DimajoutEspace(res) Call res As String res = "Hello World" HelloWorld = res ajoutEspace End Functionres HelloWorld = res End ajoutEspace(ByRef str As String) Sub Function

str = " " & str Sub ajoutEspace(ByRef str As String) End Sub str = " " & str End Sub

Sub, Function : paramtres


Deux faons de passer un paramtre a une Function

o Sub :
Par valeur, le nom du paramtre est prcd par ByVal

(cette mthode de passage de paramtres est la mthode par dfaut). Par rfrence, le nom du paramtre est prcd par ByRef.

Variables globales
Une variable dclare lextrieur de toute Function

ou Sub est globale. Deux types de visibilits sont possibles :


Public, visible depuis tous modules, Private, visible uniquement dans le module courant.

Instructions de contrle
Conditionels : If Function Signe(x As Double) As Byte If x > 0 Then Iif Function 1 Signe = sPlus(x As Double) As Double
sPlus = IIf(x > 0, ElseIf x < 0 Then x, 0) End Function Signe = -1 Else Signe = 0 End If End Function

Boucles
While

For
For

Sub arrTest(j As Integer) Dim t(1 To 10) As Integer Sub arrTest(j As Integer) Dim i As Integer Dim Each, 1t(1 To 10) Asavec de collections. sutilise Integer Dim i As Integer i= While i <= 10 For i = = To 10 t(i) 1 j + i t(i)==i j++1 i i Next i Wend End Sub End Sub

Manipulation des cellules


Les feuilles et les celules dExcel sont des variables de

type spcial. Elles peuvent etre manipules dans VBA. chaque feuille correspond une variable :

Utilisation dobjets
Un objet est une variable dont le type est une classe

appartenant au projet courant o une bibliothque. Un objet se dclare laide de Dim comme pour toute variable. Un objet doit tre cre avec une instruction New et lattribution du rsultat de New se fait obligatoirement laide de Set. Un objet non initialis contient Nothing.

Objets et classes
Une classe est un type dfini dans une bibliothque.
Une variable dont le type est une classe est un Object. Un Objet contient des membres qui peuvent tre des proprits, Des mthodes (des fonctions) Deux objets de mme type ont, en gnral, des

proprits avec des tats diffrents.

Accs aux cellules


Parmi les membres de la classe Worksheet on trouve la

mthode Cells. Il y a deux versions de la mthode Cells


deux arguments entiers reprsentant le nombre de

lignes et le nombre de colonnes. Ex: Cells(1,1) un argument String reprsentant ladresse dune cellule. Ex Cells("A1")

La mthode Cells retourne un objet du type Range qui

reprsente un groupe de cellules.

Range : quelques membres


Value, proprit qui reprsente le contenu de la cellule.
Text, proprit qui reprsente le texte affich par la

cellule. Formula, proprit qui reprsente la formule de la cellule. ClearContents, mthode qui efface le contenu de la cellule. ClearComments, mthode 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 Value est une la class Cells est une mthode deproprit de Worksheetla 2 arguments (il a une class Range Autre mthode de mme nom 1 argument) qui retourne un objet de type Excel.Range

Result est un Objet de type Excel.Worksheet Excel -> bibliothque Worksheet -> class

vnements
Le vnements sont des subroutines qui sexcutent

assynchronement . Ils sont dclenchs automatiquement par des actions extrieures. Quelques exemples :
Click de souris sur bouton
Private Sub btnGo_Click() Changement de contenu dune cellule displaySquare Privatela cellule courante Sub Worksheet_Change(ByVal Target As Range) Changement de End Sub If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) End If calc.Cells(2, 4).Value = "selection is now " & Target.Address End Sub If Target.Address = "$A$1" Then calc.Cells(1, 4).Value = "A1 Changed" End If End Sub

vnements
Nom de la class, Dans certains cas nom De lobjet Nom de lvnement

Erreurs
Dans son comportement par dfaut lexcution sarrte

et un message est affich. On peut spcifier un autre comportement si une erreur se produit, trois comportemens sont possibles :
On Error Goto 0, le comportement par dfaut On Error Resume Next, ignorer les erreurs et passer

linstruction suivante. On Error Goto <label>, sauter <label> (ligne marqu de <lable>:) si une erreur se produit.

Si une erreur se produit la variable Err est initialise.

Erreurs (suite)
La variable Err contient plusieurs membres, les plus

importants :
Number, contient le numro unique de lerreur. Description, contient la description de lerreur. Raise, produit une erreur (utile pour signaler des erreurs

dautres parties du programme. Clear, nettoye la dernire erreur.

Erreurs (exemple)
Modification du traitement des erreurs. 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

Label

Accs lerreur End Sub

Modules de classe
Dans un module de classe on peut dfinir ses propres

classes. Une classe contient 3 types de membres :


Des variables membres Des mthodes Des proprits

2 types de visibilit pour les membres : Private Public

Crer une classe

Exemple : tudiants
Option Explicit

Private my_nom As String Private my_prenom As String Private notes As Collection


Private Sub Class_Initialize() my_nom = "Inconnu" my_prenom = "" Set notes = New Collection End Sub

Variables membres

Mthode

Exemple : tudiants
Public Property Get moyenne() As Single Dim ret As Single Dim note As Variant Dim cnt As Integer ret = 0 cnt = 0 For Each note In notes ret = ret + note cnt = cnt + 1 Next note moyenne = ret / cnt End Property

Proprit en lecture seule, pas de Property Let

Exemple : tudiants
Public Property Let nom(nom_ As String) my_nom = nom_ End Property Public Property Get nom() As String nom = my_nom End Property Public Property Let prenom(prenom_ As String) my_prenom = prenom_ End Property

Attribution, proprit

Lecture, proprit

Public Property Get prenom() As String prenom = my_prenom End Property

Utilisation dune classe


Dim e1 As Etudiant Dim e2 As New Etudiant Set e1 = New Etudiant e1.nom = "Sarkozy" e1.prenom = "Nicolas" e1.addNote "Mathematiques", 10 e1.addNote "Droit", 17

Dclarations
Allocation Utilisation de proprits

e2.nom = "Royal" e2.prenom = "Segolene"


e2.addNote "Mathematiques", 10 e2.addNote "Droit", 15 Appel de mthode

Forms
Les forms sont des objets graphiques quon peut

afficher dans Excel. On utilise des forms pour intragir avec un utilisateur. Une form et toujours compos dune fentre sur laquelle saffichent des contrles graphiques. La boite outils de Excel propose plusieurs contrles : boutons, zones de texte, liste de choix, etc. Chaque contrle propose des vnements qui permettent dinteragir avec lutilisateur. Chaque form gre son propre module.

Crer une form

Form et boite outils

Design de la form

Code associ une form


vnement click du bouton Accs une proprit dun autre contrle

Das könnte Ihnen auch gefallen