Sie sind auf Seite 1von 33

Ecriture du Code VBA :

Presentation
Le code VBA s'crit dans les modules l'intrieur de procdures ou de fonctions. Dans VBE, crez un nouveau module par le menu "Insertion !odule". "enomez le module l'aide de la fen#tre proprits, la rec$erc$e de vos procdures sera plus rapide.

%ne procdure est une suite d'instructions effectuant des actions. Elle commence par &u' ( )omDeLa*rocdure et se termine par End &u'. Le nom des procdures ne doit pas commencer par une lettre et ne doit pas contenir d'espaces. %tilisez le caract+re de souli,nement pour sparer les mots. -e vous conseille de les crire comme des noms propres. *our dclarer une procdure, taper &u' et son nom puis taper Entre. VBE a.oute automati/uement les parent$+ses et la li,ne End &u'. E0emple de *rocdure nomme Essai 1
Sub Essai() MsgBox "Bonjour" End Sub

%ne fonction est une procdure /ui renvoie une valeur. Elle se dclare de la m#me fa2on /u'une procdure. E0emple de fonction nomme 3alcul 1
Function Calcul(Nbre1 As Integer, Nbre2 As Integer) Calcul = Nbre1 + Nbre2 End Function

En ,nral, on crit une instruction par li,ne. Il est possi'le d'a.outer des li,nes de commentaire entre les li,nes d'instruction ou au 'out de celles ci. Les commentaires sont prcds d'une apostrop$e et prennent une couleur

diffrente 4dfinie dans les options de VBE5 1


Sub Essai() Dim Invite as String 'Nom de l'utilisateur Invite = "Toto" 'Message bonjour l'utilisateur MsgBox "Bonjour " & Invite End Sub

"sultat 1

Il n'6 a pas de limite de caract+res pour c$a/ue li,ne d'instruction. Il est toutefois possi'le d'crire une instruction sur plusieurs li,nes afin d'au,menter la visi'ilit du code. *our cela, il faut a.outer le caract+re de souli,nement avant le passa,e la li,ne 4touc$e Entre5 1
Sub Essai() MsgBox("Aujourd'hui nous sommes le " _ & Date, vbInformation, "Mon Application") End Sub

"sultat 1

L'option "Info e0press automati/ue" permet d'affic$er les informations de la fonction /ue vous venez de taper. Il est ,alement possi'le d'o'tenir de l'aide tout moment par la com'inaison de touc$es 3rtl(. 1

La vrification automati/ue de la s6nta0e vous alerte si il 6 a une erreur dans l'criture du code et la li,ne de code c$an,e de couleur . &i la vrification automati/ue de la s6nta0e

n'est pas active, la 'oite d'alerte ne s'affic$e pas.

3$a/ue procdure &u' ou 7unction peut #tre appele de n'importe /u'elle autre procdure du pro.et. *our restreindre la porte d'une procdure au module, dclarez la en private 1
Private Sub Essai() MsgBox "Bonjour" End Sub Private Function Calcul(Nbre1, Nbre2) Calcul = Nbre1 + Nbre2 End Function

A l'intrieur de vos procdures, crivez vos instructions en minuscules, VBE se c$ar,era de transformer votre code par des ma.uscules. Il e0iste souvent de multiples fa2ons d'arriver un rsultat.%ne 'onne anal6se des t8c$es accomplir est ncessaire avant de se lancer dans la cration d'une application. &i vous n'avez aucune e0prience en VBA, vous verrez /ue l'on 6 prend vite ,o9t et /ue l'on arrive tr+s rapidement de surpenants rsultats.

Vocabulaire :
VBA manipule les o'.ets de l'application $:te. 3$a/ue o'.et poss+de des proprits et des mt$odes. Les objets : 3$a/ue o'.et reprsente un lment de l'application. &ous E0cel, un classeur, une feuille de calcul, une cellule, un 'outon, etc ... sont des o'.ets. *ar e0emple, E0cel reprsente l'o'.et Application, ;or<'oo< l'o'.et classeur, ;or<s$eet l'o'.et feuille de calcul etc... =ous les o'.ets de m#me t6pe forment une collection comme, par e0emple, toutes les feuilles de calcul d'un classeur. 3$a/ue lment est alors identifi par son nom ou par un inde0.

*our faire rfrence la 7euil>, on va utiliser ;or<s$eets4>5 ou ;or<s$eets4"7euil>"5 3$a/ue o'.et peut avoir ses propres o'.ets. *ar e0emple, E0cel poss+de des classeurs /ui poss+dent des feuilles /ui poss+dent des cellules. *our faire rfrence une cellule, on pourrait ainsi utiliser 1
Application.Workbooks(1).Worksheets("Feuil2").Range("A1")

Les proprits : %ne proprit correspond une particularit de l'o'.et. La valeur d'une cellule, sa couleur, sa taille, etc...sont des proprits de l'o'.et "an,e. Les o'.ets sont spars de leurs proprits par un point. ?n crira ainsi 3ellule.*roprit@valeur 1
'Mettre la valeur 10 dans la cellule A1 Range("A1").Value = 10

%ne proprit peut ,alement faire rfrence un tat de l'o'.et. *ar e0emple, si on veut mas/uer la feuille de calcul "7euil>", on crira 1
Worksheets("Feuil2").Visible = False

Les mthodes : ?n peut considrer /u'une mt$ode est une opration /ue ralise un o'.et. Les mt$odes peuvent #tre considres comme des ver'es tels /ue ouvrir, fermer, slectionner, enre,istrer, imprimer, effacer, etc... Les o'.ets sont spars de leurs mt$odes par un point. *ar e0emple, pour slectionner la feuille de calcul nomm "7euil>", on crira 1
Worksheets("Feuil2").Select

Lors/ue l'on fait appel plusieurs proprits ou mt$odes d'un m#me o'.et, on fera appel au 'loc d'instruction With ?'.et Instructions End With. 3ette instruction rend le code souvent plus facile lire et plus rapide a e0cuter.

'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

3e voca'ulaire peut paraAtre droutant mais deviendra tr+s rapidement familier lors de la cration de vos premi+res applications.

Les vnements :
*our /u'une macro se dclenc$e, il faut /u'un v+nement 4un clic sur un 'outon, l'ouverture d'un classeur, etc...5 se produise. &ans v+nements, rien ne peut se produire. Les vnements lis aux objets. Les principau0 o'.ets pouvant dclenc$er une macro sont 1 %n classeur %ne feuille de travail %ne 'oite de dialo,ue 3$acun de ces o'.ets poss+de leur propre module. *our 6 accder, lancer l'diteur de macro 1

