introduction au language visual basic for applications dans le monde excel

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

Upload: ame-gauthier

Post on 03-Apr-2015

106 views

Category:

Documents


1 download

TRANSCRIPT

  • Page 1
  • Introduction au language Visual Basic for Applications dans le monde Excel
  • Page 2
  • Ressources FAQ : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx http://msdn2.microsoft.com/en-us/isv/bb190540.aspx Rfrence : http://msdn2.microsoft.com/en-us/isv/bb190540.aspx http://msdn2.microsoft.com/en-us/isv/bb190540.aspx Nombreux livres Aide en ligne dExcel
  • Page 3
  • Programmer sous Excel Pour accder lenvironement de programmation sous Excel, deux possibilits Par les menus Alt F11
  • Page 4
  • Lenvironement de dvelopement Explorateur de projet diteur Espions (dbogage) Proprits
  • Page 5
  • Ajouter une fonction Excel Click droit sur Microsoft Excel objects : Slctioner Module
  • Page 6
  • Gnralits sur VBA VBA est un langage compil au moment de lexcution. Insensible la casse, lediteur VBA modifie texte tap de tel sorte quil ay la mme casse que des objets existants (fonctions, variables, sub, etc.) Une fonction peut se nommer MyFunction, on tape myfunction lditeur changera m et f an majuscules. Les commentaires dbutent par et terminent en fin de ligne. La barre doutils dition peut savrer pratique quand on programme.
  • Page 7
  • Structure dune fonction Dlimiteurs 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
  • Page 8
  • Utilisation dans Excel
  • Page 9
  • 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.
  • Page 10
  • 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.
  • Page 11
  • Valeurs par dfaut Les paramtres des Function et Sub peuvent tre optionnels. Si un paramtre est optionnel tous les paramtres suivants le sont aussi. Si un paramtre est de type Variant on peut tester que lappel na pas dfinit ce paramtre 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
  • Page 12
  • Paramtres nomms On peut appeler une fonction en nommant ses paramtres. 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
  • Page 13
  • 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.
  • Page 14
  • 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.
  • Page 15
  • 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.
  • Page 16
  • Types numriques Entiers : Byte Integer, entier 2 octets Long, entier 4 octets Decimal : Currency Rels virgule flotante : Single, 4 octets Double, 8 octets
  • Page 17
  • 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.
  • Page 18
  • 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. Loption globale Option Base permet de fixer le premier indice de chaque tableau, par dfaut 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
  • Instructions de contrle 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
  • Page 24
  • 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
  • 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 -> bibliothque Worksheet -> class Cells est une mthode de la class Worksheet 2 arguments (il a une Autre mthode de mme nom 1 argument) qui retourne un objet de type Excel.Range Value est une proprit de la class Range
  • Page 31
  • vnements Le vnements sont des subroutines qui sexcutent assynchronement. Ils sont dclenchs automatiquement par des actions extrieures. 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
  • Page 32
  • vnements Nom de la class, Dans certains cas nom De lobjet Nom de lvnement
  • Page 33
  • 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, sauter (ligne marqu de :) si une erreur se produit. Si une erreur se produit la variable Err est initialise.
  • Page 34
  • 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.
  • Page 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 Accs lerreur
  • Page 36
  • 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
  • Page 37
  • Crer une classe
  • Page 38
  • Exemple : Action Option Explicit Public nom As String Public cours As Currency Variables membres
  • Page 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 Proprit : criture Membres publiques
  • Page 40
  • Exemple : Option Public Property Get TypeContrat() As String If isCall Then TypeContrat = "Call" Else TypeContrat = "Put" End If End Property Proprit : Lecture
  • Page 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
  • Page 42
  • Utilisation dune 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 Dclarations/allocations Utilisation de proprits Appel de mthode
  • Page 43
  • Forms Les forms sont des objets graphiques quon peut afficher dans Excel. On utilise des forms pour intragir avec un utilisateur. Une form est 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.
  • Page 44
  • Crer une form
  • Page 45
  • Form et boite outils
  • Page 46
  • Design de la form
  • Page 47
  • Code associ une form vnement click du bouton Accs une proprit dun autre contrle