Vous êtes sur la page 1sur 35

EXCEL

Chapitre 4 : Le langage Visual Basic Application

Claude Duvallet
Universit du Havre UFR des Sciences et Techniques 25 rue Philippe Lebon BP 540 76058 Le Havre Cedex Courriel : Claude.Duvallet@gmail.com

Claude Duvallet 1/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Gnralits sur VBA (1/2)


VBA = Visual Basic pour Applications. VBA est le langage de programmation des applications de Microsoft Ofce. VBA permet dautomatiser les tches, de crer des applications compltes, de scuriser vos saisies et vos documents, de crer de nouveaux menus et de nouvelles fonctions. VBA utilise le mme langage que Microsoft Visual Basic.
VB est un ensemble complet qui permet de dvelopper des applications indpendantes et librement distribuables une application VBA est compltement lie au logiciel sous lequel elle a t cre (une application VBA cre sous Excel ne pourra pas se lancer sur un poste si Excel nest pas install).

Claude Duvallet 2/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Gnralits sur VBA (2/2)

Avant Excel utilisait son propre langage de programmation et une application tait appele "macro". Ce terme est rest, mais une macro Excel ralise en VBA nest rien dautre quune procdure telle quelles sont ralises sous VB. VBA manipule des objets Excel tels que les objets Workbook (classeur), Worskheet (Feuille de calcul), Range(plage de cellule), etc. VBA, langage puissant, souple et facile utiliser permet de raliser trs rapidement des applications.

Claude Duvallet 3/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Lenregistreur de macro-commandes (1/3)


Excel, comme Word ou PowerPoint possde un outil : lenregistreur de macros. Il cre une macro et transforme en langage VBA toutes les commandes effectues par lutilisateur dans lapplication hte. Il permet dautomatiser sans aucune connaissance de la programmation certaines de vos tches et galement de se familiariser avec le langage VBA. Pour lancer lenregistreur de macro, il vous suft dans le menu Outils de slectionner loption Macro puis Nouvelle macro.

Claude Duvallet 4/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Lenregistreur de macro-commandes (2/3)


Nom de la macro : Il est possible de renommer la macro. Le nom de la macro doit commencer par une lettre et ne doit pas contenir despaces. Utilisez le caractre de soulignement pour sparer les mots. Touche de raccourci : Il est possible de crer un raccourci clavier pour lancer la macro en saisissant une lettre (minuscule ou majuscule). Enregistrer la macro dans : Ce classeur : la macro ne pourra ensuite sexcuter que si le classeur dans lequel la macro a t enregistre est ouvert. Le "classeur de macros personnelles" : un nouveau classeur est cr et enregistr dans le dossier "xlstart" de faon que vos macros soient disponibles chaque fois que vous utilisez Excel. Description : Vous pouvez donner une description votre macro.
Claude Duvallet 5/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Lenregistreur de macro-commandes (3/3)

Vous pouvez ensuite dmarrer et arrter lenregistrement de la macro au moyen des boutons de la barre doutils "Macro". Toutes les actions effectues pendant la priode denregistrement seront inscrites dans la macro en langage VBA mme les erreurs ou les annulations. Vous pouvez ensuite diter le code de la macro pour lexaminer ou encore le modier.

Claude Duvallet 6/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Lditeur de macro-commandes (1/3)

Lditeur de macro, ou VBE (Visual Basic Editor) est lenvironnement de programmation de VBA. Il se lance par le menu Outils puis loption Macro et ensuite loption Visual Basic Editor ou par le raccourci clavier Alt+F11.

Claude Duvallet 7/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Lditeur de macro-commandes (2/3)

Claude Duvallet 8/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Lditeur de macro-commandes (3/3)

Fentre VBAProject Elle prsente les diffrents projets ouverts et permet de naviguer facilement entre vos diffrentes feuilles de codes VBA. Fentre Code Cest lendroit ou vous allez saisir votre code VBA. Fentre Proprits Proprits de lobjet slectionn. Fentre Excution Elle permet de tester une partie du code. Elle peut savrer trs utile pour voir comment sexcutent certaines lignes de code.

