Académique Documents
Professionnel Documents
Culture Documents
1 Gnralits
Visual Basic pour Applications (VBA) est un environnement de dveloppement calqu sur Visual Basic, un outil de dveloppement d'applications Windows. Tandis que les programmes Visual Basic (VB) sont autonomes, les programmes VBA ne peuvent tre excuts qu' partir d'une application intgrant cet environnement de dveloppement (Excel ou une autre application). Les programmes VBA sont donc attachs un document Word, une feuille de calcul Excel et constituent un projet. L'enregistrement de macros constitue une bonne initiation VB. L'enregistreur de macros mmorise chacune des actions ralises par l'utilisateur puis les traduit en instructions VB . Il suffit d'excuter ensuite la macro pour rpter l'ensemble des actions ainsi enregistres. Si certaines instructions sont spcifiques l'application (pour Excel par exemple, les instructions permettant d'affecter une formule une cellule), d'autres sont communes l'ensemble des applications Office (affichage des botes de dialogue pour permettre une interaction de l'utilisateur influant sur le droulement de la macro, structures de contrle permettant de raliser des boucles...) et permettent de crer des macros volues qui, attaches aux documents manipuls, constituent de vritables applications rpondant des besoins spcifiques VB Editor est l'environnement de dveloppement intgr des applications Office. Il permet de visualiser, de grer les projets VBA, d'crire, de modifier et de dboguer les macros existantes.
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 1/10
1.2.2 Modifier les objets Comme nous l'avons voqu supra, les objets ont des proprits. Les occurrences de ces objets se distinguent entre elles par les valeurs associes ces proprits. Ces valeurs peuvent renvoyer diffrents types : chane de caractres, valeur numrique valeur boolenne (true ou false) constante(se prsentant sous forme de chane de caractres, mais correspondant des valeurs numriques) Dans le code Visual Basic, on doit identifier un objet avant de pouvoir changer la valeur de l'une de ses proprits ou lui appliquer une de ses mthodes (voir infra). Pour modifier une valeur d'une proprit on procde par affectation (objet.proprit=valeur) Sheets("feuille1").name="Rsultats" (renomme la feuille1 en Rsultats) ActiveCell.Value=5 (la proprit "value" de la cellule active reoit la valeur 5) 1.2.3 Les mthodes Une mthode permet de modifier une proprit d'une occurrence d'objet. Ainsi par exemple, la mthode Select rend la feuille1 active : Sheets.('feuille1").Select 1.2.4 Les vnements Un vnement est une action reconnue par un objet. La programmation vnementielle est une technique qui consiste raliser un ensemble de procdures qui seront dclenches par des objets appels juste titre dclencheur. Un bouton est un exemple type de dclencheur. Par exemple un clic sur le bouton effacera le contenu de cellules.
1.2.5 Les fonctions Les fonctions servent renvoyer une information, selon les lments qui leurs sont fournis. VBA fournit des fonctions en standard mais il est possible de construire ses propres fonctions(voir 3.2.2).
Remarque : il est possible de saisir une description de la macro et de lui attribuer un raccourci-clavier pour l'excuter plus rapidement.
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 2/10
3. Procder la mise en gras manuellement et terminer en cliquant sur le bouton d'arrt d'enregistrement :
4. Remettre en non gras les cellules et tester la macro Activer pour cela la macro par la commande : outils/macros/macros et excuter le macro "gras"
Explorateur de projet
La structure est la suivante : Sub nom_du_sous_programme() ' les commentaires sont prcds d'apostrophes ' Couleur verte pour les commentaires et couleur bleue pour les mots cls du langage Suivent des instructions Suivent des instructions End sub Exercice : Dans le classeur Sofres99.xls, enregistrer une macro slectionne la plage A5:E13 et qui gnre un graphique (barres horizontales) dans une nouvelle feuille graphique nomme Missions.
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 3/10
Il se peut galement que l'on souhaite pouvoir diffuser ses applications avec des macros stockes dans un classeur spar. On choisira alors l'option d'enregistrement "macro complmentaire". Celles-ci seront alors stockes dans un classeur .XLA (voir l'aide en ligne de VBA sur ce thme). On cre ses macros dans un nouveau classeur qui est ensuite enregistr au format XLA. Ensuite, pour tout classeur faisant appel ces macros, on active la commande : outils/macro complmentaire / parcourir, on slectionne la feuille xla, toutes ses macros sont alors actives dans le classeur courant. Attention, pour pouvoir consulter l'aide en ligne VBA pour Excel il faut avoir coch l'option correspondante au moment de l'installation d'Office, il faudra relancer l'installation et cocher l'option pour pouvoir en bnficier, seule l'aide VBA est alors rajoute, Office n'est en rien rinstall intgralement... heureusement !).
Depuis VB Editor en activant le menu contextuel ds lors que le module 1 est point dans l'explorateur de projet
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 4/10
2.5 Variante 1 : Mettre en gras les en-tte de colonnes et appliquer une trame grise
Provoquer l'enregistrement de la macro comme prcdemment...
On utilisera la commande Format/cellules pour choisir successivement l'alignement, la police en gras et la couleur de fond.
Terminer l'enregistrement de la macro et visualiser le code du sous programme Gras_trame_grise() gnr sous VB Editor Les instructions With et End With encadrent l'ensemble des proprits des objets Font puis Interior.
Exercice : Gnrer une nouvelle macro permettant de d'afficher les libells en bleu sur fond jaune Dans VB Editor on remarquera que le module 1 s'est enrichi d'un nouveau sous-programme : police_bleue_fond_jaune_centr_vertical()
Nouveau sousprogramme
2. Une remarque prcisant le rle de ce sous-programme est ensuite ajoute derrire l'apostrophe qui prcise qu'il s'agit d'une remarque. 3. Suivent les deux instructions qui appellent successivement les deux sous-programmes prcdents (Call appelle le sous-programme, peut tre omis mais facilite la lecture du code, attention ne pas mettre de parenthses) 4. Enfin End Sub clt le sous-programme. En revenant sur la feuille de calcul, la commande Outils/macro/macros permet de constater qu'une nouvelle macro a t ralise.
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel page 5/10
4. Il reste modifier le texte du bouton : pour cela on slectionne le bouton en gardant la touche <Ctrl> active (afin d'viter l'excution de la macro) puis on modifie le texte du bouton en dposant le point d'insertion dans le texte du bouton. Remarque : Pour faire apparatre la commande d'excution de macro sous forme d'un bouton dans la barre d'outils : Affichage /barre d'outils / personnaliser / commande / formulaire : faire alors glisser le bouton dans la barre de menu. Ensuite il est ncessaire de faire un clic-droit sur le bouton gnr et de choisir la commande Affecter une macro (ventuellement, on peut modifier l'image attache la macro en choisissant modifier l'image du bouton dans le mme menu contextuel). 2.7.1 L'intrt du mode enregistrement Dans cette premire approche, nous avons vu comment enregistrer une macro, accder son code dans VB Editor, crer soi-mme un petit sous-programme et affecter une macro un bouton. Ces enregistrements sont utiles car ils gnrent un code "charg de syntaxe", qu'il n'y a donc pas retenir (mise en couleur des cellules d'une plage par exemple). Ils permettent par ailleurs de se familiariser progressivement avec le code Visual Basic gnr. Ces pratiques sont suffisantes pour toutes les tches rptitives dont les paramtres sont connus l'avance (nombre de cellules concernes par exemple). Ainsi, dans un classeur contenant de multiples feuilles de calcul, il sera judicieux de prvoir une feuille ne contenant que des boutons et donnant accs toutes les autres tout en explicitant leurs contenus. On pourra crer facilement des petites interfaces qui rendent plus conviviale l'utilisation des feuilles d'un classeur. 2.7.2 Les limites des macros enregistres Mais on touche rapidement la limite des macros en mode enregistrement ds lors que l'on souhaite balayer un tableau pour faire des recherches ou offrir la possibilit l'utilisateur d'intervenir pendant l'excution de la macro, de saisir des informations et d'en modifier le cours. Ces deux nouvelles approches des macros seront envisages dans les chapitres suivants partir d'exemples simples.
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 6/10
Instructions de dclaration (servent nommer et typer une variable, une constante ou une procdure) Dclaration de la procdure Sub ma_procdure() Dim Date_res As String Dim Demandeur As String Dclaration des variables, on leur attribue un Dim Motif As String nom et un type (une forme de case de Dim Numligne As Integer stockage) Dim Numcolonne As Integer Instructions d'affectation (affectation d'une valeur une variable, une constante, une proprit) Pour modifier une valeur d'une proprit on procde par affectation (objet.proprit=valeur) Sheets("feuille1").name="Rsultats" (renomme la feuille1 en Rsultats) ActiveCell.Value=5 (la proprit "value" de la cellule active reoit la valeur 5) On notera qu'une variable peut recevoir sa propre valeur modifie, par exemple lorsque l'on souhaite incrmenter un compteur de ligne : Numligne = Numligne + 1 Instructions excutables (excution d'une mthode, d'une fonction, structures de contrle -si, alors, sinon - tant que-, affichage de botes de dialogue...) MsgBox ("Veuillez taper la date sous la forme JJ/MM/AA") (affichage d'un message) Cells(Numligne, Numcolonne).Select (slection de la cellule pour laquelle la valeur de la variable numligne dtermine le numro de ligne et numcolonne, le numro de colonne)
3.2.2 Procdure function Une procdure function (fonction) renvoie une valeur qui est utilise dans la procdure qui l'a appele : Private Function mafonc1 (arguments) as string as string permet de qualifier le type de valeur que renverra la fonction (par ex string ou integer) 'suivent des instructions ' et notamment celle-ci qui affecte une valeur la fonction, 'c'est cette valeur que renverra la fonction dans le programme qui l'utilise mafonc1=expression End function
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel page 7/10
Les fonctions ainsi gnres peuvent tre utilises dans Excel comme n'importe quelle autre fonction.
4. Renseigner les paramtres de la fonction puis OK pour voir le rsultat renvoy par cette fonction.
Remarque : En cas d'erreur dans le code de la fonction, il conviendra de revenir l'diteur de Visual Basic, de corriger l'erreur, mais il faudra galement rinitialiser la fonction, car l'excution est en mode "arrt". Pour cela il convient d'activer la touche de rinitialisation soit par la commande rinitialiser du menu outil, soit par le bouton de la barre d'outils
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 8/10
Cette fonction est disponible dans la feuille TVA du classeur fonctions_cor.xls Bien entendu pour un tel calcul, il n'est pas vraiment ncessaire d'utiliser une fonction, mais dans certains cas plus complexes, le recours une fonction permet de simplifier l'activit de l'utilisateur... Ainsi par exemple on peut gnrer une fonction qui renvoie la longueur de l'arc d'une hlice... Il y a peu de chances que cette fonction existe en standard dans Excel.... Cf. feuille hlice du classeur "Fonctions.xls" Les quations paramtriques de l'hlice sont : x=R cos a y=R sin a z = b a o b=h / 2 (b est le pas rduit de l'hlice) La longueur de l'arc de l'hlice est s=
a R
h2 2 4 A a y
B h x
La fonction devra recevoir pour paramtres le rayon R du cylindre, l'angle en radian, la hauteur h
Saisie de la fonction dans un nouveau module sous VB Editor Function arc(rayon, angle, hauteur) arc = angle * Sqr((rayon ^ 2) + ((hauteur ^ 2) / (4 * (3.1416 ^ 2)))) End Function Appel de la fonction personnalise
Iufm de Champagne Ardenne - Jacques Bresson - Dbuter avec VBA pour Excel
page 10/10