• Aucun résultat trouvé

Introduction au language Visual Basic for Applications dans le monde Excel

N/A
N/A
Protected

Academic year: 2022

Partager "Introduction au language Visual Basic for Applications dans le monde Excel"

Copied!
45
0
0

Texte intégral

(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)

Structure d’une fonction

Délimiteu rs

de

fonction

Nom de la fonctionType de la fonctionNom de l’argumentListe des argumentsType de l’argument

Corps de la fonction:

Attribution fonctionne comme valeur de retour

(7)

Utilisation dans Excel

(8)

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.

(9)

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.

(10)

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

(11)

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

(12)

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.

(13)

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.

(14)

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.

(15)

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

(16)

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.

(17)

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 globablle Option Base permet de

fixer le premier indice de chaque tableau, par défaut les tableaux commencent à 1.

Dim t(1 To 10) As Integer 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

(18)

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

(19)

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

Function HelloWorld() As String Dim res As String

res = "Hello World"

ajoutEspace res HelloWorld = res End Function

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

End Sub

(20)

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 (cette méthode de passage de

paramètres est la méthode par défaut).

 Par référence, le nom du paramètre est

précédé par ByRef.

(21)

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.

(22)

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

Function sPlus(x As Double) As Double sPlus = IIf(x > 0, x, 0)

End Function

(23)

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

Sub arrTest(j As Integer) Dim t(1 To 10) As Integer Dim i As Integer

For i = 1 To 10 t(i) = j + i Next i

End Sub

(24)

Manipulation des cellules

 Les feuilles et les celules d’Excel sont des variables de type spécial. Elles peuvent etre manipulées dans VBA.

 À chaque feuille correspond une variable :

(25)

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.

(26)

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.

(27)

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.

(28)

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.

(29)

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

(30)

É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

(31)

Évènements

Nom de la class,

Dans certains cas nom De l’objet

Nom de l’évènement

(32)

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 <lable>:) si une erreur se produit.

 Si une erreur se produit la variable Err est initialisée.

(33)

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.

(34)

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

(35)

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

(36)

Créer une classe

(37)

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

Méthode

(38)

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

Propriété en lecture seule, pas de « Property Let »

(39)

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

Public Property Get prenom() As String prenom = my_prenom

End Property

Attribution, propriété

Lecture, propriété

(40)

Utilisation d’une 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

e2.nom = "Royal"

e2.prenom = "Segolene"

e2.addNote "Mathematiques", 10 e2.addNote "Droit", 15

Déclarations Allocation

Utilisation de propriétés

Appel de méthode

(41)

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

(42)

Créer une form

(43)

Form et boite à outils

(44)

Design de la form

(45)

Code associé à une form

Évènement

click du bouton Accès à une propriété d’un autre contrôle

Références

Documents relatifs

So, this paper describes the proposed radar and presents an interesting study of the adapted UWB waveforms that allow detection of different kind of obstacles in short ranges with

When the ground state is spatially degenerate or if there are very low lying excited states, there are large orbital contributions to the magnetic moment and the choice of the

The differential images at different time points during injection of PFV-1 IN across the EG4 pre-treated surface containing spots of immobilized target dsDNA are presented in figure

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

Vers la fin de la guerre, Universal produit un court-métrage sur le torpillage du paquebot britannique Lusitania, un des événements qui avait le plus ému l’opinion

Les bonnes mani` eres en VBA sous Excel Utilisation de l’objet Range sans selection. Utilisation des objets

Une autre propri´et´e tr`es importante de l’objet Range est la plage entourant la cellule consid´er´ee : CurrentRegion. Ainsi, pour acc´eder ` a la plage entourant la cellule