2 3 4

Claude Duvallet 9/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

criture de code VBA (1/3)


Le code VBA scrit dans les modules lintrieur de procdures ou de fonctions. Dans VBE, il faut commencer par crer un nouveau module par le menu Insertion et loption Module. Renommer le module laide de la fentre proprits, la recherche de vos procdures sera plus rapide. Une procdure est une suite dinstructions effectuant des actions. Elle commence par Sub + NomDeLaProcdure et se termine par End Sub. Le nom des procdures doit commencer par une lettre et ne doit pas contenir despaces. Utilisez le caractre de soulignement pour sparer les mots. Pour dclarer une procdure, taper Sub et son nom puis taper Entre. VBE ajoute automatiquement les parenthses et la ligne End Sub.
Claude Duvallet 10/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

criture de code VBA (2/3)


Une fonction est une procdure qui renvoie une valeur. Elle se dclare de la mme faon quune procdure. En gnral, on crit une instruction par ligne. Il est possible dajouter des lignes de commentaire entre les lignes dinstruction ou au bout de celles-ci. Les commentaires sont prcds dune apostrophe et prennent une couleur diffrente. Il ny a pas de limite de caractres pour chaque ligne dinstruction. Il est toutefois possible dcrire une instruction sur plusieurs lignes an daugmenter la visibilit du code. Pour cela, il faut ajouter le caractre de soulignement avant le passage la ligne. Loption Info express automatique permet dafcher les informations relatives la fonction que vous venez de taper.
Claude Duvallet 11/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

criture de code VBA (3/3)


Il est galement possible dobtenir de laide tout moment par la combinaison de touches Crtl+j. La vrication automatique de la syntaxe vous alerte si il y a une erreur dans lcriture du code et la ligne de code change de couleur. Chaque procdure Sub ou Function peut tre appele de nimporte quelle autre procdure du projet. Pour restreindre la porte dune procdure au module, dclarez-la Private. lintrieur de vos procdures, crivez vos instructions en minuscules, VBE se chargera de transformer votre code par des majuscules.

Claude Duvallet 12/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Les objets
VBA manipule les objets de lapplication hte. Chaque objet possde des proprits et des mthodes. Chaque objet reprsente un lment de lapplication : un classeur, une feuille de calcul, une cellule, un bouton, etc. Par exemple, Excel reprsente lobjet Application, Workbook lobjet classeur, Worksheet lobjet feuille de calcul, etc. Tous les objets de mme type forment une collection comme, par exemple, toutes les feuilles de calcul dun classeur. Chaque lment est alors identi par son nom ou par un index. Par exemple, pour faire rfrence la Feuil2, on va utiliser Worksheets(2) ou Worksheets("Feuil2") Chaque objet peut avoir ses propres objets. Un classeur possde des feuilles qui possdent des cellules. Pour faire rfrence une cellule, on peut donc utiliser : Application.Workbooks(1).Worksheets("Feuil2").Range("A1")
Claude Duvallet 13/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Les proprits
Une proprit correspond une particularit de lobjet. La valeur dune cellule, sa couleur, sa taille, etc. sont des proprits de lobjet Range. Les objets sont spars de leurs proprits par un point. On crira ainsi Cellule.Proprit=valeur.

Mettre la valeur 10 dans la cellule A1 Range("A1").Value = 10


Une proprit peut galement faire rfrence un tat de lobjet. Par exemple, si on veut masquer la feuille de calcul "Feuil2", on crira :

Worksheets("Feuil2").Visible = False

Claude Duvallet 14/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Lenregistreur de macro-commandes Lditeur de macro-commandes criture de code VBA Le vocabulaire