*our crer une procdure v+nementielle lie un classeur, slectionner le classeur "=$is;or<'oo<" puis cli/uez sur l'ic:ne 3 4ou plus simplement dou'le clic sur "=$is;or<'oo<"5. Vous accdez ainsi au module li l'o'.et. &lectionnez ";or<'oo<" dans la liste 1 puis sur l'v+nement dsir dans la liste 2. *ar e0emple, le code suivant lancera la procdure nomme "=est" l'ouverture du classeur 1

Private Sub Workbook_Open() Test End Sub

Liste des v+nements de l'o'.et ;or<'oo< 1. Evnements: Se produit :

Activate /uand le classeur ou une feuille est activ AddinInstall /uand le classeur est install en macro complmentaire Addin%ninstall /uand le classeur est dsinstall en macro complmentaire Before3lose avant /ue le classeur soit ferm Before*rint avant l'impression du classeur Before&ave avant l'enre,istrement du classeur /uand le classeur ou une feuille est Deactivate dsactiv )eB&$eet lors/u'une nouvelle feuille est cre ?pen l'ouverture du classeur *ivot=a'le3lose3onnection lors/u'un /u'un rapport de ta'leau crois d6nami/ue se dconnecte de sa source de donnes *ivot=a'le?pen3onnection lors/u'un /u'un rapport de ta'leau crois d6nami/ue se connecte une source de donnes &$eetActivate lors/u'une feuille est active &$eetBeforeDou'le3lic< lors d'un dou'le clic lors d'un clic avec le 'outon droit de la &$eetBefore"i,$t3lic< souris &$eet3alculate apr+s le recalcul d'une feuille de calcul &$eet3$an,e lors de la modification d'une cellule &$eetDeactivate lors/u'une feuille est dsactive &$eet7olloBC6perlin< lors d'un clic sur un lien $6perte0te &$eet*ivot=a'le%pdate lors de la mise .our de la feuille du rapport de ta'leau crois d6nami/ue &$eet&election3$an,e lors d'un c$an,ement de slection sur une feuille de calcul ;indoBActivate lors/u'un classeur est activ ;indoBDeactivate lors/u'un classeur est dsactiv ;indoB"esize lors du redimentionnement de la fen#tre d'un classeur La cration d'une procdure v+nementielle lie une feuille de calcul se fait de la m#me fa2on.

Liste des v+nements de l'o'.et ;or<s$eet 1 Evnements: Se produit :

Activate /uand une feuille est active BeforeDou'le3lic< lors d'un dou'le clic lors d'un clic avec le 'outon droit de la Before"i,$t3lic< souris 3alculate apr+s le recalcul de la feuille de calcul 3$an,e lors de la modification d'une cellule Deactivate /uand une feuille est dsactive 7olloBC6perlin< lors d'un clic sur un lien $6perte0te *ivot=a'le%pdate lors/u'un rapport de ta'leau crois d6nami/ue a t mis .our &election3$an,e lors d'un c$an,ement de slection 3ertaines procdures v+nementielles poss+dent des param+tres tels /ue " ancel", /ui peut annuler la procdure, "!ave"s#i" /ui, dans la procdure ";or<'oo<DBefore&ave" affic$e la 'oite "Enre,istrer sous", "!h" /ui reprsente la feuille de calcul, "$ar%et" /ui reprsente l'o'.et slectionn43ellule, ,rap$i/ue, lien $6perte0te5, "Wn" /ui reprsente la fen#tre active. *ar e0emple, le param+tre "3ancel", peut annuler la procdure. *our emp#c$er l'impression du classeur, on utilisera 1
Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel = True End Sub

*our rcuprer la valeur d'une cellule modifie, on utilisera 1


Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Value End Sub

%ne macro peut ,alement se dclenc$er en cli/uant sur un lment ,rap$i/ue de l'application 4%ne ima,e, une zone de te0te, un o'.et ;ordArt, un rectan,le ...5. 3rez un lment puis cli/uez sur "Affecter une macro" dans le menu conte0tuel.

3li/uez sur le nom de la macro dsire puis validez.

%n simple clic sur l'o'.et lancera la macro. Il e0iste ,alement des procdures v+nementielles lies au0 'oites de dialo,ues 4Voir le cours sur les %ser7orms5. Les vnements non lis aux objets. %ne macro peut ,alement #tre dclenc$e une $eure donne 4?n=ime5 ou lors/ue l'utilisateur appuie sur une touc$e 4?nEe65.

Le dclenc$ement d'une macro nomme "=est" FG Ceures se fait par la li,ne d'instruction suivante 1
Application.OnTime TimeValue("15:00:00"), "Test"

Le dclenc$ement d'une macro nomme "=est" lors/ue l'utilisateur appuie sur la touc$e "7F" se fait par la li,ne d'instruction suivante 1
Application.OnKey "{F1}", "Test"

Liste des codes correspondant au0 touc$es1 Touches:


AIDE ATTN BAS DBUT DFILEMENT DROITE CHAP EFFACER ENTRE(pav numrique) ENTRE F1 F15 FIN GAUCHE HAUT INSERTION PAGE PRCDENTE PAGE SUIVANTE RET.ARR RETOUR SUPPRESSION ou SUPPR TABULATION VERR.MAJ VERR.NUM

Codes :
{HELP} {BREAK} {DOWN} {HOME} {SCROLLLOCK} {RIGHT} {ESCAPE} ou {ESC} {CLEAR} {ENTER} ~ {F1} {F15} {END} {LEFT} {UP} {INSERT} {PGUP} {PGDN} {BACKSPACE} ou {BS} {RETURN} {DELETE} ou {DEL} {TAB} {CAPSLOCK} {NUMLOCK}

Il est possi'le de com'iner les touc$es avec "Alt" en insrant le caract+re "H" ou avec "3trl" en insrant le caract+re "I" ou avec la touc$e "!A-" en insrant le caract+re "(". Ainsi le dclenc$ement d'une macro nomme "=est" lors/ue l'utilisateur appuie sur la com'inaison de touc$es "3trl(!A-(7F" se fait par la li,ne d'instruction suivante
Application.OnKey " !{F1}", "Test"

