La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction au language Visual Basic for Applications dans le monde Excel.

Présentations similaires


Présentation au sujet: "Introduction au language Visual Basic for Applications dans le monde Excel."— Transcription de la présentation:

1 Introduction au language Visual Basic for Applications dans le monde Excel

2 Ressources FAQ : Référence : Nombreux livres Aide en ligne dExcel

3 Programmer sous Excel Pour accéder à lenvironement de programmation sous Excel, deux possibilités Par les menus Alt F11

4 Lenvironement 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 dune fonction Délimiteurs de fonction Nom de la fonction Type de la fonctionNom de largumentType de largumentListe des arguments 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 dune feuille Excel. Ne pas changer les propriétés dune 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 lappel na 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 à laide de Dim : Function surfCercle(x As Double) As Double Dim pi As Double pi = surfCercle = x * x * pi End Function Par défaut les variables nont pas besoin detre 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 Tableaux : une collection de variables dun autre type, lindexation est au choix de lutilisateur, 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 Il y a un jour de décalage avec des dates Java.

17 Tableaux Un tableau (array) se déclare en ajoutant au nom dune variable des paranthèses et une dimension. On accéde aux éléments dun tableau par indexation. Loption 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 sappelle en plaçant une liste dexpressions 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 dappeler 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 à lexté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, sutilise 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 dExcel sont des variables de type spécial. Elles peuvent etre manipulées dans VBA. À chaque feuille correspond une variable :

25 Utilisation dobjets Un objet est une variable dont le type est une classe appartenant au projet courant où à une bibliothèque. Un objet se déclare à laide de Dim comme pour toute variable. Un objet doit être crée avec une instruction New et lattribution du résultat de New se fait obligatoirement à laide 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 ladresse dune 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 sexécutent assynchronement. Ils sont déclenchés automatiquement par des actions extérieures. Quelques exemples : Click de souris sur bouton Changement de contenu dune 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 lobjet Nom de lévènement

32 Erreurs Dans son comportement par défaut lexécution sarrê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 à linstruction suivante. On Error Goto, sauter à (ligne marqué de :) 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 lerreur. Description, contient la description de lerreur. Raise, produit une erreur (utile pour signaler des erreurs à dautres 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 à lerreur

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 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 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 quon peut afficher dans Excel. On utilise des forms pour intéragir avec un utilisateur. Une form et toujours composé dune fenêtre sur laquelle saffichent 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 dinteragir avec lutilisateur. 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é dun autre contrôle


Télécharger ppt "Introduction au language Visual Basic for Applications dans le monde Excel."

Présentations similaires


Annonces Google