Les mthodes
On peut considrer quune mthode est une opration que ralise un objet. Les mthodes peuvent tre considres comme des verbes tels que ouvrir, fermer, slectionner, enregistrer, imprimer, effacer, etc. Les objets sont spars de leurs mthodes par un point. Par exemple, pour slectionner la feuille de calcul nomm "Feuil2", on crira : Worksheets("Feuil2").Select Lorsque lon fait appel plusieurs proprits ou mthodes dun mme objet, on fera appel au bloc dinstruction With Objet Instructions End With. Cette instruction rend le code souvent plus facile lire et plus rapide a excuter.
Mettre la valeur 10 dans la cellule A1, la police en gras et en italique et copier la cellule. With Worksheets("Feuil2").Range("A1") .Value = 10 .Font.Bold = True .Font.Italic = True .Copy End With
Claude Duvallet 15/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les vnements (1/3)

Pour quune macro se dclenche, il faut quun vnement (un clic sur un bouton, louverture dun classeur, etc.) se produise. Sans vnements, rien ne peut se produire. Il existe deux types dvnements : les vnements lis aux objets et les vnements lis aux objets. Les principaux objets pouvant dclencher une macro sont :
Un classeur Une feuille de travail Une boite de dialogue

Chacun de ces objets possde leur propre module. Pour y accder, il faut lancer lditeur de macro.

Claude Duvallet 16/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les vnements (2/3)

Pour crer une procdure vnementielle lie un classeur, slectionner le classeur ThisWorkbook puis cliquez sur licne 3 (ou plus simplement double-clic sur ThisWorkbook). Vous accdez ainsi au module li lobjet. Slectionnez Workbook dans la liste 1 puis sur lvnement dsir dans la liste 2.
Claude Duvallet 17/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les vnements (3/3)

La cration dune procdure vnementielle lie une feuille de calcul se fait de la mme faon. Une macro peut galement tre dclenche une heure donne (OnTime) ou lorsque lutilisateur appuie sur une touche (OnKey). Le dclenchement dune macro nomme "Test" 15 Heures se fait par la ligne dinstruction suivante : Application.OnTime TimeValue("15:00:00"), "Test". Le dclenchement dune macro nomme "Test" lorsque lutilisateur appuie sur la touche "F1" se fait par la ligne dinstruction suivante : Application.OnKey "F1", "Test".

Claude Duvallet 18/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les messages (1/4)


Lors dune procdure, les messages servent communiquer avec lutilisateur. Il existe des messages qui donnent de linformation et dautres qui en demandent. Les MsgBox peuvent simplement donner une information. La procdure est alors stoppe tant que lutilisateur na pas cliqu sur le bouton. Le texte peut-tre afch sur plusieurs lignes en utilisant le code retour chariot chr(13) ou le code retour ligne chr(10). Vous pouvez ajouter une icne concernant le type de message afcher.

Claude Duvallet 19/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les messages (2/4)


Les MsgBox peuvent galement demander une information lutilisateur. Dans ce cas, la bote de message comprend plusieurs boutons.

La syntaxe est MsgBox ("Message", attribut bouton ). Vous pouvez galement y ajouter les icnes et personnaliser le titre de la fentre en utilisant la syntaxe : Msgbox ("Message",

attribut bouton + attribut icne, "titre de la fentre").


Claude Duvallet 20/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les messages (3/4)


Les InputBox sont des botes de dialogue dans lesquelles lutilisateur est invit entrer des donnes. La syntaxe est : InputBox ("Message").

Comme pour les MsgBox, vous pouvez changer le titre de la fentre.

Claude Duvallet 21/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les messages (4/4)


Vous pouvez galement entrer une valeur par dfaut dans la zone de saisie. La syntaxe devient : InputBox ("Message", "Titre de la fentre", "Valeur par dfaut"). La valeur saisie peut tre rcupre dans une variable. Si lutilisateur clique sur le bouton "Annuler", la variable renvoie une chane de longueur nulle (""). Vous pouvez galement crire un message dans la barre dtat de lapplication. La syntaxe est : Application.StatusBar = "Message". la n de la procdure, pensez supprimer le message de la barre dtat par la ligne dinstruction : Application.StatusBar = False.
Claude Duvallet 22/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les variables (1/3)