Les messages :
Lors d'une procdure, les messa,es servent communi/uer avec l'utilisateur. Il e0iste des messa,es /ui donnent de l'information et d'autres /ui en demandent. Les &s%'ox Les !s,Bo0 peuvent simplement donner une information. La procdure est alors stoppe tant /ue l'utilisateur n'a pas cli/u sur le 'outon.

MsgBox "Bonjour"

Le te0te peut #tre affic$ sur plusieurs li,nes en utilisant le code retour c$ariot c$r4FJ5 ou le code retour li,ne c$r4FK5.
MsgBox "Bonjour" & Chr(10) & "Il est " & Time

Vous pouvez a.outer une ic:ne concernant le t6pe de messa,e affic$er. Les t6pes d'attri'ut ic:ne 1 Constante : v'3ritical v'E0clamation v'Information v'Luestion Icne 1 *our une erreur fatale *our une remar/ue *our une information *our une /uestion

La s6nta0e pour a.outer une ic:ne est !s,Bo0 "!essa,e", attri'ut ic:ne 1
MsgBox "Traitement termin", vbInformation

Le titre de la fen#tre 4!icrosoft E0cel5 peut #tre c$an,. La s6nta0e est 1 !s,Bo0 "!essa,e", attri'ut ic:ne, "=itre de la fen#tre" 1
MsgBox "Traitement termin", vbInformation, "Mon Programme"

Les !s,Bo0 peuvent ,alement demander une information l'utilisateur. Dans ce cas, la 'oite de messa,e comprend plusieurs 'outons Les t6pes d'attri'ut Boutons 1 Constante : v'A'ort"etr6I,nore v'?E3ancel v'"etr63ancel v'Mes)o v'Mes)o3ancel La s6nta0e est !s,Bo0 4"!essa,e", attri'ut 'outon 51
MsgBox ("Voulez-vous continuer ?", vbYesNo)

Boutons 1

Vous pouvez ,alement 6 a.outer les ic:nes et personnaliser le titre de la fen#tre en utilisant la s6nta0e 1 !s,'o0 4"!essa,e", attri'ut 'outon ( attri'ut ic:ne, "titre de la fen#tre"5.

MsgBox ("Voulez-vous continuer ?", vbYesNo + vbQuestion, _ "Mon programme"5

!s,Bo0 renvoie une valeur diffrente pour c$a/ue 'outon. Constante : v'?E v'3ancel v'A'ort v'"etr6 v'I,nore v'Mes v')o Valeur 1 F > J N G O P

Ainsi, si l'utilisateur cli/ue sur le 'outon "?E", !s,Bo0 renvoie la valeur F, sur le 'outon "Annuler" la valeur >, sur le 'outon "I,norer" la valeur G ... 3ette valeur est rcupre dans une varia'le.
'Dans la ligne d'instruction suivante, si l'utilisateur 'clique sur le bouton "Oui", Reponse prendra comme valeur '6 sinon Reponse prendra comme valeur 7. Reponse = MsgBox ("Voulez-vous continuer ?", vbYesNo) 'La ligne suivante arrte la procdure si l'utilisateur 'clique sur "Non" If Reponse = 7 Then Exit Sub

Les (nput'ox Les InputBo0 sont des 'oites de dialo,ue dans les/uelles l'utilisateur est invit entrer des donnes. La s6nta0e est 1 InputBo0 4"!essa,e"5.
InputBox ("Entrez votre nom :")

3omme pour les !s,Bo0, vous pouvez c$an,er le titre de la fen#tre. Vous pouvez ,alement entrer une valeur par dfaut dans la zone de saisie. La s6nta0e devient 1 InputBo0 4"!essa,e", "=itre de la fen#tre", "Valeur par dfaut"5. La valeur saisie peut #tre rcupre dans une varia'le. &i l'utilisateur cli/ue sur le 'outon "Annuler", la varia'le renvoie une c$aAne de lon,ueur nulle 4""5.
Message = InputBox("Entrez votre nom :", "Mon Programme", _ "Utilisateur 1")

Message = InputBox("Entrez votre nom :", "Mon Programme", _ "Utilisateur 1") 'La ligne suivante arrte la procdure si l'utilisateur 'clique sur "Annuler" If Message = "" Then Exit Sub 'La ligne suivante place la valeur saisie dans la cellule 'A1 de la feuille active Range("A1").Value = Message

Vous pouvez ,alement crire un messa,e dans la 'arre d'tat de l'application. La s6nta0e est 1 Application.&tatusBar @ "!essa,e"
Application.StatusBar = "Traitement en cours ..."

A la fin de la procdure, pensez supprimer le messa,e de la 'arre d'tat par la li,ne

d'instruction1 Application.&tatusBar @ 7alse.

Les boucles :
Lors d'une procdure, les varia'les servent stoc<er toutes sortes de donnes 4des valeurs numri/ues, du te0te, des valeurs lo,i/ues, des dates ...5. Elles peuvent ,alement faire rfrence un o'.et. &uivant les donnes /ue la varia'le recevra, on lui affectera un t6pe diffrent. Les diffrents t6pes de varia'les de VB sont 1 Type de Espace Mot cl : donnes: occup ?ctet Lo,i/ue Entier Entier Lon, ')te F octet *la,e de valeur Entier de K >GG

'oolean > octets =rue ou 7alse (nte%er Lon% > octets Entier de J> POQ J> POQ N octets

Entier de > FNP NQJ ONQ et > FNP NQJ ONP > FNP NQJ ONQ et > FNP NQJ ONP J,NK>Q>JEJQ F,NKF>RQE NG pour les Dcimal valeurs n,atives !in%le N octets simple F,NKF>RQE NG J,NK>Q>JEJQ pour les valeurs positives. F,PRPORJFJNQO>JFEJKQ N,RNKOGONGQNF>NPE J>N pour les valeurs Dcimal n,atives *ouble Q octets Dou'le N,RNKOGONGQNF>NPE J>N et F,PRPORJFJNQO>JFEJKQ pour les valeurs positives de R>> JJP >KJ OQG NPP,GQKQ et !ontaire urrenc) Q octets R>> JJP >KJ OQG NPP,GQKP Date Decimal ?'.et *ate Q octets Fer -anvier FKK au JF dcem're RRRR (S PR >>Q FO> GFN >ON JJP GRJ GNJ RGK JJG sans point dcimal *ecimal F> octets (S P,R>>QFO>GFN>ONJJPGRJGNJRGKJJG avec >Q dcimales. +bject N octets toute rfrence des o'.ets FK octets ( de K > milliards de caract+res lon,ueur de c$aAne Lon,ueur de la F OG NKK caract+res c$aAne

3$aAne de caract+res !trin% lon,ueur varia'le 3$aAne de caract+res !trin% lon,ueur fi0e

Variant avec c$iffres

Variant FO octets Valeur numri/ue .us/u'au t6pe dou'le.

>> octets Variant ( !#me pla,e /ue pour un &trin, de lon,ueur avec Variant lon,ueur varia'le caract+res de la c$aAne Dfini par $)pe Varia'le Identi/ue au t6pe de donnes. l'utilisateur *our rendre o'li,atoire la dclaration de varia'les, placez l'instuction "?ption E0plicit" sur la premi+re li,ne du module ou coc$ez l'option "Dclaration des varia'les o'li,atoires" dans le menu "?utils ?ptions" de l'diteur de macros. La dclaration e0plicite d'une varia'le se fait par le mot Dim 4a'rviation de Dimension5. Le nom're ma0imum de caract+res du nom de la varia'le est de >GG. Il ne doit pas commencer par un c$iffre et ne doit pas contenir d'espaces. La s6nta0e est "Dim )omDeLaVaria'le as =6pe".
Sub Test() Dim SommeVal As Integer Dim Val1 As Integer Dim Val2 As Integer Val1 = 5 Val2 = 2 SommeVal = Val1 + Val2 MsgBox Somme End Sub

Vous pouvez ,alement dclarer vos varia'les sur une m#me li,ne 1
Sub Test() Dim SommeVal As Integer, Val1 As Integer, Val2 As Integer Val1 = 5 Val2 = 2 SommeVal = Val1 + Val2 MsgBox SommeVal End Sub

La porte d'une varia'le est diffrente suivant l'endroit et la fa2on dont elle est dclare. %ne varia'le dclare l'intrieur d'une procdure est dite "Locale". Elle peut #tre dclarer par les mots Dim, &tatic ou *rivate. D+s /ue la procdure est termine, la varia'le n'est plus c$ar,e en mmoire sauf si elle est dclare par le mot &tatic. %ne varia'le Locale est ,nralement place .uste apr+s la dclaration de la procdure.

Option Explicit 'Les variables Val1 et Val2 sont libres de la mmoire alors que la variable SommeVal garde sa valeur la fin de la procdure Sub Test() Static SommeVal As Integer Dim As Val1, Integer, Val2 As Integer 'Instructions End Sub

%ne varia'le peut #tre "Locale au module" si celle ci est dclare avant la premi+re procdure d'un module. =outes les procdures du module peuvent alors lui faire appel. Elle est dclare par les mots Dim ou *rivate.
Option Explicit 'Les variables Val1 et Val2 peuvent tre utilises dans toutes les procdures du module Dim As Val1, Integer, Val2 As Integer Sub Test() Static SommeVal As Integer SommeVal = Val1 + Val2 End Sub Sub Test2() Static DivisVal As Integer DivisVal = Val1 / Val2 End Sub

%n varia'le peut ,alement #tre accessi'le tous les modules d'un pro.et. ?n dit alors /u'elle est pu'li/ue. Elle est dclare par le mot *u'lic. Elle ne peut pas #tre dclare dans un module de 7euille ou dans un module de %ser7orm.
Option Explicit 'Les variables Val1 et Val2 peuvent tre utilises dans toutes les procdures de tous les modules du projet. Public As Val1, Integer, Val2 As Integer

%ne varia'le peut ,arder tou.ours la m#me valeur lors de l'e0cution d'un pro,ramme. Dans ce cas, elle est dclare par les mots 3onst ou *u'lic 3onst.
Option Explicit 'La variable Chemin gardera toujours la valeur. Const Chemin as String = "c:\application\excel\"

Il est possi'le de dfinir une taille fi0e pour une varia'le de t6pe &trin, par la s6nta0e Dim Varia'le as &trin, T Lon,ueur ou Lon,ueur correspond au nom're de caract+re /ue prend la varia'le.
Option Explicit Sub Test

Dim Couleur as String * 5 Couleur = "Rouge" ' Si Couleur tait gal "Orange", la variable Couleur aurait pris comme valeur "Orang". End Sub

Il est important de dclarer ses varia'les par un nom e0plicite pour rendre le pro,ramme plus lisi'le. Vous pouvez ,alement prcder ce nom par le caract+re standard des t6pes de varia'les. *ar e0emple, le caract+re "i" reprsente un entier et la varia'le peut #tre nomme Dim i)om're as Inte,er. Caractre : ' i l s d c dt o'. str v u Type de variable 1 Boolean Inte,er lon, &in,le Dou'le 3urrenc6 Date ?'.ect &trin, Variant Dfini par l'utilisateur

Vous pouvez ,alement crer vos propres t6pes de donnes l'intrieur du 'loc "=6pe End =6pe".
Option Explicit 'exemple de cration d'un type de donnes personnalis Type Contacts Nom As String Prenom As String Age As Integer End Type Sub Test() 'Dclaration de la variable du type personnalis Dim AjoutContact As Contacts AjoutContact.Nom = "TOTO" AjoutContact.Prenom = "Titi" AjoutContact.Age = 20 End Sub

Les varia'les peuvent ,alement faire rfrence des o'.ets comme des cellules, des feuilles de calcul, des ,rap$i/ues, des classeurs ... Elles sont dclares de la m#me fa2on /u'une varia'le normale.

Option Explicit

Sub Test() 'La variable MaCel fait rfrence une plage de cellule Dim MaCel As Range 'Le mot Set lui affecte la cellule "A1" Set MaCel = Range("A1") 'La cellule "A1" prend comme valeur 10 MaCel.Value = 10 End Sub

lasseur,-euille, ellules :
Les classeurs. Les classeurs sont dsi,ns par le mot ";or<'oo<". Ils peuvent #tre ouvert, ferm, enre,istr, activ, mas/u, supprim ... par une instruction VB. Luel/ues e0emples d'instructions sur les classeurs 1
'Ajouter un nouveau classeur Workbooks.Add 'Fermer un classeur. Le nom du classeur ou son index peut tre indiqu. Workbooks("NomDuClasseur.xls").Close 'Fermer le classeur actif. ActiveWorkbook.Close 'Ouvrir un classeur. Workbooks.Open "c:\Chemin\NomDuFichier.xls" 'Activer un classeur. Workbooks("NomDuClasseur.xls").Activate

3ertaines mt$odes de l'o'.et ;or<'oo< poss+dent des ar,uments. Luel/ues e0emples 1


'Fermer un classeur sans l'enregistrer Workbooks("NomDuClasseur.xls").Close False 'Ouvrir un classeur en lecture seule. Workbooks.Open "c:\Chemin\NomDuFichier.xls", , True 'Enregistrer un classeur sous "Test.xls" avec comme mot de passe "testpass" Workbooks(1).SaveAs "test.xls", , "testpass"

Les -euilles de calcul. Les feuilles de calcul sont dsi,nes par le mot ";or<s$eet". 3omme les ;or<'oo<, ces

o'.ets poss+dent de nom'reuses proprits et mt$odes. Luel/ues e0emples d'instructions sur les feuilles 1
'Selectionner une feuille Worksheets("Feuil1").Select 'Rcuprer le nom de la feuille active dans une variable. MaFeuille = ActiveSheet.Name 'Masquer une feuille. Worksheets("Feuil1").Visible = False 'Supprimer une Feuille. Worksheets("Feuil1").Delete

Les e0emples prcdents font rfrence au0 feuilles du classeur actif. Vous pouvez ,alement faire rfrence au0 feuilles des autres classeurs ouverts 1
'Copier la Feuil2 de Classeur.xls dans un nouveau classeur Workbooks("Classeur.xls").Worsheets("Feuil2").Copy

Les cellules. %ne pla,e de cellules est dsi,ne par l'o'.et ""an,e". *our faire rfrence la pla,e de cellule "AF1BFK", on utilisera "an,e4"AF1BFK"5.
'Effacer les donnes et le mise en forme de la plage de cellule "A1:B10" Range("A1:B10").Clear

L'o'.et "an,e permet ,alement de faire rfrence plusieurs pla,es de cellules non conti,uUs.
'Slctionner les plages de cellule "A1:B5" et "D2:F10" Range("A1:B5,D2:F10").Select

*our faire rfrence une seule cellule, on utilisera l'o'.et "an,e4""frence de la cellule5 ou 3ells4)umro de li,ne, )umro de colonne5.
'Ecrire 5 dans la cellule "A3" Range("A3").Value = 5 'ou Cells(3, 1).Value = 5

Dans l'e0emple suivant, nous allons recopier la pla,e de cellules "AF1BFK" de la "7euilF" du classeur actif dans la cellule "DG" de la "7euil>" du classeur "3lasseur>". Voici ce /ue l'enre,istreur de macro produirait comme code 1
Range("A1:B10").Select Selection.Copy Windows("Classeur2").Activate Sheets("Feuil2").Select

Range("D5").Select ActiveSheet.Paste Sheets("Feuil1").Select Application.CutCopyMode = False Windows("Classeur1").Activate

Voici maintenant le code tel /u'il pourrait #tre crit sur une seule li,ne de code1
Range("A1:B10").Copy Workbooks("Classeur2"). _ Worksheets("Feuil2").Range("D5")

?n peut utiliser une autre s6nta0e pour faire rfrence une cellule 1
'la ligne Workbooks("Classeur2").Worksheets("Feuil2").Range("D5") 'peut tre remplace par: Range("[Classeur2]Feuil2!D5")

En utilisant des varia'les o'.ets 4tr+s utiles lors/ue votre pro,ramme fait souvent rfrence au0 m#mes pla,es de cellules5, le code pourrait devenir 1
Dim Cel1 As Range, Cel2 As Range Set Cel1 = Range("A1:B1") Set Cel2 = Workbooks("Classeur2"). _ Worksheets("Feuil3").Range("D5") Cel1.Copy Cel2

VB vous permet ,alement de c$an,er le format des cellules 4polices, couleur, encadrement ...5. L'e0emple suivant appli/ue la police "courrier" en taille FK, en ,ras, en itali/ue et de couleur rou,e. )otez l'utilisation du 'loc d'instruction With End With faisant rfrence l'o'.et 7ont4police5 de l'o'l.et 3elF
Dim Cel1 As Range Set Cel1 = Range("A1") With Cel1.Font .Bold = True .Italic = True .Name = "Courier" .Size = 10 .Color = RGB(255, 0, 0) End With

A partir d'une cellule de rfrence, vous pouvez faire appel au0 autres cellules par l'instruction "?ffset". La s6nta0e est "an,e43ellule de rfrence5.?ffset4)om're de li,nes, )om're de colonne5.
'Pour crire 5 dans la cellule "B2", on pourrait utiliser : Range("A1").Offset(1, 1) = 5 'Ecrire une valeur la suite d'une liste de valeur dans la colonne A: Dim NbEnreg As Integer

'NbEnreg correspond au nombre d'enregistrement de la colonne A: NbEnreg = Range("A1").End(xlDown).Row Range("A1").Offset(NbEnreg, 0) = 10

Les ar,uments 4)om're de li,nes, )om're de colonnes5 de l'instruction ?ffset sont facultatifs et leur valeur par dfaut est K. La derni+re li,ne de code de l'e0emple prcdent aurait pu s'crire 1
Range ("A1").Offset(NbEnreg) = 10

)ous verrons l'intr#t de cette instruction dans le cours sur les 'oucles.

'oucles et conditions :
Les conditions : Les conditions sont tr+s courantes dans les applications VB. Elles peuvent dterminer la valeur /ue prennent les varia'les, arr#ter une procdure, appeler une procdure, /uitter une 'oucle, atteindre une ti/uette. Les e0emples suivants vont dterminer la valeur /ue prendra la varia'le !ention par rapport des notes. Le ta'leau des notes est 1 otes : K FG O FK FF FG FO FR >K Mention 1 )ul !o6en *assa'le Bien =r+s 'ien E0cellent