Lors dune procdure, les variables servent stocker toutes sortes de donnes (des valeurs numriques, du texte, des valeurs logiques, des dates, ...). Elles peuvent galement faire rfrence un objet. Suivant les donnes que la variable recevra, on lui affectera un type diffrent. Pour rendre obligatoire la dclaration de variables, placez linstruction Option Explicit sur la premire ligne du module ou cochez loption Dclaration des variables obligatoires dans le menu Outils sous-menu Options de lditeur de macros. La dclaration explicite dune variable se fait par le mot Dim (abrviation de Dimension).
Claude Duvallet 23/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les variables (2/3)


Le nombre maximum de caractres du nom de la variable est de 255. Il ne doit pas commencer par un chiffre et ne doit pas contenir despaces. La syntaxe est Dim NomDeLaVariable as Type. La porte dune variable est diffrente suivant lendroit et la faon dont elle est dclare. Une variable dclare lintrieur dune procdure est dite "Locale". Elle peut-tre dclarer par les mots Dim, Static ou Private. Ds que la procdure est termine, la variable nest plus charge en mmoire sauf si elle est dclare par le mot Static. Une variable locale est gnralement place juste aprs la dclaration de la procdure.
Claude Duvallet 24/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les vnements Les messages Les variables

Les variables (3/3)

Une variable peut tre "locale au module" si celle-ci est dclare avant la premire procdure dun module. Toutes les procdures du module peuvent alors lui faire appel. Elle est dclare par les mots Dim ou Private. Une variable peut galement tre accessible tous les modules dun projet. On dit alors quelle est publique. Elle est dclare par le mot Public. Elle ne peut pas tre dclare dans un module de Feuille ou dans un module de UserForm. Une variable peut garder toujours la mme valeur lors de lexcution dun programme. Dans ce cas, elle est dclare par les mots Const ou Public Const.

Claude Duvallet 25/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les classeurs et les feuilles de calcul

Les classeurs sont dsigns par le mot Workbook. Ils peuvent tre ouverts, ferms, enregistrs, activs, masqus, supprims,... par une instruction VB. Les feuilles de calcul sont dsignes par le mot Worksheet. Comme les Workbook, ces objets possdent de nombreuses proprits et mthodes.