L'instruction la plus courante dans VB est la condition (- condition $hen valeur vrai 1
'La Note se trouve dans la cellule "A1", la mention est mettre dans la cellule "B1" 'Pour trouver la valeur de la mention, on pourrait crire : Dim Note As Integer Dim Mention As String Note = Range("A1") If Note = 0 Then Mention = "Nul" If Note >= 1 And Note <6 Then Mention = "Moyen" If Note >= 6 And Note <11 Then Mention = "Passable" If Note >= 11 And Note <16 Then Mention = "Bien" If Note >= 16 And Note <20 Then Mention = "Trs Bien" If Note = 20 Then Mention = "Excellent" Range("B1") = Mention

&i la valeur vraie poss+de plusieurs li,nes d'instructions, la s6nta0e devient (- Condition $hen Valeur vraie End (-.
'Si la note est gale 0, la mention prend comme valeur "Nul" et la couleur de la police devient Rouge: Dim Note As Integer Dim Mention As String Note = Range("A1") If Note = 0 Then Mention = "Nul" Range("B1").Font.Color = RGB(255, 0, 0) End If Range("B1") = Mention

Dans notre e0emple, l'instruction peut #tre mieu0 structure. La couleur de la police de la mention est rou,e si la note est infrieure FK et verte si la note est suprieure FK en utilisant la s6nta0e (- condition $hen valeur vrai Else valeur !ausse End (-.
If Note < 10 Then Range("B1").Font.Color = RGB(255, 0, 0) Else Range("B1").Font.Color = RGB(255, 0, 0) End If

*our calculer la valeur de la mention, on utilisera plus facilement la s6nta0e (- condition $hen valeur vraie Else(- condition $hen valeur vrai Else valeur vraie End (- en a.outant autant de fois /ue ncessaire l'instruction Else(-.
Dim Note As Integer Dim Mention As String Note = Range("A1") If Note = 0 Then Mention = "Nul" ElseIf Note >= 1 And Note <6 Then Mention = "Moyen" ElseIf Note >= 6 And Note <11 Then Mention = "Passable" ElseIf Note >= 11 And Note <16 Then Mention = "Bien" ElseIf Note >= 16 And Note <20 Then Mention = "Trs Bien" Else Mention = "Excellent" End If Range("B1") = Mention

Dans le cas de conditions multiples, comme dans notre e0emple, on prfrera le 'loc d'instruction !elect ase e"pression ase valeur e"pression ase Else End !elect.
Dim Note As Integer Dim Mention As String Note = Range("A1")

Select Case Note Case 0 Mention = "Nul" Case 1 To 5 Mention = "Moyen" Case 6 To 10 Mention = "Passable" Case 11 To 15 Mention = "Bien" Case 16 To 19 Mention = "Trs Bien" Case Else Mention = "Excellent" End Select Range("B1") = Mention

%ne condition peut appeler une ti/uette. %ne ti/uette reprsente un endroit de la procdure. Elle se dclare par un nom suivi du si,ne "1". Dans l'e0emple suivant, si i prend la valeur FK, la procdure va directement la li,ne !s,'o0 "7in du pro,ramme".
Dim i As Integer instructions If i = 10 Then GoTo Fin instructions Fin: Msgbox "Fin du programme"

Les boucles : Les 'oucles le plus souvent utiliss sont les 'oucles .or ... /ext. Elles permettent de rpter un nom're de fois dfini un 'loc d'instructions. Elles utilisent une varia'le /ui est incrmente ou dcrmente c$a/ue rptition.
Dim i As Integer 'La boucle suivante va crire les chiffres de 1 10 'dans la plage de cellule "A1:A10". La variable i 's'incrmente de 1 chaque fois For i = 1 To 10 Range("A1").Offset(i - 1) = i Next i

La varia'le peut #tre incrmente d'une valeur diffrente de F par le mot !tep.
Dim i As Integer, j As Integer 'La boucle suivante va crire les chiffres pairs 'dans la plage de cellule "A1:A10". La variable i 's'incrmente de 2 chaque fois j = 0 For i = 2 To 20 Step 2 Range("A1").Offset(j) = i j = j + 1 Next i

La varia'le peut ,alement #tre dcrmente. Dans ce cas, le mot !tep est o'li,atoire.

Dim i As Integer, j As Integer 'La boucle suivante va crire les chiffres de 20 10 'dans la plage de cellule "A1:A10". La variable i 'se dcrmente de 1 chaque fois j = 0 For i = 20 To 10 Step -1 Range("A1").Offset(j) = i j = j + 1 Next i

A l'intrieur d'un 'loc d'instruction .or /ext, l'instruction Exit .or, peut /uitter la 'oucle avant /ue la varia'le n'est atteint sa derni+re valeur. Dans le ta'leau suivant se trouve une liste d'l+ves avec leurs notes.

*our connaAtre la note de *aul, on pourrait utiliser 1


Dim i As Integer Dim NbreEleve As Integer, NoteEleve As integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") 'La derniere ligne - 1 correspond au nombre d'lves NbreEleve = Cel.End(Xldown).Row - 1 For i = 1 To NbreEleve If Cel.Offset(i) = "PAUL" Then 'On rcupre la note NoteEleve = Cel.Offset(i, 1) 'puis on sort de la boucle Exit For End If Next i Msgbox "La note de Paul est " & NoteEleve

*our rpter un 'loc d'instructions pour c$a/ue o'.et d'une collection ou pour c$a/ue lment d'un ta'leau, on utilisera le 'loc d'instruction .or Each #b$et (n Collection /ext. L'e0emple suivant mettra la police de couleur rou,e si les notes sont infrieures FK et de couleur verte si les notes sont suprieures FK.
Dim Cel As Range, Cel2 As Range 'On affecte la plage de cellules "B2:B15" ' la variable Cel Set Cel = Range("B2:B15") 'Pour chaque cellule de la plage de cellule For Each Cel2 In Cel If Cel2 < 10 Then 'Police de couleur rouge Cel2.Font.Color = RGB(0, 255, 0) Else 'Police de couleur verte Cel2.Font.Color = RGB(255, 0, 0) End If Next

?n peut ,alement utiliser l'instruction Exit .or pour sortir d'un 'loc d'instruction .or Each ... /ext. Les boucles conditionnelles: Les 'oucles While condition Wend e0cutent un 'loc d'instruction tout pendant /ue la condition est vraie.
Dim Calcul As Integer, Compteur As Integer Compteur = 1 'Le bloc d'instruction suivant va additionner les ' nombres de 1 10 (1+2+3+4+5+6+7+8+9+10). 'Tant que la valeur de Compteur est infrieur 11 While Compteur < 11 Calcul = Calcul + Compteur 'Ne pas oublier d'incrmenter le compteur sinon 'la boucle ne pourra pas s'arrter. Compteur = Compteur + 1 Wend Msgbox Calcul

Les 'oucles *o Loop sont mieu0 structures /ue les 'oucles While Wend. ?n peut tout moment sortir d'une 'oucle *o Loop par l'instruction Exit *o. La 'oucle *o While condition Loop e0cute un 'loc d'instruction tout pendant /ue la condition est vraie. Dans l'e0emple suivant, on veut a.outer l'l+ve Annie la liste des

l+ves.
Dim Compteur As Integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") Compteur = 1 'Le bloc d'instruction suivant va se rpter 'tant que la cellule n'est pas vide Do While Cel.Offset(Compteur) <> "" 'Ne pas oublier d'incrmenter le compteur sinon 'la boucle ne pourra pas s'arrter. Compteur = Compteur + 1 Loop Cel.Offset(Compteur) = "ANNIE"

Dans l'e0emple prcdent, la condition est teste l'entre de la 'oucle. Dans la 'oucle *o Loop While condition% le 'loc d'instruction est e0cut une fois avant /ue la condition soit teste.
Dim Compteur As Integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") Compteur = 1 'Le bloc d'instruction suivant va se rpter 'tant que la cellule n'est pas vide Do 'Ne pas oublier d'incrmenter le compteur sinon 'la boucle ne pourra pas s'arrter. Compteur = Compteur + 1 Loop While Cel.Offset(Compteur) <> "" Cel.Offset(Compteur) = "ANNIE"

*our sortir d'une 'oucle, on utilise l'instruction Exit *o. *our rec$erc$e la note de Andr, on pourrait utiliser 1
Dim Compteur As Integer, NoteEleve As integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") Compteur = 1 'Le bloc d'instruction suivant va se rpter 'tant que la cellule n'est pas vide Do While Cel.Offset(Compteur) <> "" 'Si la valeur de la cellule est "ANDRE", on sort 'de la boucle If Cel.Offset(Compteur) = "ANDRE" Then Exit Do End If 'Ne pas oublier d'incrmenter le compteur sinon 'la boucle ne pourra pas s'arrter. Compteur = Compteur + 1 Loop

NoteEleve = Cel.Offset(Compteur, 1) Msgbox "La note de Andr est " & NoteEleve

Les 'oucles *o #ntil sont identi/ues au0 'oucles *o While, seulement le 'loc d'instruction est rpt tout pendant /ue la condition n'est pas vraie. La s6nta0e est e0actement la m#me, il 6 a .uste le mot #ntil /ui remplace le mot While. &i on reprend l'e0emple prcdent, la procdure deviendrait 1
Dim Compteur As Integer, NoteEleve As integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") Compteur = 1 'Le bloc d'instruction suivant va se rpter 'tant que la cellule n'est pas vide Do Until Cel.Offset(Compteur) = "ANDRE" 'Ne pas oublier d'incrmenter le compteur sinon 'la boucle ne pourra pas s'arrter. Compteur = Compteur + 1 Loop NoteEleve = Cel.Offset(Compteur, 1) Msgbox "La note de Andr est " & NoteEleve

Les tableau :
ours V'" 0 Les tableaux 0

3ontrairement au0 varia'les classi/ues /ui contiennent une seule valeur, un ta'leau est une varia'le /ui peut contenir un ensem'le de valeurs de m#me t6pe. *renons comme e0emple notre liste d'l+ve 1

*our mettre en mmoire le nom de tous les l+ves, dclarons un ta'leau plut:t /ue de dclarer autant de varia'les /ue d'l+ves. La s6nta0e pour dclarer un ta'leau est "*im Variable4)'re lments5 "s Type"
'Dclaration du tableau Dim MesEleves(14) As String Dim i As Integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") 'Boucle pour remplir le tableau For i = 1 To 14 MesEleves(i) = Cel.Offset(i) Next i

Dans cet e0emple, la varia'le !esEleves4F5 est ,ale "*IE""E", !esEleves4>5 "-A3L%E&",... , !esEleves4FG5 "!A"IE". *ar dfaut, la valeur de l'inde0 infrieur d'un ta'leau est F.*our la c$an,er, on va utiliser le mot $o. L'e0emple suivant va crer un ta'leau du G+me au FK +me l+ve 1
'Dclaration du tableau Dim MesEleves(5 To 10) As String Dim i As Integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") 'Boucle pour remplir le tableau For i = 5 To 10 MesEleves(i) = Cel.Offset(i) Next i

Vous pouvez crer des ta'leau0 contenant des lments de t6pes diffrents de deu0 fa2ons. La premi+re consiste dclarer la varia'le de t6pe variant 1
'Dclaration du tableau Dim CeJour(4) As Variant

CeJour(1) CeJour(2) CeJour(3) CeJour(4)

= = = =

15 "Septembre" 2003 "Roland"

La seconde utilise la fonction "rra).


'Dclaration du tableau Dim CeJour As Variant CeJour = Array(15, "Septembre", 2003, "Roland")

Dans le Fer cas, 3e-our4F5 contient FG, 3e-our4>5 contient "&eptem're", 3e-our4J5 contient >KKJ et 3e-our4N5 contient ""oland". La valeur du premier inde0 de la fonction Arra6 est K, donc, dans le second cas, 3e-our4K5 @ FG, 3e-our4F5 @ "&eptem're", 3e-our4>5 @ >KKJ et 3e-our4J5 @ ""oland". Vous pouvez crer des ta'leau0 plusieurs dimensions. *our mettre en mmoire le nom des l+ves avec leurs notes, nous allons crer un ta'leau > dimensions.
'Dclaration du tableau '14 reprsente le nombre d'enregistrements 'a traiter, 2 le nombre de champs (Elves, Notes). Dim MesEleves(1 To 14, 1 To 2) As Variant Dim i As Integer Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") 'Boucle pour remplir le tableau For i = 1 To 14 'Elves MesEleves(i, 1) = Cel.Offset(i) 'Notes MesEleves(i, 2) = Cel.Offset(i, 1) Next i 'Ou alors : Dim j As Integer For i = 1 To 14 For j = 1 To 2 MesEleves(i, j) = Cel.Offset(i, j - 1) Next j Next i

Dans cet e0emple, !esEleves4G, F5 contient "*A%L" et !esEleves4G, >5 la note FQ. )otez /ue la varia'le a t dclare de t6pe Variant tant donn /u'elle recevait des donnes de t6pe &trin, et des donnes de t6pe Inte,er. &i elle tait dclare de t6pe &trin,, les notes seraient en mode te0te. Il est possi'le de redimensionner un ta'leau par le mot 1edim. En effet, le nom're d'lments ou de dimensions /ue doit contenir un ta'leau n'est pas tou.ours connu. *our conserver les lments d'un ta'leau redimensionn, utilisez le mot 2reserve. Dans l'e0emple suivant, le ta'leau va recevoir le nom des l+ves dont la note est suprieure

ou ,ale FK.
'Dclaration du tableau Dim MesEleves() As String Dim i As Integer Dim j As Integer 'Nbre lments du tableau Dim Cel As Range 'On affecte la cellule "A1" la variable Cel Set Cel = Range("A1") 'Boucle pour remplir le tableau For i = 1 To 14 If Cel.Offset(i, 1) >= 10 Then 'Si la note >=10 j = j + 1 'Redimension du tableau en conservant 'ses lments ReDim Preserve MesEleves(j) MesEleves(j) = Cel.Offset(i) End If Next i

Le ta'leau contient Q lments et, par e0emple, la valeur de !esEleves4G5 est "DEL*CI)E".

VBA poss+de des fonctions permettant d'e0traire une c$aAne de caract+res d'un te0te. La fonction Len renvoie le nom're de caract+res d'un te0te.
Dim Message As String, Longueur As Integer Message = "Fonctions de texte" Longueur = Len(Message) 'Longueur renvoie 18

La fonction Le-t renvoie un nom're de caract+res en partant de la ,auc$e. La s6nta0e est Left4=e0te, )om're de caract+res5.
Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Left(Message, 1) 'Renvoie "F" MTexte = Left(Message, 9) 'Renvoie "Fonctions"

La fonction 1i%ht renvoie un nom're de caract+res en partant de la droite. La s6nta0e est "i,$t4=e0te, )om're de caract+res5.
Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Right(Message, 1) 'Renvoie "e" MTexte = Right(Message, 8) 'Renvoie "de texte"

La fonction &id renvoie un nom're de caract+res en partant d'un caract+re dfini. La s6nta0e est !id4=e0te, Dpart, )om're de caract+res5. &i le )om're de caract+res n'est pas indi/u, la fonction renvoie tous les caract+res partir de la position dpart.

Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Mid(Message, 2, 5) 'Renvoie "oncti" MTexte = Mid(Message, 11, 2) 'Renvoie "de" MTexte = Mid(Message, 11) 'Renvoie "de texte"

La fonction L$rim supprime les espaces se trouvant avant la c$aAne de caract+res.


Dim Message As String, MTexte As String Message = " Fonctions " MTexte = LTrim(Message) 'Renvoie "Fonctions

"

La fonction 1$rim supprime les espaces se trouvant apr+s la c$aAne de caract+res.


Dim Message As String, MTexte As String Message = " Fonctions " MTexte = RTrim(Message) 'Renvoie " Fonctions"

La fonction $rim supprime les espaces se trouvant avant et apr+s la c$aAne de caract+res.
Dim Message As String, MTexte As String Message = " Fonctions " MTexte = Trim(Message) 'Renvoie "Fonctions"

La fonction #case convertie le te0te en ma.uscules.


Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Ucase(Message) 'Renvoie "FONCTIONS DE TEXTE"

La fonction Lcase convertie le te0te en minuscules.


Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Lcase(Message) 'Renvoie "fonctions de texte"

La fonction "pplication.2roper convertie le te0te en nom propre.


Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Application.Proper(Message) 'Renvoie "Fonctions De Texte"

La fonction 1eplace permet de remplacer une c$aAne de caract+res par une autre.
Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Replace(Message, "te", "et") 'Renvoie "Fonctions de etxet"

3ette fonction poss+de des ar,uments facultatifs permettant de dterminer la position du premier remplacement et le nom're de remplacement effectuer. La s6nta0e est 1eplace4=e0te, 3$aine remplacer, c$aAne de remplacement, Dpart, )om're de remplacement5.
Dim Message As String, MTexte As String Message = "Fonctions de texte" MTexte = Replace(Message, "t", "WW", 3, 1) 'Renvoie "ncWWions De texte" MTexte = Replace(Message, "t", "WW", , 2) 'Renvoie "FoncWWions de WWexte"

La fonction Val renvoie la valeur numri/ue d'une c$aAne de caract+res. &i la c$aAne de caract+res est compose de c$iffres et de lettres, la valeur s'arr#te au premier caract+re non numri/ue.
Dim Message As String, MTexte As Double Message = "2003" MTexte = Val(Message) 'Renvoie 2003 Message = "a 2003" MTexte = Val(Message) 'Renvoie 0 Message = " 2003 2004" MTexte = Val(Message) 'Renvoie 20032004 Message = "2003 et 2004" MTexte = Val(Message) 'Renvoie 2003

La fonction (s/umeric permet de tester si une c$aAne de caract+res est numri/ue. Elle renvoie une valeur de t6pe Boolean.
Dim Message As String, MTexte As Integer Message = 100 If IsNumeric(Message) = True Then MTexte = Message + 10 'MTexte prend la valeur 110 End If

La fonction (s*ate permet de tester si une c$aAne de caract+res est une date. Elle renvoie une valeur de t6pe Boolean.
Dim Message As String, MTexte As Integer Message = "1 MARS 2000" If IsDate(Message) = True Then

MTexte = Month(Message) 'MTexte prend la valeur 3(3me mois de l'anne) End If

3ertaines fonctions permettent de convertir des donnes en d'un t6pe dfini. *ar e0emple, la fonction *ate va convertir des donnes en date. =a'leau de fonctions de conversions de donnes 1 &onctions : 'ool ')te ur *ate *bl *ec (nt Ln% !n% !tr Var Type 1 Boolean B6te 3urrenc6 Date Dou'le Decimal Inte,er Lon, &in,le &trin, Variant

Dim Message As Double, MTexte As Integer Message = 325.25 MTexte = CInt(Message) 'MTexte prend la valeur 325

Le format des dates et $eures est dfini par la fonction .ormat. La s6nta0e est .ormat4!aDate, 7ormat5.
Dim MaDate As Date, MDate As String MaDate = date 'date du jour MDate = Format(Message, "dd mmmm yyyy") 'MDate prend la valeur "05 Octobre 2003"

La fonction .ormat permet ,alement de formater les nom'res.


Dim MonNombre As String MonNombre = Format(1500, "0 000") 'MonNombre prend la 'valeur "1 500" MonNombre = Format(1500, "0 000.00 Euros") 'MonNombre 'prend la valeur "1 500.00 Euros"

Das könnte Ihnen auch gefallen