Claude Duvallet 26/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les cellules
Une plage de cellules est dsigne par lobjet Range. Pour faire rfrence la plage de cellule "A1 :B10", on utilisera Range("A1:B10"). Lobjet Range permet galement de faire rfrence plusieurs plages de cellules non contigus. Pour faire rfrence une seule cellule, on utilisera lobjet Range("Rfrence de la cellule) ou Cells(Numro de ligne, Numro de colonne). VB vous permet galement de changer le format des cellules (polices, couleur, encadrement ...). partir dune cellule de rfrence, vous pouvez faire appel aux autres cellules par linstruction Offset. La syntaxe est

Range(Cellule de rfrence).Offset(Nombre de lignes, Nombre de colonne).


Les arguments (Nombre de lignes, Nombre de colonnes) de linstruction Offset sont facultatifs et leur valeur par dfaut est 0.
Claude Duvallet 27/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les instructions conditionnelles


Elles peuvent dterminer la valeur que prennent les variables, arrter une procdure, appeler une procdure, quitter une boucle, atteindre une tiquette. Linstruction la plus courante dans VB est la condition If

condition Then instruction_vrai.


Si la valeur vraie possde plusieurs lignes dinstructions, la syntaxe devient If condition Then instructions_vrai End If. Une autre possibilit de syntaxe est la suivante : If condition Then instructions_si_vrai Else instructions_si_faux End If. Dans le cas de conditions multiples, il est prfrable dutiliser le bloc dinstruction Select Case expression Case valeur instructions Case Else instructions End Select.
Claude Duvallet 28/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les boucles (1/2)

Les boucles le plus souvent utiliss sont les boucles For ... Next. Elles permettent de rpter un nombre de fois dni un bloc dinstructions. Elles utilisent une variable qui est incrmente ou dcrmente chaque rptition. La variable peut tre incrmente dune valeur diffrente de 1 par le mot Step. La variable peut galement tre dcrmente, le mot Step est alors obligatoire.

Claude Duvallet 29/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les boucles (2/2)

lintrieur dun bloc dinstruction For Next, linstruction Exit For, peut quitter la boucle avant que la variable nest atteint sa dernire valeur. Pour rpter un bloc dinstructions pour chaque objet dune collection ou pour chaque lment dun tableau, on utilisera le bloc dinstruction For Each Objet In Collection Next. On peut galement utiliser linstruction Exit For pour sortir dun bloc dinstruction For Each ... Next.

Claude Duvallet 30/35

EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les boucles conditionnelles


Les boucles While condition instructions Wend excutent un bloc dinstruction tant que la condition est vraie. Les boucles Do Loop sont mieux structures que les boucles While Wend. On peut tout moment sortir dune boucle Do Loop par linstruction Exit Do. La boucle Do While condition instructions Loop excute un bloc dinstruction tout pendant que la condition est vraie. Dans la boucle Do instructions Loop While condition, le bloc dinstruction est excut une fois avant que la condition soit teste. Pour sortir dune boucle, on utilise linstruction Exit Do. Les boucles Do Until sont identiques aux boucles Do While, seulement le bloc dinstruction est rpt tout pendant que la condition nest pas vraie.
Claude Duvallet 31/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les fonctions de texte (1/3)


VBA possde des fonctions permettant dextraire une chane de caractres dun texte. La fonction Len renvoie le nombre de caractres dun texte. La fonction Left renvoie un nombre de caractres en partant de la gauche. La syntaxe est Left(Texte, Nombre de caractres). La fonction Right renvoie un nombre de caractres en partant de la droite. La syntaxe est Right(Texte, Nombre de caractres). La fonction Mid renvoie un nombre de caractres en partant dun caractre dni. La syntaxe est Mid(Texte, Dpart, Nombre de caractres). Si le Nombre de caractres nest pas indiqu, la fonction renvoie tous les caractres partir de la position dpart. La fonction LTrim supprime les espaces se trouvant avant la chane de caractres.
Claude Duvallet 32/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les fonctions de texte (2/3)


La fonction RTrim supprime les espaces se trouvant aprs la chane de caractres. La fonction Trim supprime les espaces se trouvant avant et aprs la chane de caractres. La fonction Ucase convertie le texte en majuscules. La fonction Lcase convertie le texte en minuscules. La fonction Application.Proper convertie le texte en nom propre. La fonction Replace permet de remplacer une chane de caractres par une autre. Cette fonction possde des arguments facultatifs permettant de dterminer la position du premier remplacement et le nombre de remplacement effectuer. La syntaxe est Replace(Texte, Chane remplacer, chane de remplacement, Dpart, Nombre de remplacement).
Claude Duvallet 33/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Les fonctions de texte (3/3)


La fonction Val renvoie la valeur numrique dune chane de caractres. Si la chane de caractres est compose de chiffres et de lettres, la valeur sarrte au premier caractre non numrique. La fonction IsNumeric permet de tester si une chane de caractres est numrique et renvoie une valeur de type Boolean. La fonction IsDate permet de tester si une chane de caractres est une date. Elle renvoie une valeur de type Boolean. Certaines fonctions permettent de convertir des donnes en dun type dni. Par exemple, CDate va convertir des donnes en date. Le format des dates et heures est dni par la fonction Format. La syntaxe est Format(MaDate, Format). La fonction Format permet galement de formater les nombres.
Claude Duvallet 34/35 EXCEL

Introduction Les macro-commandes Structures de base en VBA Les objets et les instructions

Les objets Les instructions conditionnelles Les boucles Les fonctions de texte

Remerciements

Cette prsentation est appele tre enrichie et amliore. Cette prsentation a t ralise au moyen de divers supports dont certains trouvs sur Internet et notamment ceux qui suivent :

http://www.lecompagnon.info/excel/index.html http://perso.wanadoo.fr/jml85/Pages/cours_VBA.htm

Claude Duvallet 35/35

EXCEL

Vous aimerez peut-être aussi