Cours VBA débutants.pdf

226
Formation Excel - VBA débutant INTRODUCTION .................................................................................................. 8 L’ENVIRONNEMENT DE DEVELOPPEMENT .................................................... 8 Présentation de l'éditeur ............................................................................................................................... 9 Notions de module ....................................................................................................................................... 10 L'enregistreur de macro ............................................................................................................................. 12 VISUAL BASIC ...................................................................................................13 Présentation ................................................................................................................................................. 13 Les variables ................................................................................................................................................ 13 "# $%&'() *************************************************************************************************************************************************** +, ") '-$) ****************************************************************************************************************************************************** +. /%01)&23%0 4) '-$)******************************************************************************************************************************* +5 ")2 6%02'#0')2******************************************************************************************************************************************* +5 70'(&8'2 ****************************************************************************************************************************************************** +9 ") '-$) :#&3#0' ***************************************************************************************************************************************** +; <-$) ='3>32#')=& ***************************************************************************************************************************************** ?@ A0=B(&#'3%0********************************************************************************************************************************************** ?@ C#2D=) E30#3&)****************************************************************************************************************************************** ?+ Opérateurs ................................................................................................................................................... 22 F$(&#')=&2 #&3'GB('3D=)2 ************************************************************************************************************************** ?? F$(&#')=&2 4) 6%B$#&#32%0*********************************************************************************************************************** ?? HI F$(&#')=& 4) 6%06#'(0#'3%0 ***************************************************************************************************************** ?, F$(&#')=&2 >%J3D=)2 ********************************************************************************************************************************** ?, F$(&#')=& K04 ************************************************************************************************************************************** ?, F$(&#')=& F&***************************************************************************************************************************************** ?, F$(&#')=& LD1*************************************************************************************************************************************** ?, F$(&#')=& MF&************************************************************************************************************************************** ?N F$(&#')=& 7B$*************************************************************************************************************************************** ?N F$(&#')=& O%' *************************************************************************************************************************************** ?N /%BE30#32%02 4P%$(&#')=&************************************************************************************************************************* ?N F$(&#')=& 4P#QQ)6'#'3%0I R ************************************************************************************************************************* ?. "%J3D=) E30#3&)***************************************************************************************************************************************** ?. Procédures & fonctions............................................................................................................................... 29 K&J=B)0'2 ************************************************************************************************************************************************ ?; S-T)Q H S-:#> ************************************************************************************************************************************ ?; F$'3%0#>************************************************************************************************************************************************ U@ V#&#BK&&#- ****************************************************************************************************************************************** U+ K&J=B)0'2 0%BB(2 %= $#22#J) $#& $%23'3%0**************************************************************************************** U? 702'&=6'3%02 )' &WJ>)2 4P#$$)>********************************************************************************************************************* U? :#>)=& &)'%=&0() *************************************************************************************************************************************** UU Les objets ..................................................................................................................................................... 35 Les tableaux ................................................................................................................................................. 37 702'&=6'3%02 )' Q%06'3%02 2$(63Q3D=)2********************************************************************************************************* U9 Les blocs ....................................................................................................................................................... 39 +

Transcript of Cours VBA débutants.pdf

Page 1: Cours VBA débutants.pdf

Formation Excel - VBA débutant

INTRODUCTION .................................................................................................. 8!

L’ENVIRONNEMENT DE DEVELOPPEMENT .................................................... 8!

Présentation de l'éditeur............................................................................................................................... 9!

Notions de module ....................................................................................................................................... 10!

L'enregistreur de macro ............................................................................................................................. 12!

VISUAL BASIC ...................................................................................................13!

Présentation ................................................................................................................................................. 13!

Les variables ................................................................................................................................................ 13!"#!$%&'() *************************************************************************************************************************************************** +,!")!'-$) ****************************************************************************************************************************************************** +.!/%01)&23%0!4)!'-$)******************************************************************************************************************************* +5!

")2!6%02'#0')2******************************************************************************************************************************************* +5!70'(&8'2 ****************************************************************************************************************************************************** +9!")!'-$)!:#&3#0' ***************************************************************************************************************************************** +;!<-$)!='3>32#')=& ***************************************************************************************************************************************** ?@!A0=B(&#'3%0********************************************************************************************************************************************** ?@!C#2D=)!E30#3&)****************************************************************************************************************************************** ?+!

Opérateurs ................................................................................................................................................... 22!F$(&#')=&2!#&3'GB('3D=)2 ************************************************************************************************************************** ??!F$(&#')=&2!4)!6%B$#&#32%0*********************************************************************************************************************** ??!HI!F$(&#')=&!4)!6%06#'(0#'3%0 ***************************************************************************************************************** ?,!F$(&#')=&2!>%J3D=)2 ********************************************************************************************************************************** ?,!F$(&#')=&!K04 ************************************************************************************************************************************** ?,!F$(&#')=&!F&***************************************************************************************************************************************** ?,!F$(&#')=&!LD1*************************************************************************************************************************************** ?,!F$(&#')=&!MF&************************************************************************************************************************************** ?N!F$(&#')=&!7B$*************************************************************************************************************************************** ?N!F$(&#')=&!O%' *************************************************************************************************************************************** ?N!

/%BE30#32%02!4P%$(&#')=&************************************************************************************************************************* ?N!F$(&#')=&!4P#QQ)6'#'3%0I!R ************************************************************************************************************************* ?.!"%J3D=)!E30#3&)***************************************************************************************************************************************** ?.!

Procédures & fonctions............................................................................................................................... 29!K&J=B)0'2 ************************************************************************************************************************************************ ?;!S-T)Q!H!S-:#> ************************************************************************************************************************************ ?;!F$'3%0#>************************************************************************************************************************************************ U@!V#&#BK&&#- ****************************************************************************************************************************************** U+!K&J=B)0'2!0%BB(2!%=!$#22#J)!$#&!$%23'3%0**************************************************************************************** U?!

702'&=6'3%02!)'!&WJ>)2!4P#$$)>********************************************************************************************************************* U?!:#>)=&!&)'%=&0() *************************************************************************************************************************************** UU!

Les objets ..................................................................................................................................................... 35!

Les tableaux ................................................................................................................................................. 37!702'&=6'3%02!)'!Q%06'3%02!2$(63Q3D=)2 ********************************************************************************************************* U9!

Les blocs ....................................................................................................................................................... 39!

! +

Page 2: Cours VBA débutants.pdf

Structure décisionnelle................................................................................................................................ 40!")2!2'&=6'=&)2!6%B$#6')2 ************************************************************************************************************************** ,@!7BB)43#')!7Q! !77Q******************************************************************************************************************************** ,@!/G%%2)************************************************************************************************************************************************** ,@!XY3'6G*************************************************************************************************************************************************** ,+!

7Q!Z!<G)0Z!L>2)************************************************************************************************************************************** ,?!L>2)7QZ<G)0 **************************************************************************************************************************************** ,U!

X)>)6'!/#2)************************************************************************************************************************************************ ,,!

Les boucles ................................................................................................................................................... 46![%&ZO)\'************************************************************************************************************************************************* ,.!]%Z"%%$************************************************************************************************************************************************* ,9!

Énumérations & collections........................................................................................................................ 50!

FONCTIONS VBA...............................................................................................51!

Fonctions de conversions ............................................................................................................................ 51!/%01)&23%0!4)!'-$) *********************************************************************************************************************************** N+!/%01)&23%02!2$(63Q3D=)2 *************************************************************************************************************************** N?!/:L&& *************************************************************************************************************************************************** N?!:#> ******************************************************************************************************************************************************** NU![%&B#'I![%&B#'^*********************************************************************************************************************************** NU!

/%01)&23%0!4)!1#>)=& ******************************************************************************************************************************** NN!_)\I!_)\^********************************************************************************************************************************************* NN!F6'I!F6'^ ********************************************************************************************************************************************** NN!70'I![3\ ************************************************************************************************************************************************** NN!

Fonctions de Date & Heure ........................................................................................................................ 55!T(6=$(&#'3%0!4=!')B$2!2-2'WB)**************************************************************************************************************** N.!]#')I!]#')^******************************************************************************************************************************************* N.!<3B)I!<3B)^ ***************************************************************************************************************************************** N.!<3B)& **************************************************************************************************************************************************** N.!O%Y****************************************************************************************************************************************************** N.!

[%06'3%02!4)!6%01)&23%02************************************************************************************************************************** N5!]#'):#>=)I!<3B):#>=)************************************************************************************************************************* N5!]#')X)&3#> ********************************************************************************************************************************************* N5!<3B)X)&3#> ******************************************************************************************************************************************** N9!

Fonctions d'extraction ................................................................................................................................ 58![%06'3%02!2$(63Q3D=)2 *************************************************************************************************************************** N9!`))a]#-********************************************************************************************************************************************** N9!]#')V#&'************************************************************************************************************************************************ N;!

[%06'3%02!4)!6#>6=>2********************************************************************************************************************************** .+!]#')K44 *********************************************************************************************************************************************** .+!]#')]3QQ************************************************************************************************************************************************ .?!

L\)B$>)2!6>#223D=)2!4P='3>32#'3%0************************************************************************************************************** .U!

Fonctions de fichiers ................................................................................................................................... 65!X-2'WB)!4)!Q36G3)&************************************************************************************************************************************* .N!/G]3&**************************************************************************************************************************************************** .N!/G]&31) ************************************************************************************************************************************************ .N!/=&]3&*************************************************************************************************************************************************** .N!]3& ******************************************************************************************************************************************************** .N![3>)K''& ************************************************************************************************************************************************* ..![3>)/%$-*********************************************************************************************************************************************** ..![3>)]#')<3B)**************************************************************************************************************************************** .5![3>)")0 ************************************************************************************************************************************************* .5!b)'K''&!H!X)'K''& ********************************************************************************************************************************* .5!

! ?

Page 3: Cours VBA débutants.pdf

c3>>******************************************************************************************************************************************************** .9!Ca]3&!H!TB]3&*********************************************************************************************************************************** .9!

C#03$=>#'3%0!4)!Q36G3)&***************************************************************************************************************************** .;!"P302'&=6'3%0!F$)0 ******************************************************************************************************************************** .;![&))[3>)************************************************************************************************************************************************* 5@!/>%2)***************************************************************************************************************************************************** 5@!LF[ ****************************************************************************************************************************************************** 5@!"F[ ****************************************************************************************************************************************************** 5@!"%6******************************************************************************************************************************************************** 5@!X))a ****************************************************************************************************************************************************** 5@!702'&=6'3%02!4P(6&3'=&) *************************************************************************************************************************** 5@!702'&=6'3%02!4)!>)6'=&) ************************************************************************************************************************** 5+!L\)B$>)2 ********************************************************************************************************************************************** 5+!

Fonctions d'informations............................................................................................................................ 79![%06'3%02!4)!6%=>)=&********************************************************************************************************************************* 5;!dS/%>%& *********************************************************************************************************************************************** 5;!TbS****************************************************************************************************************************************************** 9@!

Fonctions d'interactions.............................................................................................................................. 80!L013&%0 ************************************************************************************************************************************************* 9@!70$='S%\*********************************************************************************************************************************************** 9@!C2JS%\ ************************************************************************************************************************************************ 9@!

Fonctions mathématiques........................................................................................................................... 82![%06'3%02!2'#04#&42 ********************************************************************************************************************************** 9?![%06'3%02!2$(63Q3D=)2******************************************************************************************************************************** 9?!T%=04 *************************************************************************************************************************************************** 9?!<3&#J)!#>(#'%3&)I!T#04%B3e)!)'!T04 ***************************************************************************************************** 9?!

Fonctions de chaînes ................................................................................................................................... 83!/%B$#&#32%0!4)!6G#f0)2 *************************************************************************************************************************** 9U!<&#3')B)0'!4)2!6#&#6'W&)2************************************************************************************************************************** 9,!K26!H!/G&********************************************************************************************************************************************* 9,!

T)6G)&6G)!H!L\'&#6'3%0**************************************************************************************************************************** 9N!X'&/%B$ *********************************************************************************************************************************************** 9N!702'& ****************************************************************************************************************************************************** 9.!")Q'I!C34!H!T3JG'********************************************************************************************************************************* 9.!")0******************************************************************************************************************************************************** 95!70X'&T)1 *********************************************************************************************************************************************** 95!X$>3' ****************************************************************************************************************************************************** 99![3>')& ***************************************************************************************************************************************************** 99!

C%43Q36#'3%0 ********************************************************************************************************************************************* 9;!"<&3BI!T<&3B!H!<&3B************************************************************************************************************************** 9;!T)$>#6) ************************************************************************************************************************************************* 9;!"/#2)!H!g6#2)************************************************************************************************************************************* 9;!X'&/%01************************************************************************************************************************************************* ;@!X'&T)1)&2) ******************************************************************************************************************************************** ;@!

/%02'&=6'3%0********************************************************************************************************************************************** ;@!h%30 ******************************************************************************************************************************************************* ;@!X$#6) **************************************************************************************************************************************************** ;@!X'&30J **************************************************************************************************************************************************** ;+!

GESTION DES ERREURS..................................................................................92!

Traitement centralisé .................................................................................................................................. 93!

Traitement immédiat .................................................................................................................................. 97!

! U

Page 4: Cours VBA débutants.pdf

Erreurs successives...................................................................................................................................... 99!V&%J&#BB#'3%0!2#02!(6G)6************************************************************************************************************************ ;;!:#>34#'3%0!)'!#6'31#'3%0*************************************************************************************************************************** +@@!

MODELE OBJET ..............................................................................................102!

Présentation ............................................................................................................................................... 103!

Fondamentaux........................................................................................................................................... 106!b>%22#3&) ************************************************************************************************************************************************* +@.!")2!#34)2!4#02!>P(43')=& *************************************************************************************************************************** +@.!L\$>%&#')=&!4P%Ei)' ***************************************************************************************************************************** +@.!70')>>3X)02) ***************************************************************************************************************************************** +@9!

C#03$=>#'3%0!4P%Ei)'2****************************************************************************************************************************** +@;!]=&()!4)!13)!H!V%&'() ************************************************************************************************************************ +@;!d=#>3Q36#'3%0!H!C#03$=>#'3%0!4)2!B)BE&)2*************************************************************************************** +++!b(&)&!>)2!&(Q(&)06)2 **************************************************************************************************************************** ++U!

K&6G3')6'=&)!L\6)> ********************************************************************************************************************************** ++,!")2!$3WJ)2 *********************************************************************************************************************************************** ++.!T(Q(&)06)!3B$>363')***************************************************************************************************************************** ++.!"#!$&%$&3('(!XG))'2 ***************************************************************************************************************************** ++.!C)BE&)!$#&!4(Q#=' ***************************************************************************************************************************** ++.!

Application................................................................................................................................................. 117!V&%$&3('(2!&)01%-#0'!4)2!6%>>)6'3%02******************************************************************************************************* ++5!/%BB#04S#&2 ************************************************************************************************************************************ ++5!]3#>%J2 *********************************************************************************************************************************************** ++5!`304%Y2********************************************************************************************************************************************* ++5!`%&aE%%a2 ***************************************************************************************************************************************** ++9!

V&%$&3('(2 ************************************************************************************************************************************************ ++9!/#>6=>#'3%0!H!/#>6=>#')S)Q%&)X#1)!jS%%>)#0k ********************************************************************************** ++9!/#>>)& ************************************************************************************************************************************************** ++9!/='/%$-C%4)!jS%%>)#0k ******************************************************************************************************************* ++9!])63B#>X)$#&#'%&!jX'&30Jk****************************************************************************************************************** ++;!]32$>#-K>)&'2!jS%%>)#0k********************************************************************************************************************* ++;!L0#E>)/#06)>c)-!jM>L0#E>)/#06)>c)-k******************************************************************************************* ++;!L0#E>)L1)0'2!jS%%>)#0k ********************************************************************************************************************* ++;!70')&#6'31)!jS%%>()0k ************************************************************************************************************************** +?@!70')&0#'3%0#> *************************************************************************************************************************************** +?@!X6&))0g$4#'30J!jS%%>)#0k ***************************************************************************************************************** +?@!XG))'270O)Y`%&aE%%a!j"%0Jk********************************************************************************************************** +?@!X'#'=2S#&!jX'&30Jk ******************************************************************************************************************************* +?+!`%&a2G))'[=06'3%0!j`%&a2G))'[=06'3%0k****************************************************************************************** +?+!

C('G%4)2 ************************************************************************************************************************************************ +?,!/#>6=>#')********************************************************************************************************************************************* +?,!/%01)&'[%&B=>#********************************************************************************************************************************** +?,!L1#>=#')********************************************************************************************************************************************** +?N!b)'F$)0[3>)0#B)!H!b)'X#1)K2[3>)0#B) ***************************************************************************************** +?N!70$='S%\********************************************************************************************************************************************* +?.!70')&2)6'!H!g03%0 ******************************************************************************************************************************* +?5!d=3'***************************************************************************************************************************************************** +?5!

Workbooks & Workbook ......................................................................................................................... 128!C#03$=>)&!>#!6%>>)6'3%0!`%&aE%%a2******************************************************************************************************** +?9!V&%$&3('(!7')B!j`%&aE%%ak **************************************************************************************************************** +?9!V&%$&3('(!/%=0'!j"%0Jk ********************************************************************************************************************** +?9!C('G%4)!K44************************************************************************************************************************************** +?9!C('G%4)!/>%2)************************************************************************************************************************************ +?9!C('G%4)!F$)0 ************************************************************************************************************************************ +?;!

! ,

Page 5: Cours VBA débutants.pdf

C('G%4)!F$)0<)\'***************************************************************************************************************************** +?;!V&%$&3('(2!4)!>P%Ei)'!`%&aE%%a!&)01%-#0'!=0)!6%>>)6'3%0 ********************************************************************** +U+!S=3>'30]%6=B)0'V&%$)&'3)2 **************************************************************************************************************** +U+!/G#&'2 ************************************************************************************************************************************************* +U+!O#B)2************************************************************************************************************************************************* +U+!XG))'2 ************************************************************************************************************************************************* +UU!`%&a2G))'2 ***************************************************************************************************************************************** +UU!

d=)>D=)2!$&%$&3('(2!H!B('G%4)2!4)!>P%Ei)'!`%&aE%%a*************************************************************************** +UU!V&%$&3('(2![=>>O#B)I!O#B)!H!V#'G!jX'&30Jk************************************************************************************** +UU!V&%$&3('(!T)#4F0>-!jS%%>)#0k *********************************************************************************************************** +UU!V&%$&3('(!X#1)4!jS%%>)#0k****************************************************************************************************************** +UU!C('G%4)!/>%2)************************************************************************************************************************************ +U,!C('G%4)!V&%')6' ********************************************************************************************************************************* +U,!C('G%4)2!X#1)I!X#1)K2!H!X#1)/%$-K2 ******************************************************************************************* +U,!C('G%4)!g0$&%')6'***************************************************************************************************************************** +UN!

Worksheets & Worksheet......................................................................................................................... 135!C('G%4)2!4)!>#!6%>>)6'3%0!`%&a2G))'2**************************************************************************************************** +UN!K44***************************************************************************************************************************************************** +UN!/%$- *************************************************************************************************************************************************** +U.!])>)') ************************************************************************************************************************************************* +U.![3>>K6&%22XG))'2********************************************************************************************************************************* +U.!C%1) ************************************************************************************************************************************************** +U5!V&30'F=' ********************************************************************************************************************************************** +U5!

V&%$&3('(2!4)!>P%Ei)'!`%&a2G))'!&)01%-#0'!=0)!6%>>)6'3%0 ********************************************************************** +U5!/)>>2**************************************************************************************************************************************************** +U5!/%>=B02!H!T%Y2 ******************************************************************************************************************************* +U5!/%BB)0'2******************************************************************************************************************************************* +U5!_-$)&>30a2 ****************************************************************************************************************************************** +U5!O#B)2************************************************************************************************************************************************* +U5!XG#$)2************************************************************************************************************************************************* +U9!

K='&)2!$&%$&3('(2!4)!>P%Ei)'!`%&a2G))' *************************************************************************************************** +U9![3>')&C%4)!jS%%>)#0k ************************************************************************************************************************* +U9!O)\'!H!V&)13%=2!j`%&a2G))'k ************************************************************************************************************ +U9!V#J)X)'=$!jV#J)X)'=$k*********************************************************************************************************************** +U9!T#0J)!jT#0J)k************************************************************************************************************************************ +,+!g2)4T#0J)!jT#0J)k**************************************************************************************************************************** +,+!:323E>)!jM>XG))':323E3>3'-k ***************************************************************************************************************** +,+!

C('G%4)2!4)!>P%Ei)'!`%&a2G))'*************************************************************************************************************** +,+!/#>6=>#')********************************************************************************************************************************************* +,+!/G#&'FEi)6'2*************************************************************************************************************************************** +,+!/%$- *************************************************************************************************************************************************** +,+!])>)') ************************************************************************************************************************************************* +,+!C%1) ************************************************************************************************************************************************** +,+!F"LFEi)6'2 **************************************************************************************************************************************** +,?!V#2')!H!V#2')X$)63#> ************************************************************************************************************************** +,?!V&30'F=' ********************************************************************************************************************************************** +,?!V&%')6'!H!g0$&%')6'**************************************************************************************************************************** +,?!

Range & Cells ............................................................................................................................................ 143!/%06)$'2 ************************************************************************************************************************************************* +,U!:#>)=&2!H![%&B=>)2******************************************************************************************************************************** +,N!V&%$&3('(2!4)!>l%Ei)'!T#0J)!&)01%-#0'!=0!%Ei)'!T#0J)*************************************************************************** +N@!K&)#2!jK&)#2k************************************************************************************************************************************** +N@!/)>>2!jT#0J)k************************************************************************************************************************************** +N?!/%>=B02!H!T%Y2 ******************************************************************************************************************************* +NU!])$)04)0'2I!]3&)6'])$)04)0'2I!V&)6)4)0'2!H!]3&)6'V&)6)4)0'2 ******************************************************* +N,!L04 ***************************************************************************************************************************************************** +N5!L0'3&)T%Y!H!L0'3&)/%>=B0 *************************************************************************************************************** +N9!C)&J)K&)#****************************************************************************************************************************************** +N;!

! N

Page 6: Cours VBA débutants.pdf

FQQ2)'************************************************************************************************************************************************** +N;!T)23e) ************************************************************************************************************************************************* +N;!

K='&)2!V&%$&3('(2!4)!>l%Ei)'!T#0J) ********************************************************************************************************* +.@!K44&)22!H!K44&)22"%6#>!jX'&30Jk ****************************************************************************************************** +.@!S%&4)&2!jS%&4)&2k ******************************************************************************************************************************* +.@!/G#&#6')&2!j/G#&#6')&2k ********************************************************************************************************************** +.?!/%>=B0!H!T%Y!j>%0Jk************************************************************************************************************************ +.?!/%>=B0`34'G!H!T%Y_)3JG'!j]%=E>)k ********************************************************************************************** +.?![%0'!j[%0'k****************************************************************************************************************************************** +.?!_#2[%&B=>#!jS%%>)#0k *********************************************************************************************************************** +.?!_344)0!jS%%>)#0k ******************************************************************************************************************************* +.?!_%&3e%0'#>K>3J0B)0'!H!:)&'36#>K>3J0B)0'!j:#&3#0'k *********************************************************************** +.U!70')&3%&!j70')&3%&k ******************************************************************************************************************************** +.U!")Q'!H!<%$!jX30J>)k **************************************************************************************************************************** +.U!"%6a)4!jS%%>)#0k ******************************************************************************************************************************* +.U!C)&J)/)>>2!jS%%>)#0k ************************************************************************************************************************ +.U!O#B)!jX'&30Jk ************************************************************************************************************************************* +.,!O=BE)&[%&B#'!H!O=BE)&[%&B#'"%6#>!jX'&30Jk ******************************************************************************* +.,!F&3)0'#'3%0!j70')J)&k*************************************************************************************************************************** +.,!X'->)!j:#&3#0'k ************************************************************************************************************************************ +.,!

C('G%4)2!4)!>P%Ei)'!T#0J)********************************************************************************************************************** +.,!K44/%BB)0' ************************************************************************************************************************************* +.,!K='%[3>')& ******************************************************************************************************************************************* +.N!K='%[3>>I![3>>]%Y0I![3>>g$I![3>>")Q'!H![3>>T3JG' ******************************************************************************* +.5!K='%[3' *********************************************************************************************************************************************** +.;!S%&4)&K&%=04************************************************************************************************************************************* +.;!/#>6=>#')********************************************************************************************************************************************* +.;!/>)#&I!/>)#&/%BB)0'2I!/>)#&/%0')0'2!H!/>)#&[%&B#'2 ******************************************************************** +.;!/%>=B0]3QQ)&)06)2!H!T%Y]3QQ)&)06)2 ********************************************************************************************* +.;!/='!H!/%$- **************************************************************************************************************************************** +5@!]#'#X)&3)2******************************************************************************************************************************************* +5@!])>)') ************************************************************************************************************************************************* +5@![304I![304O)\'!H![304V&)13%=2 ********************************************************************************************************* +5@!702)&'*************************************************************************************************************************************************** +5+!C)&J)!H!g0C)&J) ***************************************************************************************************************************** +5+!V#2')X$)63#>**************************************************************************************************************************************** +5?!T)$>#6) *********************************************************************************************************************************************** +5?!X%&' ***************************************************************************************************************************************************** +5?!X$)63#>/)>>2 **************************************************************************************************************************************** +5N!

Discussion technique ................................................................................................................................. 177!/%B$&)04&)!L\6)> ********************************************************************************************************************************** +55!T)6G)&6G)!4)!$>#J) ********************************************************************************************************************************* +9@!T)6G)&6G)!4)!1#>)=&******************************************************************************************************************************** +9U!K='&)2!&)6G)&6G)2************************************************************************************************************************************ +95![%06'3%02!4)!Q)=3>>)!4)!6#>6=> ***************************************************************************************************************** +9;!

Manipulation des graphiques................................................................................................................... 190!/&()&!=0!b&#$G3D=)********************************************************************************************************************************* +;@!g'3>32)&!>#!2(>)6'3%0***************************************************************************************************************************** +;?!/&(#'3%0!$#&!/%$3)&!/%>>)& ***************************************************************************************************************** +;U!](Q303'3%0!4P=0)!2%=&6)!4)!4%00()2 **************************************************************************************************** +;N!V#&!#i%='!4)!2(&3)2******************************************************************************************************************************* +;N!V#&!4(Q303'3%02!4)2!2(&3)2 ******************************************************************************************************************** +;N!

C32)!)0!Q%&B) ***************************************************************************************************************************************** +;.!C%43Q3)&!>P#$$#&)06)!4)2!2(&3)2 ********************************************************************************************************** +;.!Ki%=')&!=0!'3'&)!%=!=0!Q%04!#=!J&#$G3D=)******************************************************************************************** +;;!C#03$=>)&!>#!>(J)04) ************************************************************************************************************************** +;;!C#03$=>)&!>)2!#\)2****************************************************************************************************************************** +;;!

! .

Page 7: Cours VBA débutants.pdf

DEBOGAGE......................................................................................................201!

Exécution en mode pas à pas.................................................................................................................... 201!

Les points d'arrêts..................................................................................................................................... 203!

Variables locales ........................................................................................................................................ 205!

Les espions ................................................................................................................................................. 206!

MANIPULER LES EVENEMENTS....................................................................207!

Evènements de feuille de calcul................................................................................................................ 209!K6'31#'3%0!4)!>#!Q)=3>>)**************************************************************************************************************************** ?@;!

DEFINI PAR ......................................................................................................209!b)2'3%0!4=!6>36!4&%3'******************************************************************************************************************************** ?+@!/G#0J)B)0'!4)!2(>)6'3%0 ************************************************************************************************************************ ?+@!/G#0J)B)0'!4)!1#>)=& **************************************************************************************************************************** ?++!

MANIPULER LES CONTROLES......................................................................212!

Deux familles de contrôles ........................................................................................................................ 212!")2!6%0'&m>)2!Q%&B=>#3&)2************************************************************************************************************************ ?+?!K1#0'#J)2 ******************************************************************************************************************************************* ?+?!706%01(03)0'2 ************************************************************************************************************************************* ?+?!L\)B$>)2 ******************************************************************************************************************************************** ?+?!

")2!6%0'&m>)2!C2[%&B2*************************************************************************************************************************** ?+,!

Contrôles incorporés................................................................................................................................. 214!

UserForm ................................................................................................................................................... 218!KQQ36G#J)!4=!Q%&B=>#3&)************************************************************************************************************************** ??+!b)2'3%0!4)2!(1W0)B)0'2************************************************************************************************************************** ??+!

CONCLUSION ..................................................................................................226!!!

! 5

Page 8: Cours VBA débutants.pdf

Introduction "P)02)BE>)! 4)2! >%J363)>2! 4)! >#! 2=3')! C36&%2%Q'n! FQQ36)! ='3>32)! =0! >#0J#J)! 4)! $&%J&#BB#'3%0!

30'(J&(! #$$)>(! :32=#>! S#236! Q%&! K$$>36#'3%02! j:SKk*! 7>! 2P#J3'! 4P=0! >#0J#J)! :32=#>! S#236! 23B$>3Q3(!6%=$>(!#=!B%4W>)!%Ei)'!4)!>P#$$>36#'3%0!%QQ36)!D=3!>)!6%0'3)0'*!

O%=2! #>>%02! 4#02! 6)! 6%=&2! 1%3&! %=! &)1%3&! >)2! E#2)2! 4)! >#! $&%J&#BB#'3%0! :32=#>! E#236! )'! >#!B#03$=>#'3%0!4=!B%4W>)!%Ei)'!4)!C36&%2%Q'n!L\6)>*!!

!Pour les nouveaux développeurs X3! 1%=2! 0P#1#32! i#B#32! #$$&%6G(! 4)! $&W2! %=! 4)! >%30! =0! >#0J#J)! 30Q%&B#'3D=)I! 1%=2! &32D=)e! 4)!

'&%=1)&!>)!4(E='!4)!6)!6%=&2!)\'&8B)B)0'!6%B$>)\)*!/)&'#302!6%06)$'2!(1%D=(2!#=!4(E='!4)!6)!6%=&2!0)!2)&%0'!#E%&4(2!D=)!$>=2!>%30!4#02!6)>=3o63*!"32)e!>)!=0)!Q%32!&#$34)B)0'!2#02!)0'&)&!4#02!>)!4('#3>I!6)>#!4)1&)e!1%=2!$)&B)''&)!4)!1%=2!3B$&(J0)&!4)!>#!')&B30%>%J3)*!

L’environnement de développement "P)013&%00)B)0'! 4)! 4(1)>%$$)B)0'! 4)! :SK! )2'! 30'(J&(! p! >P#$$>36#'3%0! FQQ36)*! 7>! )\32')! 4)=\!

Q#q%02!4P-!#66(4)&!1%>%0'#3&)B)0'!)'!=0)!E%00)!D=30e#30)!4P-!#66(4)&!2#02!>)!1%=>%3&*!")2!4)=\!Q#q%02!2%0'!=0!$)=!43QQ(&)0')2!$=32D=l%0!0l#&&31)!$#2!4#02!>)!B8B)!B%4=>)!2)>%0!>)2!6#2*!!

b(0(&#>)B)0'!%0!#66W4)!p!>P(43')=&!)0!6G%32322#0'!>)!B)0=!rF='3>2!s!C#6&%!s!:32=#>!S#236!L43'%&r!%=!)0!='3>32#0'!>)!&#66%=&63!6>#13)&!jK>'!t[++k!u!%=!$#&!>P%0J>)'!r4(1)>%$$)=&2r!4#02!L\6)>!?@@5*!

!

! 9

Page 9: Cours VBA débutants.pdf

/)$)04#0'! %0! $)='! #=223! -! #66(4)&! )0! ='3>32#0'! >)! B)0=! 6%0')\'=)>! 4)2! %0J>)'2! 4)! Q)=3>>)2! 4=!6>#22)=&!j6>36!4&%3'!2=&!>P%0J>)'!4)!>#!Q)=3>>)!s!:32=#>32)&!>)!6%4)k!

!]#02!6)!6#2!0%=2!#&&31)&%02!4#02!>)!B%4=>)!4)!6%4)!4)!>#!Q)=3>>)!2(>)6'3%00()*!

Présentation de l'éditeur "P(43')=&!&)22)BE>)!p!v!

!

! ;

Page 10: Cours VBA débutants.pdf

Notions de module /%BB)0q%02!$#&!&)J#&4)&!>P)\$>%&#')=&!4)!$&%i)'*!

!"P)\$>%&#')=&!1#!#QQ36G)&!>P)02)BE>)!4)2!$&%i)'2!)0!6%=&2*!/G#D=)!6>#22)=&!6%0'3)0'!=0!$&%i)'*!g0!

$&%i)'!6%0'3)0'!4)2!B%4=>)2!4)!6%4)2I! 6P)2'opo43&)!4)2!=03'(2! >%J3D=)2!$%=1#0'!6%0')03&!4=!6%4)*!V#&!4(Q#='!6%BB)!1%=2!>)!1%-)e!2=&!>#!Q3J=&)!63o4)22=2I!3>!-!#!=0!B%4=>)!4)!6%4)!$#&!Q)=3>>)2!6%0')0=)2!4#02!>)!6>#22)=&!)'!=0!B%4=>)!$%=&!>)!6>#22)=&!30'3'=>(!r<G32`%&aE%%ar*!

7>!)2'!$%223E>)!4P#i%=')&!#=\!$&%i)'2!4)2!B%4=>)2!2=$$>(B)0'#3&)2!D=3!$)=1)0'!8'&)!4)!'&%32!'-$)2!v! ")2!B%4=>)2!2'#04#&42! ")2!Q%&B=>#3&)2!jg2)&[%&B2k! ")2!B%4=>)2!4)!6>#22)!

F0!#i%=')!6)2!B%4=>)2!)0!='3>32#0'!>)!B)0=!302)&'3%0!%=!$#&!>)!B)0=!6%0')\'=)>!4=!$&%i)'*!

!

! +@

Page 11: Cours VBA débutants.pdf

K!>P)\6)$'3%0!4)2!B%4=>)2!2'#04#&42I!'%=2!>)2!#='&)2!B%4=>)2!2%0'!43'!B%4=>)2!%Ei)'2!6P)2'opo43&)!#66)$' E>)2!#=\!(1W0)B)0'2u!6P)2'opo43&)!D=3!JW&)0'!4=!6%4)!(1W0)

")! 6%4)! J(0(&3D=)I! >)! 6%4)!B)''#0'! )0! 6#=2)! $>=23)=&2! %Ei)'2! 4=! 6>#22)=&I! >)2! Q%06'3%02!

#$$)>*!)!6>#22)!)2'!4#02!=0!B%4=>)!4)!6>#22)!432'306'!=>)! <G32`%&aE%%a! 0)! 6%0'3)0'! D=)! >)! 6%4)! (1W0)B)0'3)>! 4=! 6>#22)=&! )'! >)2!

>)! 6%4)! (1W0)B)0'3)>! 4)! >#! Q)=3>>)! )'! >)2!Q%06'3%02! $&31()2! (1)0'=)>>)2! #3023! D=)! >)! 6%4)! (1W0)B)0'3)>! 4)2! %Ei)'2! 2)023E>)2! #=\!(1W0)B)0'2!D=P)>>)!6%0'3)0'*!

23)=&2!B%4=>)2!2'#04#&42!$%=&!&)J&%=$)&!>)2!Q%06'3%00#>3'(2!6%00)\)2!%0!4)2!%$'3%02!)'! >#!4(Q303'3%0!4)! >#!$&)B3W&)!

')! 4)! B%4=>)k*! /P)2'! 4#02! 6)'')! $#&'3)! D=)! 2%0'!&#'3%02! 4PKV7! jK$$>36#'3%0! V&%J&#BB30J! 70')&Q#6)! %=!

#0'!>#!4(6>#&#'3%0!4)!1#&3#E>)2!%Ei)'2!2)023B)0'3)>k*!/)'')!0%'3%0!2)&#!1=)!2=66306')B)0'!)0!Q30!4)!6%=&2*!")! 6%4)!:32=#>!S#236! )2'! '%=i%=&2! 6%0')0=!4#02!=0!B%4=>)*! 7>! $)='! 8'&)! 6%0')0=!4#02!$>=23)=&2!

B%4=>)2!4=!B8B)!$&%i)'!)0!2=31#0'!>)2!&WJ>)2!2=31#0')2!v!+*

#66)223E>)2!4#02!'%='!>)!$&%i)'!4%31)0'!8'&)!4#02!=0!B%4=>)!2'#04#&4*!?* ")2! g2)&[%&B2! 0)! 6%0'3)00)0'! D=)! >)! 6%4)! 4)! >)=&! $&%$&)! Q%06'3%00)B)0'! )'!

(1)0'=)>>)B)0'!>#!Q%06'3%0!4PU* /G#D=,* ")! B%4

Q%06'3%02!$&31()2!(1)0'=)>>)2!N* /G#D=)! ! B%4=>)! 4)! Q)=3>>)! 0)! 6%0'3)0'! D=)!

.* F0!$)='!='3>32)&!$>="#!$#&'3)!G#=')!4=!B%4=>)!23'=()!)0'&)! >#!4(6>#&#'3

$&%6(4=&)! )2'! #$$)>()! )0'8')! 4)! B%4=>)! j$#&Q%32! '84(6>#&()2! >)2! 1#&3#E>)2! J>%E#>)2I! >)2! 4(6>#Q%06'3%02!2-2'WB)2kI!>)2!'-$)2!='3>32#')=&2!J>%E#=\I!)'6Z!

!

! ++

Page 12: Cours VBA débutants.pdf

L'enregistreur de macro "P)0&)J32'&)=&!4)!B#6&%!)2'!=0!='3>3'#3&)!4P(6&3'=&)!4)!6%4)!6%0')0=!4#02! >P#$$>36#'3%0!%QQ36)*!F0!

>P='3>32)!)0!2(>)6'3%00#0'!rF='3>2!s!C#6&%!s!O%=1)>>)!C#6&%rI!6)!D=3!4(6>)06G)!>P#QQ36G#J)!4)!>#!E%f')!2=31#0')!v!

!")! 6%4)! J(0(&(! 2=3'! 2'&36')B)0'! >)2! #6'3%02! 4)! >P='3>32#')=&*!K3023I! >)! 6%4)! 2=31#0'! 1#! (6&3&)! 4)2!

1#>)()

=&2!4)!+!p!+@!4#02!>#!$>#J)!K+vK+@!v!Sub Macro1' ' Macro1 Macro ' Macro enregistrée le 20/06/2002 par XXXX ' ' Range("A1").Select ActiveCell.FormulaR1C1 = "1" Range("A2").Select ActiveCell.FormulaR1C1 = "2" Range("A1:A2").Select Selection.AutoFill Destination:=Range("A1:A10"), Typ

Range("A1:A10").Select e:=xlFillDefault

End Sub

X3! >)! 6m'(! $&#'3D=)! 4)! >P)0&)J32'&)=&! )2'! 43QQ363>)B)0'! 6%0')2'#E>)I! >)! 6%4)! J(0(&(! )2'! 4)! '&W2!!4P)QQ36#63'(!)'!4)!>323E3>3'(*!V#&!)\)B$>)!>P(6&3'=&)!6%&&)6')!4=!6%4)!63o4)22=2!

2)&#Sub

B#=1#32)!D=#>3'(!)0!')&B)3'!v! Macro1()

With Cells(1, 1) .Value = 1 .Resize(10).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=10 End With End Sub

/)$)04#0'! >P)0&)J32'&)=&! 4)! B#6&%! )2'! ='3>)!B('

$%=&! &)'&%=1)&! =0)! 2-0'#\)! %=! $%=&! )\#B30)&! >)2!G%4)2!='3>32()2!>%&2!4P=0!)06G#f0)B)0'!4P#6'3%0*!

! +?

Page 13: Cours VBA débutants.pdf

Visual Basic

Présentation :32=#>!S#236!)2'!=0!)013&%00)B)0'!4)!4(1)>%$$)B)0'!30'(J&(!$&%$&3('#3&)!$%=&!>)!>#0J#J)!SKX7/!

=2!`304%Y2I!(43'(!$#&!C36&%2%Q' *!7>!)0!)\32')!$>=23)=&2!J&%=$)2!D=3!2%0'!%=&!'%=')2!>)2!1)&23%02!:SK!s!70')&$&('(2!w!(1W0)B)0'3)>2!$&%6(4=&#=\!

23%02!N!)'!.!s!6%B$3>(2!j%=!0#'3Q2k!w!(1W0)B)0'3)>2!$&%6(4=&#=\!OL<k!s!B#0#J(2!w!%Ei)'2!

=0! P&=0'3B)P! 2$(63Q3D=)! $%=&! 2P)\(6=')&I!!)2'!30')&$&('(!2%=2!>#!Q%&B)!)! $2)=4%! 6%B$3>#'3%0! $%=&!

p! >P#34)!4P=0!6%B$3>#')=&!)0!302'&=6'3%0!43&)6')B)0'!='3>32#E>)!$#&!>)!$&%6)22)=&*!

Les variables

4(6>#&#'3%0!>)!Q#3'!4)!4(Q303&!>#!1#&3#E>)!#1#0'!4)!>l='3>32)&I!43B)023%00)B)0'!v!>)!Q#3'!4)!!

:32=# !4(6>") 3%00)

=031)&!4(6>#& &3#E2'&=6'3% #'3%

B$>)!vge As

2%h=2D=Pp!>#!1)&23%0!,!)'!$")2!1)&K!$#&'3&!4)!:S!?@@U!j:S*V%=&! Q#3&)! 23B$>)I! >)2! >#0J#J)2! 30')&$&('(2! %0'! E)2%30! 4P

>P30')&$&(')=&!4)!6%BB#04)*!K!>P34)0'3D=)!4)2!>#0J#J)2!4)!26&3$'I!>)!6%4)E>)! 4)! >=3! Q#3&)! 2=E3&! =04#02! >)D=)>! 1%=2! >P(6&31)eI! E3)0! D=P3>! 2%3'! $%223

&)6G)&6G)&!6)&'#302!'-$)2!4P)&&)=&2!j4)!>3#32%0!$&3063$#>)B)0'k*!g0! >#0J#J)!0#'3Q! j%=!6%B$3>(k! '&#02Q%&B)! >)!6%4)!D=)!1%=2!(6&31)e!

=0)!2(&3)!4Pg0! >#0J#J)!B#0#J(!='3>32)!=0!Gm')!4P)\(6='3%0!$%=&!2(6=&32)&!2%0!Q%06'3%00)B)0'!)'! >)!2-2'WB)!

4P)\$>%3'#'3%0*!")2!>#0J#J)2!$&%6(4=&#=\!='3>32)0'!4)2!(>(B)0'2!4)!6%4)2!2%=2!Q%&B)!4)!$&%6(4=&)2!>30(#3&)2*!")2! >#0J#J)2! (1W0)B)0'3)>2! ='3>32)0'! 4)2! (>(B)0'2! 4)! 6%4)! &($%04#0'! p! 4)2! (1W0)B)0'2!

2$(63Q3D=)2*!")2!>#0J#J)2!%Ei)'2!='3>32)0'!4)2!(>(B)0'2!4)!6%4)2!4(6&3'2!4#02!4)2!6>#22)2*!

L0!4(1)>%$$)B)0'I!%0!)0')04!$#&!1#&3#E>)!=0)!4%00()!4(Q303)!4#02!=0!6%0')\')!4%00(!#-#0'!=0!'-$)!4(Q303*!K='&)B)0'!43'I!=0)!1#&3#E>)!)2'!>#!&)$&(2)0'#'3%0!4l=0)!1#>)=&!#=!2)02!>#&J)!4=!')&B)*!

F0!#$$)>>)!>=3!4%00)&!=0 '-$)*!!

L0!$#2!#6'31()*!

>!S#236I!>#!43B)02

#&#'3%0!4)2!1#&3#E>)2!0l)2'!$#2!%E>3J#'%3&)!'#0'!D=)!>l%$'3%0!L\$>363'!0l)2'!B)0'!0l)2'!i#B#32!%E>3J#'%3&)!$=32D=)!>)2!1#&3#E>)2!%0'!'%=i%=&2!p!B303B#!

>)!'-$)!"#

2)>!$#&!4(Q#='*!#'3%0!4)2!1# >)2!)0!:32=#>!S#236!)2'!4)!>#!Q%&B)!2=31#0')!v!

70V#&!)\)

0!4)!4(6>#&!!

0!s!O%B!4)!>#!1#&3#E>)!s!K2!s!<-$)!4)!>#!1#&3#E>)!

Dim A Integer](6>#&)!>#!1# KJ)!

6>#&)&! $>=23)=&2! 1#&3#E>)2! )0! >)2!)023%00)!4)=\!1#&3#E>)2!O%B!)'!

&3#E>)! 6%BB)!('#0'!=0!)0'3)&!+.!E3'2*!F0! $)='! ='3>32)&! =0)! 2)=>)! 302'&=6'3%0! 4)! 4(6>#&#'3%0! $%=&! 4(

31#0')!4(6>#&)!)'!43B2($#&#0'!$#&!4)2!13&J=>)2*!V#&!)\)B$>)!>#!>3J0)!2=V&)0%B!6%BB)!('#0'!4)=\!6G#f0)2!4)!6#&#6'W&)2!v!Dim Nom As String, Prenom As String

/%0'&#3&)B)0'! p! 4)! 0%BE&)=\! #='&)2! >#0J#J)2I! >)! '-$)! 0)! 2)! $&%$#J)! $#2! 2=&! =0)! >3J(6>#&#'3%0*!K3023!>#!4(6>#&#'3%0!v!

0)! 4)!4Dim Nom, Prenom As String

Ol)2'!$#2!(D=31#>)0')!p!>#!4(6>#&#'3%0!$&(6(4)0')!$=32D=l)>>)!2)!>3'!v!om As Dim Nom As Variant, Pren String

/%BB)!43'!$&(6(4)BB)0'I! >#4)2!2=31#0'2!2%0'!4%06!'%=2!1#>34

!4(6>#&#'3%0!)'! >)!43B)023%00)B)0'!2%0'! Q#6=>'#'3Q2!$#&!4(Q#='*!")2!)2!v!

6>#&#'3%0!6%

X#02!4(Sub CalculPerimetre() Rayon = InputBox("Entrez le rayon en mm", "RAYON", 0) circonference = 2 * 3.14159 * Rayon MsgBox "le périmètre est de " & circonference & " mm" End Sub

! +U

Page 14: Cours VBA débutants.pdf

X#02!43B)023%00)B)0'!Sub CalculPerimetre() Dim Rayon, Circonference Rayon = InputB Circonference

ox("Entrez le rayon en mm", "RAYON", 0) = 2 * 3.14159 * Rayon MsgBox "le périmètre est de " & Circonference & " mm" End Sub

<-$(2!Sub CalculPerimetre() Dim Rayon As Integer, Circonference As Single Rayon = InputBox("Entrez le rayon en mm", "RAYON", 0) Circonference = 2 * 3.14159 * Rayon MsgBox "le périmètre est de " & Circonference & " mm" End Sub

Xl3>2!2%0'!'%=2!1#>34)2I!3>2!0l)0!2%0'!$#2!(D=31#>)0'2!$%=&!#='#0'*!X3!1%=2!)\(6='3)e!>)!$&)B3)&!)'!>)!4)&03)&! 6%4)! )0! 2#32322#0'! +@*?! 6%BB)! 1#>)=&! 4)! &#-%0I! >)! $&)B3)&! 6%4)! &)01)&&#3'! =0)! 1#>)=&! )'! >)!4)&03)&!=0)!)&&)=&*!

")2! 0%B2! 4)! 1#&3#E>)! 4%31)0'! 6%BB)06)&! $#&! =0! 6#&#6'W&)! #>$G#E('3D=)I! 8'&)! =03D=)2! #=! 2)30!4P=0)! B8B)! $%&'()I! 0)! 4%31)0'! $#2! )\6(4)&! ?NN!6#&#6'W&)2! )'! 0)! $)=1)0'! 6%0')03&! 03! 6#&#6'W&)! 4)!4(6>#&#'3%0!4)!'-$)!03!$%30'*!

La portée "#!0%'3%0!4)!$%&'()I!$#&Q%32!#$$)>()!1323E3>3'(I!4(Q303!>)2!>3B3')2!4l#66)223E3>3'(!4l=0)!1#&3#E>)*!7>!

)\32')!$>=23)=&2! 302'&=6'3%02!4)!4(6>#&#'3%0!2)>%0! >#!$%&'()!4(23&()!)'! >#!4(6>#&#'3%0!0)! 2)! Q#3'!$#2! #=!B8B)!)04&%3'*!Instruction Déclaration Commentaires V&31#')! C%4=>)! :323E>)! $#&! '%='! >)! 6%4)! 4=! B%4=>)! B#32! 30#66)223E>)! 4)$=32! =0! #='&)!

B%4=>)!!V=E>36! C%4=>)!

j2'#04#&4k!:323E>)! $#&! '%='! >)! 6%4)!4=!$&%i)'*!O)! 2)! 4(6>#&)! D=)!4#02! >)2!B%4=>)2!2'#04#&4*!

]3B! [%06'3%0! g03D=)B)0'! 4#02! >#! Q%06'3%0!%=! )>>)! )2'! 4(6>#&()*!X3! ='3>32()! #=! 031)#=!B%4=>)I!(D=31#='!p!V&31#')!

X'#'36! [%06'3%0! g03D=)B)0'!4#02!>#!Q%06'3%0!%=!)>>)!)2'!4(6>#&()*!Ol)2'!$#2!4('&=3')!p!>#!Q30!4)!>#!Q%06'3%0!

7B#J30%02!>)!6#2!2=31#0'*!]#02!=0!B%4=>)!2'#04#&4!i)!4(6>#&)!v!Public VarPublicModuleStd As String

td As StrinPrivate VarPrivateModuleS g ]#02!>)!B%4=>)!r![)=3>+!rI!il#i%=')!=0!E%='%0!2=&!>#!Q)=3>>)!)'!4#02!>)!B%4=>)!4)!6%4)I!il(6&32!v!

uleFeuille As String Private VarPrivateMod Private Sub CommandButton1_Click() VarPrivateModuleFeuille = "" VarPublicModuleStd = "" VarPrivateModuleStd = "" End Sub

X3!0%=2!#1%02!E3)0!6%B$&32!>)2!&WJ>)2!4)!>#!$%&'()I!0%=2!#>>%02!%E')03&!=0)!)&&)=&!2=&!>#!'&%323WB)!>3J0)!$=32D=)!>#!1#&3#E>)!)2'!$&31()!4#02!>)!B%4=>)!2'#04#&4*!V%=&'#0'!>)!6%4)!2l)\(6=')!2#02!)&&)=&*!!

! +,

Page 15: Cours VBA débutants.pdf

/%BB)!0%=3#

2! >l#1%02!1=I!2#=Q!2'3$=>#'3%0!6%0'&#3&)I!:32=#>!S#236!0)!Q%&6)!$#2! >#!4(6>#&#'3%0!4)2!1#& E>)2*!]#02!6)!6#2I!6%BB)!>#!Q%06'3%0!0)!1%3'!$#2!4)!4(6>#&#'3%0!$%=&!:#&V&31#')C%4=>)X'4I!)>>)!)0! 6&()! =0)! 3B$>363')! 6)! D=3! Q#3'! D=)! >)! 6%4)! 2l)\(6=')!B#32! D=l%0!0)! '&#1#3>>)! $#2! #1)6! >#! 1#&3#E>)!:#&V&31#')C%4=>)X'4!4=!B%4=>)!2'#04#&4*!V#&!6%0'&)!23!il(6&32!v!Option Explicit Priv ring ate VarPrivateModuleFeuille As St Private Sub CommandButton1_Click() VarPrivateMod lle = "" uleFeui VarPublicModuleStd = "" VarPrivateModuleStd = "" End Sub

hl%E'3)04&#32!>)!B)22#J)!v!

!&3B30()!2)&#!2=&>3J0()*!L'!>#!1#&3#E>)!306

)'')!$%&'()!304= >)2*!")2!1#&3#E>)2!4) 31)#=\!B% 0'!&B#0)0')2! 4# )\(6=')*! F0! >)2! #$$)>>)! #=223!2! J>%E#>)2*! " 1)#=! Q%06'3%0! 0l)\32')0'! D=)! >%&2D= '3%0! 2l)\(6=')! )'!

! D=#04 B30)*! L>>)2! 0)! 2%0'! 4%06! i#B#32! # 0! 4)G%& 4)! >#!Q%06'3%0!%x!)>>)2!2%0 )2!>%6#>)2*!O%&B#>)B 2%0'!4('&=3')2!)0!

0!)'!$)& 4(6>#&() 2'&=6'3 '36k!g0!#$$)>!=>'(&3)=&!p!>#!Q%06'3%0!$)&B)''&#!4)!&)'&%=1)&!>#!1#&3#E #'!%x!) 3'!p!

(6(\)Bomm

/ 3'!>#!0%'3%0!4)!4=&()!4)!13)!4)2!1#&3#E>>)2! )\32')0'! '#0'! D=)! >)! 6%4)! 2l

!0 4=>)2!2%43')2! $)1#&3#E>)

02! >)! 2)02! %x! ))2! 1#&3#E>)2! 4)! 03! >#! Q%06'3%0! 2)! ')&

)! >#! Q%0666)223E>)2! )) 2!

2%0'! 4('&=3')2 2!'!4(6>#&()2*!F0!>)2!#$$)>>)!1#&3#E>4)0'!>)=&!1#>)=&I!B#32!>)2!1#&3#E>)2!2'#'3D=)2!j

0'!)>>)2!#1)6!>l30>)!4#02!>l('

Q30!4)!Q%06'3%>#!6%02)&1)*!

%0!X'#>>)!('#

>#!Q30!4)!>l#$$)>!$&T)J#&4%02!>l)

4)0'*!$>)!2=31#0'!v!andButton2_Click() Private Sub C

Dim VarLocale As Integer VarLocale = VarLocale + 1 MsgBox VarLocale End Sub Private Sub CommandButton3_Click() Static VarLocale As Integer VarLocale = VarLocale + 1 MsgBox VarLocale End Sub

V>=23)=&2! 6>362! 2=&! >)! E%='%0! ?! $&%1%D=)&%0'! '%=i%=&2! >l#QQ36G#J)! 4)! >#! 1#>)=&! r+r! #>%&2! D=)!$>=23)=&2!6>362!2=&!>)!E%='%0!U!$&%1%D=)&%0'!>l#QQ36G#J)!4l=0)!1#>)=&!306&(B)0'()!4)!+!p!6G#D=)!6>36*!O%')e! D=)! >#! 1#&3#E>)! >%6#>)! 4)2! 4)=\! Q%06'3%02! $)='! #1%3&! >)!B8B)! 0%B!$=32D=l)>>)2! 2%0'! G%&2! 4)!$%&'()!>l=0)!4)!>l#='&)*!

! +N

Page 16: Cours VBA débutants.pdf

Le type ")!'-$)!4l=0)!1#&3#E>)!6l)2'!>#!4(')&B30#'3%0!4=!J)0&)!4)!1#>)=&!D=)!>#!1#&3#E>)!$)='!6%0')03&*!L0!

:SKI! '%=')2! >)2! 1#&3#E>)2! $%22W4)0'! >)! '-$)!Variant! $#&! 4(Q#='I! #$$)>(! $#&Q%32! '-$)! =031)&2)>*!g0)!1#&3#E>)!4)!'-$)!:#&3#0'!$)='!6%0')03&!0l3B$%&')!D=l)>>)!1#>)=&!p!>l)\6)$'3%0!4)2!6G#f0)2!4)!>%0J=)=&!Q3\)*!")2!1#&3#E>)2!4)!'-$)!:#&3#0'!$)=1)0'!#=223!#1%3&!4)2!1#>)=&2!$#&'36=>3W&)2I!p!2#1%3&!LB$'-I!L&&%&!)'!O%'G30J*!O%=2!1)&&%02!>)2!23J03Q36#'3%02!4)!6)2!1#>)=&2!$>=2!>%30!4#02!6)!6%=&2*!

")2!'-$)2!4)!4%00()2!='3>32(2!)0!:SK!2%0'!v!Valeurs Taille (o) Conversion Nom

S-')! @!p!?NN! +! /S-')!! <&=)!jyz@k![#>2)j@k! ?! /S%%>!

oU?!5.9!p!U?!5.5! ?! /70'!o?!+,5!,9U!.,9!p!!o?!+,5!,9U!.,5! ,! /"0J!oUI,@?9?ULU9! p! o+I,@+?;9Lo,N! $%=&! >)2! 1#>)=&2!0(J#'31)2!u!!

,!

S%%>)#070')J)&!"%0J!

X30J>)! /X0J!+I,@+?;9Lo,N! p! UI,@?9?ULU9! $%=&! >)2! 1#>)=&2!$%23'31)2!o+I5;5.;U+U,9.?U+LU@9!p!!o,I;,@.N.,N9,+?,5LoU?,!$%=&!>)2!1#>)=&2!

9!

]%=E>)! 0(J#'31)2!u!!,I;,@.N.,N9,+?,5LoU?,!p!+I5;5.;U+U,9.?U?LU@9!$%=&!>)2!1#>)=&2!$%23'31)2!

/]E>!

o;??!UU5!?@U!.9N!,55IN9@9!p!;??!UU5!?@U!.9N!,55IN9@5!

9! //=&!/=&&)06-!

])63B#>!

@@@@@@@@@@@@@@@@@@@@+!

two5;!??9!+.?!N+,!?.,!UU5!N;U!N,U!;N@!UUN! 2#02!2($#&#')=&!4(63B#>!!two5I;??9+.?N+,?.,UU5N;UN,U;N@UUN! #1)6! ?9!6G3QQ&)2!p!4&%3')!4=!2($#&#')=&!4(63B#>!!>)! $>=2! $)'3'! 0%BE&)! 43QQ(&)0'! 4)! e(&%! )2'! two@*@@@@@@@

+,!

/])6!

]#')! +)&!i#013)&!+@@!#=!U+!4(6)BE&)!;;;;! 9! /]#')!<%=2!>)2!%Ei)'2! ,! !.NNU.!6#&#6'W&)2! O%BE&)!

6#&#6'W&)2! !

FEi)6'!

X'&30J!jQ3\)k!

X'&30?!+,5!,9U!.,9!6#&#6'W&)2!j?{U+k! +@!t!!

J!j1#&k! O%BE&)!6#&#6'W&)2!

/2'&!

:#&3#0'!j0%BE&)k! C8B)!$>#J)!D=)!]%=E>)! +.! /1#&!

:#&3#0'!C8B)!$>#J)!D=)!6G#f0)!1#&3#E>)! ??!t!!

O%BE&)! /:#&!j6G#f0)k!6#&#6'W&)2!

!

! +.

Page 17: Cours VBA débutants.pdf

Conversion de type

n! $#22(! p! >#! Q%06'3%0! )\6W4)! >#! $>#J)! 4)! 1#>)=&2! 4=! '-$)! 4)!!2)!$&%4=3'*!223E>)! 4)! 4%6=B)0')&! >)! 6%4)! )0! ='3>32#0'! >)2! Q%06'3%02! 4)!! 4%00()2! #Q30! 4P3043D=)&! D=)! >)! &(2=>'#'! 4)! 6)&'#30)2! %$(&#'3%02!!'-$)!4)!4%00()2!$#&'36=>3)&!$>='m'!D=P#=!'-$)!$#&!4(Q#='*!g'3>32)e!!CCur $%=&! Q%06'3%00)&! )0! #&3'GB('3D=)! B%0('#3&)! )'! 0%0! )0!$&(6323%0I! )0! 4%=E>)! $&(6323%0! %=! )0! #&3'GB('3D=)! 4)! 0%BE&)2!

)0'3)&2*!

ng! #&&%04322)0'! >)2! $#&'3)2! 4(63B#>)2! (J#>)2! p! @IN! #=! 0%BE&)!&%043!p!?*!")2!Q%06'3%02!! >#! $#&'3)! 4(63B#>)! 4P=0!t!&)01%3)0'!'%=i%=&2!=0)!

Q%=&03)2!4#02!=0!Q%&B#'!43QQ(&)0'!4)2!$#&#BW'&)2!4)!4#')!&)6%00=2*!L0!%='&)I!

B)0'!>)2!1#&3#E>)2*!

Les constantes

"#!6%01)&23%0!4)!'-$)!)2'!>l%$(&#'3%0!D=3!6%0232')!p!6%01)&'3&!=0)!)\$&)223%0!)0!=0!'-$)!4)!4%00()!4(Q303*!L0!4(1)>%$$)B)0'I!%0!)0')04!$#&!)\$&)223%0!=0)!6%BE30#32%0!4)!B%'2!6>(2I!4P%$(&#')=&2I!4)!1#&3#E>)2!)'!4)!6%02'#0')2!J(0(&#0'!=0)!6G#f0)I!=0!0%BE&)!%=!=0!%Ei)'*!g0)!)\$&)223%0!$)='!)QQ)6'=)&!=0!6#>6=>I!B#03$=>)&!4)2!6#&#6'W&)2!%=!')2')&!4)2!4%00()2*!

")2!&WJ>)2!2=31#0')2!2l#$$>3D=)0'!v! X3! >P#&J=B)0'! expressio4%00()2!63E>)I!=0)!)&&)=&

7>! )2'! J(0(&#>)B)0'! $%'-$)2! 4)6%01)&23%0! 4)!

4)1&#3'!6%&&)2$%04&)!p!=0$#&! )\)B$>)! >#! Q%06'3%0#&3'GB('3D=)! )0! 23B$>)!

g'3>32)e!>)2!Q%06'3%02!4)!6%01)&23%0!4)!'-$)2!4)!4%00()2!p!>#!$>#6)!4)!>#!Q%06'3%0!Val!4)!B#03W&)!p!&)2$)6')&!>)2!6%01)0'3%02!('&#0JW&)2*!V#&!)\)B$>)I!>#!Q%06'3%0!CCur!&)6%00#f'!431)&2! '-$)2! 4)! 2($#&#')=&2! 4(63B#=\I! 4)! 2($#&#')=&2! 4)2! B3>>3)&2! )'! 431)&2)2! %$'3%02!B%0('#3&)2I!2)>%0!>)2!$#&#BW'&)2!&(J3%0#=\!4)!1%'&)!%&430#')=&*!

")2! Q%06'3%02!CInt! )'!CL$#3&!>)!$>=2!$&%6G)*!V#&!)\)B$>)I!@IN!)2'!#&&%043!p!@!)'!+IN!)2'!#&

6'3%02!Fix! )'! IntI! D=3! '&%0D=)0'CInt! )'!CLng! 43QQW&)0'! 4)2! Q%00%BE&)!2#02!Q%&6(B)0'!>P#&&%043&*!L0!%='&)I!>)2!Q%06'3%02!Fix!)'!In1#>)=&!4=!'-$)!$#22(!)0!#&J=B)0'*!

g'3>32)e! >#! Q%06'3%0! IsDate! $%=&! 4(')&B30)&! 23! >#! 1#>)=&! 4)! >P#&J=B)0'! date! $)='! 8'&)!6%01)&'3)! )0! 4#')! %=! )0! G)=&)*! "#! Q%06'3%0!CDate! &)6%00#f'! >)2! >3''(&#=\! 4#')! )'! G)=&)!#3023! D=)! 6)&'#302! 0%BE&)2! #$$#&')0#0'! p! >#! $>#J)! 4)! 4#')2! #='%&32()2*! "%&2! 4)! >#!6%01)&23%0!4P=0!0%BE&)!)0!4#')I! >#!$#&'3)!)0'3W&)!4=!0%BE&)!)2'!6%01)&'3)!)0!4#')*!X3! >)!0%BE&)! 6%B$&)04! =0)! $#&'3)! 4(63B#>)I! 6)>>)o63! )2'! 6%01)&'3)! )0! G)=&)2I! )\$&3B()2! )0!$#&'#0'!4)!B30=3'*!

"#!Q%06'3%0!CDate!&)6%00#f'!>)2!Q%&B#'2!4)!4#')!4(Q3032!4#02!>)2!$#&#BW'&)2!&(J3%0#=\!4)!1%'&)! 2-2'WB)*!"P%&4&)! 4)2! i%=&2I!B%32! )'! #00()2! &32D=)! 4)! 0)! $%=1%3&! 8'&)! 4(Q303! 23! >)2!4%00()2!2%0'!>)2!Q%&B#'2!4)!4#')!6%B$>)'2!$&(632#0'!>)!i%=&!4)!>#!2)B#30)!0)!2%0'!$#2!&)6%00=2*!

!]#02!4)!0%BE&)=\!6#2I!:SK!1#!)\(6=')&!4)!>=3oB8B)!4)2!6%01)&23%02!4)!'-$)!43')2!3B$>363')2*!

/)2! 6%01)&23%02! 4%31)0'! '%=i%=&2! 8'&)! (13'()2! 2%3'! )0! )\$>363'#0'! >#! 6%01)&23%0I! 2%3'! )0! '-$#0'!6%&&)6')

<)>!D=)!>)=&!0%B!>l3043D=)I!>)2!6%02'#0')2!2%0'!4)2!1#&3#E>)2!D=3!0)!1#&3)0'!$#2*!L>>)2!2)!4(6>#&)0'!

p!>l#34)!4)!>l302'&=6'3%0!ConstI!$)=1)0'!='3>32)&!=0)!302'&=6'3%0!4)!$%&'()!)'!=0!'-$)*!V#&!)\)B$>)!4#02!0%'&)!Q%06'3%0!$&(6(4)0')I!0%=2!$%=&&3%02!(6&3&)!v!Public Const PI As Single = 3.14159 Sub CalculPerimetre() Dim Rayon As Integer, Circonference As Single Rayon = InputBox("Entrez le rayon en mm", "RAYON", 0) Circonference = 2 * PI * Rayon MsgBox "le périmètre est de " & Circonference & " mm" End Sub

! +5

Page 18: Cours VBA débutants.pdf

Intérêts Fx!)2'!4%06!>l30'(&8'!4)!43B)023%00)&!)'!#!Q%&'3%&3!4)!4(6>#&)&!|!V%=&! >)! 43B)023%00)B)0'I! 3>! 2l#J3'! $&3063$#>)B)0'! 4l(6%0%B32)&! 4)! >#! B(B%3&)! )'! 4=! ')B$2!

4l)\(6='3%0*!/)$)04#0'! 3>! 2l#J3'! #=223! 4l=0)! 6)&'#30)! J#&#0'3)! 6%0'&)! =0! &32D=)! 4l)&&)=&! 4)! >%J3D=)*!L0Q30!>#!>323E3>3'(!4=!6%4)!0l)0!)2'!D=)!B)3>>)=&)*!V#&!#3>>)=&2I!>)!'-$)!:#&3#0'!='3>32)!4)2!6%01)&23%02!$#&! 4(Q#='! D=3! $)=1)0'! $&%4=3&)! =0! &(2=>'#'! 30#'')04=! #1)6! 6)&'#302! %$(&#')=&2*! 7B#J30%02! >)! 6%4)!2=31#0'!v!Sub ConversionArbitraire() Dim VarNonTypee As Variant VarNonTypee = 3 MsgBox VarNonTypee + 3 VarNonTypee = "coucou"

ypee + 3 MsgBox VarNonT End Sub

X3! 2! #>>)e! %E')03&! 6%BB)! &(2=>'#'! .! $=32! 6%=6%=U*! O%')e! D=)! 6)2!6%01)&2 1)&23%02!4lL\6)>*!!

"l30'(& 2! 4)! >#! 4(6>#&#'3%0! Q%&6()! )2'! E)#=6%=$! $>=2! Q#63>)! p!4(B%0'&)&*!Sub Calcu

1%=2! )\(6=')e! 6)! 6%4)I! 1%=3%02!0)!2%0'!0%&B#>)B)0'!$>=2!$%223E>)2!4#02!>)2!4)&03W&)2!8'! 4)! >#! 4(6>#&#'3%0I! '%='! #=! B%30T)$&)0%02!0%'&)!)\)B$>)!v!lPerimetre()

Rayon = InputBox("Entrez le rayon en mm", "RAYON", 0) Ciconference = 2 * PI * Rayon MsgBox "le périmètre est de " & Circonference & " mm" End Sub

d=) 323)I!>)!&(2=>'#'!2)&#!'%=i%=&2!@*!/%BB)!1%=2!>l#1)e! $6%BB)! )!6%0'3)0'!@*!

O%' 3!1%=2!8')2!=0!#2!4=!4(E% !2%=G#3')! '&#1#3>>)&!)0!4(6>#&#'3%0!Q%&6()!$%=&!D=)!

&#'3%0! 4)2! 1#&3#E>)2*! V%=&! %E')03&! 6)>#I! %0! '#$)!F$'3%0!L\$>363'! )0! G#='! 4=!B)0=! F='3>2! s! F$'3%0! )'! %0! 6%6G)! >#! 6#2)! r!4(6>#&#'3%0! 4)2! 1#&3#E>)2!

>>)!D=)!2%3'!>#!1#>)=&!&)0'&()!4#02!>#!E%f')!4)!2#)='! 8'&)! &)B#&D=(I! 3>! -! #! =0)! Q#=')! 4)! Q&#$$)! 4#02! >)! 0%B! 4)! >#! 1#&3#E>)! /3&6%0Q(&)06)I! )'!:SK!0)!Q%&6)!$#2!>#!4(6>#&#'3%0I!3>!6&()!=0)!4)=\3WB)!1#&3#E>)!D=3!)>>)e!D=)! >#!4(6>#&#'3%0!4)2!1#&3#E>)2!0)!&(2%=4&#3'!$#2! >)!$&%E>WB)I!2#=Q!2

J=#J)*!L0!)QQ)'I! 3>! Q#='!$&(632)&!p!:SK!D=l%06)>=3o63! 6%0'&m>)! >#! 4(6>#%4=>)I! %=! %0! 1#! 4#02! >)!B%E>3J#'%3&)!r*!!

!]W2! >%&2I!0%'&)! Q%06'3%0!#1)6!=0)! Q#=')!4)! Q&#$$)!0)! Q%06'3%00)&#!$>=2!$=32D=)! >#!1#&3#E>)!0l)2'!

$#2!4(6>#&()*!O%'%02! #=223! D=)! >#! 4(6>#&#'3%0! %E>3J#'%3&)! 4)2! 1#&3#E>)2! #=JB)0')! J&#04)B)0'! >#! >323E3>3'(! 4=!

6%4)*!

! +9

Page 19: Cours VBA débutants.pdf

Le type Variant K$$)>(! $#&Q%32! 3B$&%$&)B)0'! r'-$)! =031)&2)>rI! >)! '-$)! :#&3#0'! )2'! =0! '-$)! =03%0! 6P)2'opo43&)!

$%=1#0'!#1%3&!$>=23)=&2!&)$&(2)0'#'3%02!4P=0)!B8B)!1#&3#E>)!%=!#66)$'#0'!$>=23)=&2!'-$)2!4)!1#&3#E>)2*!L0!:

#3>>)=&2! >#! $>=$#&'! 4)2! )&&)=&2! 304=3')2! $#&!>P='3

!6%&&)6')B)0'!>P#$$&(G)04)&!)0!:SK!$=32D=)!$#&!4(Q303'3%0I!>)2!1 $)2!:#&3#0'*!

)! %0')03&!'%='!'-$)!4)!1#>)=&2I!0%'#BB)0'!v!

)!6G#f0)!4)!6#&#6'W&)2!E%%>()0!

&'36=>3W&)!

!1#>)=&!4P)&&)=&!$>#6)! =0! 6)&'#30! 0%BE&)! 4)! Q%06'3%02! 2$(63Q3D=)2! $%=&! '&#1#3>>)&! 2=&! >)2!

!23!>#!1#&3#E>)!)2'!=0!'#E>)#=!%3)!1&#3!23!>#!1#&3#E>)!)2'!134)!

72L&&%&!&)01%3)!1&#3!23!>#!1#&3#E>)!)2'!=0)!1#>)=&!4P)&&)=&!1%3)!=0!)0'3)&!34)0'3Q3#0'!>)!2%=2!'-$)!4)!>#!1#&3#E>)!)01%3)!=0)!6G#f0)!34)0'3Q3#0'!>)!2%=2!'-$)!4)!>#!1#&3#E>)*!

32=#>!S#236I!>)!'-$)!1#&3#0'!$)='!6%0')03&!'%=2!'-$)2!4)!1#&3#E>)*!d=%3D=P3>!2%3'!$#&Q%32!'&W2!='3>)I!3>!6%013)0'!4)!0)!$#2! #E=2)&!4)! 2%0!='3>32#'3%0*!L0!)QQ)'I! 3>! 4)B#04)!$>=2!4)! &)22%=&6)2!D=)! >)2! #='&)2!'-$)2! 6)! D=3! &#>)0'3'! >P)\(6='3%0! 4)2! $&%J&#BB)2*! V#&!>32#'3%0! 4)! 6)! '-$)! 2)! $&%4=32)0'! p! >P)\(6='3%0! 6)! D=3! ')04! p! #=JB)0')&! >#! D=#0'3'(! 4)! 6%4)! 4)!

J)2'3%0!4P)&&)=&2!)'!p!6%B$>)\3Q3)&!>)!4(E%J=#J)*!/)$)04#0'I!3>!)2'!30(13'#E>)!4)!2#1%3&#>)=&2!4)2!6)>>=>)2!L\6)>!2%0'!4)!'-" '-$)!:#&3#0'!$)='!6

g0!0%BE&)! g0 g0! g0!'#E>)#=! g0!%Ei)'! g0)!1#>)=&!$#

LB$'-!v!>#!1#&3#E>)!)2'!134)! O%'G30J!v!FEi)'!0%0!303'3#>32(! Og""!v!:#>)=&!134)!4P=0)!E#2)!4)!4%00()2! L&&%&!v!g0)

0!:32=#>! S#236! B)'! )1#&3#0'2!v!

72K&&#-!&)01%3)!1&#372LB$'-!&)01

:#&<-$)!&)0 <-$)O#B)!&

F0!$%=&&#3'!3B#J30)&!=0!6%4)!4)!')2'!')>!D=)!v!Sub TestVariant() Dim MaVar As Variant, Message As String MaVar = Range("B2").Value Message = "Le sous type est : " & VarType(MaVar) & " => " & TypeName(MaVar) & vbNewLine Message = Message & "La variable est vide : " & IsEmpty(MaVar) & vbNewLine Message = Message & "La variable est une valeur d'erreur : " & IsError(MaVar) & vbNewLine Message = Message & "La variable est un tableau : " & IsArray(MaVar) MsgBox Message End Sub

X3!>#!6)>>=>)!S?!)2'!134)I!6)!6%4)!#QQ36G)&#!>#!E%f')!4)!B)22#J)!2=31#0')!v!

!

! +;

Page 20: Cours VBA débutants.pdf

Type utilisateur 7>!)2'!$%223E>)!4)!4(Q303&!4)2! '-$)2!6%B$%23')2I!#$$)>(2! '-$)2!='3>32#')=&2!p! >P#34)!4)! >P302'&=6'3%0!

<-$)Z!L04!<-$)*!"P30'(&8'!)2'!(134)BB)0'!4)!B#03$=>)&!$>=23)=&2!1#&

%0234(&(!6%BB)!0P3B$%&')!D=)>!'-3#E>)2!6%00)\)2!p!>P#34)!4P=0)!2)=>)!1#&3#E>)*!$)I!1%=2!$%=1)e!4(6>#&)e!4)2!1#&3#E>)2!4)!6)!

01%-)&!4#02!4)2!Q%06'3%02I!)'6Z!!'-$)!='3>32#')=&!2)!Q#3'!%E>3J#'%3&)B)0'!#=!031)#=!4=!B%4=>)*!]#02!=0!B%4=>)!=E>36!%=!$&31(I!4#02!=0!B%4=>)!%Ei)'!3>!0)!$)='!8'&)!D=)!$&31(*!

2)!Q#3'!2%=2!>#!Q%&B)!v!!

2!<-$)!$)!

B$%2)0'! >)! '-$)! j#$$)>(2! B)BE&)2k! $)=1)0'! 8'&)! 4)! 0P3B$%&')! D=)>2! '-$)2!%=! 4P#='&)2! '-$)2! ='3>32#')=&2*! 7>! )2'! 4%06! $%223E>)! 4P%E')03&! 4)2! 2'&=6'=&)2!!

e!$#2!D=)!6)'')!4(Q303'3%0!0)!2=QQ3'!$#2!$%=&!B#03$=>)&! >#!2'&=6'=&)I!1%=2!4)1)e!4(6>#&)&!&!>P='3>32)&!)QQ)6'31)B)0'*!

B)BE&)2I!6P)2'!>P%$(&#')=&!r*r!jV%30'k!D=3!)2'!='3>32(*!

/)!'-$)!('#0'!)02=3')!6&)'-$)I!4)2!'#E>)#=\I!>)!

"#!4(Q303'3%0!4P=0'&)!$2'#04#&4I!3>!$)='!8

"#!4(6>#&#'3%0!!NomTypePortee Type

! Element!K! Element!K2!<-! Z*!End Type ")2! (>(B)0'2! D=3! 6%

$&(4(Q3032I! 4)2! '#E>)#=\!'!6%B$>)\)2*)\'&8B)B)0

OP%=E>3)4)2!1#&3#E>)2!4)!6)!'-$)!$%=

V%=&!#66(4)&!#=\!Public Type Fichier

s String Nom A Repert oire As String DateCration As Date Taille As Long nd Type E ublic Sub test() P Dim FichiersExcel() As Fichier, compteur As Long, fTemp As String Temp = Dir("d:\svg\f jmarc\*.xls", vbNormal) Do Until fTemp = "" ReDim Preserve FichiersExcel(0 To compteur) FichiersExcel(compteur).Nom = fTemp FichiersExcel(compteur).Repertoire = "d:\svg\jmarc\*.xls" FichiersExcel(compteur).DateCration = FileDateTime("d:\svg\jmarc\" & Temp) f FichiersExcel(compteur).Taille = FileLen("d:\svg\jmarc\" & fTemp) compteur = compteur + 1 fTemp = Dir Loop MsgBox FichiersExcel(0).Nom & vbNewLine & FichiersExcel(0).Taille End Sub

Énumération g0)!(0=B(&#'3%0!)2'!=0!J&%=$)B)0'!4)!6%02'#0')2!)0'3W&)2!6%00)\)2*!L>>)!)2'!'%=i%=&2!4(6>#&()!#=!

031) !#=!4=!B%4=>)*!"P30'(&8'!&)$%2)!2=&'%='!2=&!>#!>323E3>3'(!4=!6%4)I!%0!$)='!3043QQ(&)BB)0' ='3>32)&!>#!1#>)=&!0=B(&3D=)!%=!>)!B)BE&)!4)!>P(0=B(&#'3%0*!L>>)!2)!4(6>#&)!6%BB)!2=3'!v!Portée Enum Name!! NomMembre!R!}ConstanteEntiere~!! NomMembre!R!}ConstanteEntiere~!! Z*!End Enum

! ?@

Page 21: Cours VBA débutants.pdf

")2!1#>)=&2!4P=0)! (0=B(&#'3%0!$)=1)0'! 8'&)!='3>32()2! 2%3'! 43&)6')B)0'I! 2%3'! p! >P#34)!4)!1#&3#E>)2I!$#22() =! &)01%-()2! $#&! =0)! Q%06'3%0*! X3! >)2! 1#>)=&2! 4)2! 6%02'#0')2! 0)! 2%0'! $#2!$&(6

Public

2! 6%BB)! #&J=B)0'! %()2! 4#02! >#! 4(6>#&#'3%0I! >)! $&)32 B3)&!B)BE&)! 1#='! e(&%I! 6G#D=)!B)BE&)! 2=31#0'! ('#0'! (J#>! p! >#!

1#>)=&!4=!B)BE&)!$&(6(4)0'!#J&(B)0'(!4)!+*!:SK!='3>32)!4)!0%BE&)=2)2!(0=B(&#'3%02!30'(J&()2*!

Enum Mois nvier = 1 Ja

Février = 2 rs Ma = 3

Av = 4 Ma 5 Ju 6 Ju t = 7 Ao 8 Se bre = 9

Oct e = 10

ril i = in = ille ut = ptem obr Novembre = 11

Décembre = 12 End Enum Public Enum Facteur kilo = 1024 mega = 1048576 giga = 1073741824 End Enum Private Function LastDayOfMonth(ByVal Annee As Integer, ByVal LeMois As Mois) As Integer LastDayOfMonth = Day(DateSerial(Annee, LeMois + 1, 0)) End Function Public Sub TestEnum() Dim Taille As Long Taille = FileLen("d:\svg\jmarc\setup.exe") Call MsgBox("Taille : " & Taille & " (" & Taille / Facteur.mega & " Mo)") Call MsgBox("dernier jour de février 2000 : " & LastDayOfMonth(2000, Février)) End Sub

Masque binaire #2D=)2! E30#3&)2! 2%0'! =0)! Q%&B)! $#&'36=>3W&)! 4P(0=B(&#'3%0*! 7>! &)$%2)! 2=&! >#! &)$&(2)0'#'3%0!

E30#3&)! 4)2! 0%BE&)2! )0'3)&2*! L0! )QQ)'I! %0! $)='! &)$&(2)0')&! =0! 0%BE&)! )0'3)&! 2%=2! >#! Q%&B)! 4P=0)!2=66)223%0! 4)! 1#>)=&! e(&%! %=! =0I! D=P%0! $)='! #223B3>)&! p! =0)! 2=3')! 4)! 6G#B$2! E%%>()02*! 7>! )2'! #>%&2!$%223E>)!4)!2'%6a)&!=0!J&#04!0%BE&)!4P30Q%&B#'3%02!4#02!=0)!2'&=6'=&)!&)>#'31)B)0'!6%B$#6')*!

g0 0! 4%0'! 6G#D=)! B)BE&)! #=&#! 6%BB)! 1#>)=&! =0)!$=322#06 E&)2!4%00)!Q%&6(B)0'!=0)!1#>)=&!=03D=)*!

")2!B

! B#2D=)! E30#3&)! 2)&#! 4%06! =0)! (0=B(&#'3%)!4)!4)=\!#Q30!D=)!>#!6%B$%23'3%0!4)2!B)B

O%=2!&)13)04&%02!$>=2!)0!4('#3>!2=&!>)=&!Q%06'3%00)B)0'!=0!$)=!$>=2!>%30!4#02!6)!6%=&2!

! ?+

Page 22: Cours VBA débutants.pdf

Opérateurs K=223!306&%-#E>)!D=)!6)>#!$=322)!$#&#f'& !

&)>#'31)B)0'!$)=!4l%$(&#')=&2!)0!: !J&#04)I!>)2!%$(&#')=&2!2)&1)0'!p!&(#>32)&!4)2!%$(&#'3%02*!7>!)\32')

SKI!D=3!%0'!43132(2!)0!D=#'&) )2!Q#B3>>)2*!

Opérateurs arithmétiques Opérateur Commentaire

t! K443'3%0!4)!4)=\!0%BE&)2!o! X%=2'&#6'3%0!4)!4)=\!0%BE&)2!�! C=>'3$>36#'3%0!4)!4)=\!0%BE&)2!w! ]31323%0! E&)2I!>)!4(0%B30#')=&!0)!$)='!8'&)!0=>*!4)!4)=\!0%BÄ! ]31323%0!)0'3W&)*!T)01%3)!>#!$#&'3)!)0'3W&)!4=!&(2=>'#'!{! A>(1#'3%0!p!>#!$=322#06)!4=!0%BE&)!4)!J#=6G)!$#&!6)>=3!4)!4&%3')!C%4! T)01%3)!>)!&)2')!4)!>#!431323%0!4=!0%BE&)!4)!J#=6G)!$#&!6)>=3!4)!4&%3')*!]%06!)0!$&)0#0'!>)!6%4)!2=31#0'!v!lic Sub OperateurArithmetique()

Dim Operande1 As Integer, Operande2 As Integer, Result As Double

Operande1 = 5 Operande2 = 2 Result = Operande1 + Operande2 Debug.Print

Result = Operande1 - Operande2 Debug.Print Result Result = Operan

Debug.Print Result Result = Operande1 / Operande2 Debug

Result = Operande1 \ Operande2 Debug.Print Result Result = Operande1 ^ Operande2

Pub

Result

de1 * Operande2

.Print Result

Debug.Print Result Result = Operande1 Mod Operande2 Debug.Print Result End Sub

O%=2!%E'3)04&3%02 '&)!4l)\(6='3%0!v!!4#02!>#!Q)087 3 10 2.5 2 25 1

Opérateurs de comparaison ")2!%$(&#')=&2!4)!6%B$#&#32%0!2%0'!'%='!#=223!6%00=2!D=)!>)2!%$(&#')=&2!#&3'GB('3D=)2!

Opérateur vrai si

y!j30Q(&3)=&!pk!

faux si

ression2! expression1!zR!expression2!

pression2! expre

expression1!y!exp

yR!j30Q(&3)=&!%=!(J#>!pk! expression1!yR!ex ssion1!z!expression2!

essi pression2!z!j2=$(&3)=&!pk! expression1!z!expr on2! expression1!yR!ex

! ??

Page 23: Cours VBA débutants.pdf

Opérateur vrai si faux si

zR!j2=$(&3)=&!%=!(J#>!pk! expression1!zR!expression2! expression1!y!expression2!

!expression2! expression1!R!expression2!7>! 6)! D=)! >l%0! 6%B$#&)! 6#&! :SK! 6%B$#&)!

43QQ(&)B 6G#f0)!r+@r!)'!30Q(&3)=&)!p!>#!6G#f0)!r?r!#>%&2!D=)!

2!&WJ>)2!2=31#0')2!2P#$$>3D=)0'!v!

R!j(J#>!pk! expression1!R!expression2! expression1!yz!expression2!

yz!j43QQ(&)0'!4)k! expression1!yz)2'! '%=i%=&2! 3B$%&'#0'! 4)! 2#1%3&! 6)$)04#0'!B)0'!>)2!6G#f0)2!4)2!0%BE&)2*!V#&!)\)B$>)!>#!

6l)2'!>l301)&2)!$%=&!>)2!1#>)=&2!0=B(&3D=)2*!!")

Condition Résultat

")2!4)=\!)\$&)223%02!2%0'!4)2!'-$)2!4)!4%00()2!0=B(&3D=)2! jS-')I! S%%>)#0I! 70')J)&I! "%0JI! X30J>)I!]%=E>)I

LQQ)6'=)!=0)!6%B$#&#32%0!0=B(&3D=)*!

!]#')I!/=&&)06-!%=!])63B#>k!

")2!4)=\!)\$&)223%02!2%0'!4)!'-$)!X'&30J! LQQ)6'=)!=0)!6%B$#&#32%0!4)!6G#f0)2*!

g0)!)\$&)223%0!)2'!4)!'-$)!0=B(&3D=)!)'!>P#='&)! LQQ)6'=)!=0)!6%B$#&#32%0!0=B(&3D=)*!4)!'-$)!VariantI!D=3!)2'!%=!$)='o8'&)!=0!0%BE&)!

g0)!)\$&)223%0!)2'!4)!'-$)!0=B(&3D=)!)'!>P#='&)!)2'! =0)! 6G#f0)! 4)! '-$)! Variant! 0)! $%=1#0'! 8'&)!6%01)&'3)!)0!0%BE&)!

"P)&&)=&!type incompatible!2)!$&%4=3'*!

g0)!) !String!)'! >P#='&)!4)!'-$)

LQQ)6'=)!=0)!6%B$#&#32%0!4)!6G#f0)2*!\$&)223%0!)2'!4)! '-$)!VariantI!2#=Q!Null!

g0)!)\$&)223%0!)2'!Empty 40=B(&3D=)!

QQ ! 6%B$#&#32%0! 0=B(&3D=)! )0!>32#0'!># &!@!$%=&!>P)\$&)223%0!Empty*!

!)'!>P#='&)!)2'! )!'-$)! L )6'=)! =0)='3 !1#>)=

P#='&)! )!='3 0)!6G#

g0)!)\$&)223%0!)2'!Empty!)'!> )2'!4)!'-$String!

LQQ)6'=)! =0)! 6%B$#&#32%0! 4)! 6G#f0)2! )0!>32#0'!= f0)!4)!>%0J=)=&!0=>>)!jrrk!$%=&!

>P)\$&)223%0!Empty*!X3! >)2 ion1! )'! expression2! 2%0'! '%=2! 4)=\! 4)! '-$)!VariantI! >#! B('G%4)! 4)!

6%B$#&#32 $#&! >)=&! '-$)! 2%=2oi#6)0'*! ")! '#E>)#=! 2=31#0'! 4(Q303'! >#! B('G%4)! 4)!6%B ')0=2!)0!Q%06'3%0!4=!'-$)!2%=2oi#6)0'!v!

Conditi Résultat

! #&J=B)0'2! express%0! )2'! 4(')&B30()!

$#&#32%0!4)2!)\$&)223%02!4)!'-$)!Variant!)'!>)2!&(2=>'#'2!%E

on

)! Va 0'!

Varian )2!

")2! 4)=\! )\$&)223%02! 4)! '-$ riant! 2%0=B(&3D=)2!

LQQ)6'=)!=0)!6%B$#&#32%0!0=B(&3D=)*!

")2!4)=\!)\$&)223%02!4)!'-$)! t!2%0'!46G#f

LQQ)6'=)!=0)!6%B$#&#32%0!4)!6G#f0)2*!0)2!

g0)! ! '-$)! Variant! )2'!0=B(&3D=) f0)!

"P)\$&)223%0! 0=B(&3D=)! )2'! 30Q(&3)=&)! p!>P)\$&)223%0!4)!6G#f0)*!

4)2! )\$&)223%02! 4)!)'!>P#='&)!)2'!=0)!6G#

g0)! 4)2! )\$&)223%02! 4) t1#>)=&!Empty!)'!>P#='&)!)2'!0=B(&3D

QQ ! 6%B$#&#32%0! 0=B(&3D=)! )0!>32#0'!@ >P)\$&)223%0!Empty*!

! '-$)! Varian ! #! >#! L=)!

)6'=)! =0)='3 !$%=&!

$)! V 2'!='3 0)!6G#>P)\ 0!Em

g0)! 4)2! )\$&)223%02! 4)! '- ariant! )Empty!)'!>P#='&)!)2'!=0)!6G#f0)!

LQQ)6'=)! =0)! 6%B$#&#32%0! 0=B(&3D=)! )0!>32#0'!= f0)!4)!>%0J=)=&!0=>>)!jrrk!$%=&!$&)223% pty*!

")2! 4)=\! )\$&)223%02! 4)! '-$)! Variant! 2%0'!Empty!

")2!)\$&)223%02!2%0'!(J#>)2*!

! ?U

Page 24: Cours VBA débutants.pdf

7>! )\32 $#&#32%0! 4)! 6G#f0)2I! >#! 6%B$#&#32%0! E30#3&)! D=3! '3)0'! 6%B$')! 4)! >#!6#22)!)'!>#! 3!0P)0!'3)0'!$#2!6%B$')*!F0!$)='!4(Q303&!>#!6%B$#&#32%0!$#&!4(Q#='!p!>#!1#>)

])=\!%$(&#')=&2!4)!6%B$# = 2 )=&!72!2)&#!1=!4#02!>#!$#&'3)!4)!6)!6%=&2! '&#3'#0'!4)2!%Ei)'2*!"P% )! %B !4)!6G#f0)!#1)6!=0!B%4W>)!4)!6G#f0)!#66)$'#0'!4)2!6#&#6'W&)2!J(0(&3D=)2!j�I!|k*!!

&, Opérateur de c ténati

')! 4)=\! '-$)2! 4)! 6%B6%B$#&#32%0!')\')!D=

=&!')\')!p!>P#34)!4PrF$'3%0!/%B$#&)!<)\'r!)0!'8')!4)!B%4=>)*!&#32%0!2$(63Q3D$(& "3a

)!)\32')0'!#=2$)&B )!6

3*!"P%$(&#'$ 0#')=&! )'!=0 #&#32%

onca on !O%=2!"P%$(&#')=&!H!$)&B)'!4)!6%06#'(0)&!j&(=03&k!4)=\!6G

!v!#f0)2* )0!#1%02!1=!=0!)\)B$>)!4#02!>)!

6%4)MsgBox "le périmètre est de " & Circonference & " mm"

O%')e!D=)!>#!1#&3#E>)!6%06#'(0()!)2'!=0)!1#>)=&!0=B(&3D=)!)'!D=P3>!-!#!=0)!6%01)&23%0!3B$>363')!1)&2!>)!'-$)!X'&30J*!

Opérateurs logiques L0!:32=#>!S#236I!>)2!B8B)2!%$ #!>%J3D=)!)'!>#!>%J3D=)!E30#3&)*!/)!0P)2'!$#2!

Q%&6(B)0'! =0)!E%00)! 6G%2)! )0! ')& ! >323E3>3'( #1)6! >P )! %0! (13')! >)2! )&&)=&2! D=)! 6)>#!$%=&&#3'!)0'&#f0)&*!/%BB)0q%02!#1)6!>#!>%J3D=)!2'#04#&4I!0%=2!1)&&%02!>#!>%J3D=)!E30#3&)!i=2')!#$&W2*!

")2!%$(&#')=&2!>%J3D=)2!2P='3>32)0'!'%=i%=&2!2%=2!>#!Q%&B)!v!résultat!=!expression1!opérate ression2 K!>P)\6)$'3%0!4)! >P%$(&#')=&!O%'*!L\$&)223%0+!)'!)\$&)223%0?!4%31)0'!4%06! &)01%-)&!4)2!1#>)=&2!

E%%>()00)!j1&#3wQ#=\k!)'!>)!&(2=>'#'! !=0)!#=22

Opérateur And

(&#')=&2!2)&1)0'!$%=&!>B)!4) !B#32! G#E3'=4

ur!exp

)0!2)&# 3*!!

:(&3Q3)!D=)!>)2!4)=\!)\$&)223%02!2%0'!1&#3)2*!

Expression1 Expression2 Résultat:&#3! :&#3! :&#3!:&#3! [#=\! [#=\![#=\! :&#3! [#=\![#=\! [#=\! [#=\!

X3!=0)!)\$&)223%0!&)01%3)!O=>>I!>)!&(2=>'#'!2)&#!O=>>!23!>P#='&)!)\$&)223%0!)2'!1&#3)I!Q#=\!230%0*!

Opérateur Or :(&3Q3)!D=P#=!B%302!=0)!4)2!4)=\!)\$&)223%02!2%0'!1&#3)2*!

Expression1 Expression2 Résulta#3! :&#3!

3! [#=\!\! :&#

[#=\!X3!=0)!)\$&)223%0!&)01%3)!O=>>I!>)! >>!23!>P#='&)!)\$&)223%0!)2'!Q#=22)I!1&#3!230%0*!

r Eqv&(2=>'#'!2)&#!O=

Opérateu:(&3Q3)!>P(D=31#>)06)!>%J po43&)!D=)!>)2!4)=\!)\$&)223

sion1 Expression2 Résu3!

t:&#3! :&:&# :&#3![#= 3! :&#3![#=\! [#=\!

3D=)!6P)2'o %02!&)01%3)0'!>)!B8B)!&(2=>'#'*!

Expres ltat:&# :&#3! :&#3!:&#3! [#=\! [#=\![#=\! :&#3! [#=\![#=\! [#=\!

=>>*!:&#3!

X3!=0)!)\$&)223%0!&)01%3)!O=>>I!>)!&(2=>'#'!2)&#!O

! ?,

Page 25: Cours VBA débutants.pdf

Opérateur XOr :(&3Q3)!>P)\6>=23%0!>%J3D=)!6P)2'opo43&)!D=)!>)2!4)=\!)\$&)223%02!&)01%3)0'!=0!&(2=>'#'!43QQ(&)0'*!

Expression1 Expression2 Résultat:&#3! :&#3! [#=\!:&#3! [#=\! :&#3![#=\! :&#3! :&#3![#=\! [#=\! [#=\!

X3!=0)!)\$&)223%0!&)01%3)!O=>>I!>)!&(2=>'#'!2)&#!O=>>*!

ImpOpérateur :(&3Q3)! >P3B$>36#'3%0! >%J3D=)! 6P)2'opo43&)! D=)! 23! >P)\$&)223%0+! )2'! 1&#3)I! >P)\$&)223%0?! 4%3'! >P8'&)!

#=223*!Expression1 Expression2 Résultat

:&#3! :&#3! :&#3!:&#3! [#=\! [#=\![#=\! :&#3! :&#3![#=\! [#=\! :&#3!O=>>! :&#3! :&#3!O=>>! [#=\! O=>>!:&#3! O=>>! O=>>![#=\! O=>>! [#=\!O=>>! O=>>! O=>>!

Opérateur Not K$$>3D=)!>#!0(J#'3%0!>%J3D=)I!6P)2'opo43&)!301)&2)!>)!&(2=>'#'!4P=0)!)\$&)223%0*!])!>#!Q%&B)!v!résultat!=!Not!expression

Combinaisons d'opérateur /)2!%$(&#')=&2!$)=1)0'!8'&)!6%BE30(2!4#02!=0)!)\$&)223%0I!6)$)04#0'!3>!)\32')!4)2!$&3%&3'(2!4#02!

>)=&!(1#>=#'3%0*!"%&2D=P3>! !$>=23)=&2!'-$)2! (&#')=&2I!3>2! '!( =(2 02! 4&)!v!F$(&#')=&2!#&3'GB('3D=)2! !%$(&#')=&2!4)!6%B$#&#32%0! 2!K=!2)30!4P=0)!B8B)!Q#B3>>)I!>)2!$&3%&3'(2!2=31)0'!>P%&4&)!2=31#0'!v!

Arithmétique Comparaison Logique

A>(1#'3%0!p!=0)!$=322#06)!j{k! AJ#>3'(!jRk! O%'!

O(J#'3%0!jsk! 70(J#>3'(!jyzk! K04!

C=>'3$>36#'3%0!)'!431323%0 70Q(&3%&3'(!jyk! F&!

]31323%0!4P)0'3)&2!jÄk! X=$(&3%&3'(!jzk! M%&!

C%4=>%!#&3'GB('3D=)!jC 70Q(&3%&3'(!%=!(J#>3'(!jyRk! LD1!

K443'3%0!)'!2%=2'&#6'3%0!j k! X=$(&3%&3'(!%=!(J#>3'(!jzRk! 7B$!

/%06#'(0#'3%0!4)!6G#f0)2!jHk! ! !

"%&2D=)!4)= (&#')=&2!%0'!>#! )!$&3%&3'(I!3>2!2%0'!'&#3'(2!4#02

-!# 4P%$ 2%0 1#> !4# >P%&!%$(&#')=&2!>%J3D=)

!j�I!wk!

%4k!

tI!s

\!%$ B8B !>P%&4&)!4P#$$#&3'3%0!4)!>#!J#=6G)!1)&2!>#!4&%3')*!

")2!$#&)0'GW2)2!$)&B)'')0'!4)!B%43Q3)&!>#!$&3%&3'(! <%=')!>P)\$&)223%0!)2'!'%=i%=&2!(1#>=()!

! ?N

Page 26: Cours VBA débutants.pdf

Opérateur d'affectation, = )2! >#0J#J)2I! :SK! ='3>32)! >)! B8B)! %$(&#')=&! $%=&! >P#QQ)6'#'3%0! )'! $%=&!)'!J(0(&#>)B)0'!4)!2#1%3&!D=)>!)2'!2%0!&m>)!4#02!=0)!>3J0)!4)!6%4)!4%00()I!3&!4)2!#BE3J=Å'(2!4#02!6)&'#302!6#2*!7B#J30%02!>)!6%4)!2=31#0'!v!

K! >#! 43QQ(&)06)! 4P#='&&B>P(J#>3'(*!X3!>)!6%0')\')!$)

3>!$)='!D=#04!B8B)!3>!-!#1%Sub OperateurEgal() m Var1 Di As Integer, Var2 As Integer, Var3 As Integer

Var1 = 10 Var3 = Var2 = Var1 Debug.Print Var3 End Sub

/%0'&#3&)B)0'!#=\!#$$#&)06)2I!6)!6%4)!0)!1)='!$#2!43&)!rB)''&)!1#&?!)'!1#&U!p!+@!B#32!rB)''&)!?!R!1#&+r*!]W2!>%&2I!%0!$%=&&#3'!2P#'')04&)!p!%E')03&!=0)!)&&)=&!

>()00)!)'!D=)!1#&U!)2'!4)!'-$)!)0'3)&*!/%BB)!0%=2!>P#1%02!!1#!6%01)&'3&!3B$>363')B)0'!>)!'-$)!$%=&!>)!Q#3&)!6%Å0634)&!

V%=&!D=)!6)!6%4)!2%3'!(6&3'!6%&&)6')B)0'!3>!Q#=4&#3'!'-$)&!>#!1#&3#E>)!

4#02!1#&U!>)!&(2=>'#'!4)!>P)\$&)223%0!1#&4)!'-$)!$=32D=)!>)!&(2=>'#'!)2'!=0)!1#>)=&!E%%

#2!%x!:SK43'!$&(6(4)BB)0'I!3>!2P#J3'!4P=0!6)!4)!>#!1#&3#E>)!1#&U*!#1)6!>)!'-$

6%BB)!1#>)=&!E%%>()00)*!K'')0'3%0I! 3>! )\32')! #=223! =0)! 702'&=6'3%0!Set! $%=&! #QQ)6')&! 4)2! %Ei)'2! 4#02! 4)2! 1#&3#E>)2*! /)'')!

302'&=6'3%0!)2'!%E>3J#'%3&)!$%=&!D=)!>P#QQ)6'#'3%0!2%3'!6%&&)6')*!

Logique binaire "#!>%J3D=)!E30#3&)I!D=P%0!&)'&%=1)!$#&Q%32!0%BB()!2%=2!>P(>(J#0')!'&#4=6'3%0!4)!rB#2D=)!4)!E3'2r!

jE3'B#2akI!6%0232')!p!='3>32)&! >#!&)$&(2)0'#'3%0!E30#3&)!4)2!0%BE&)2!$%=&!1(G36=>)&!$>=23)=&2!&($%02)2!E%%

T)J#&4%02! >)2! 1#>)=&2! 4)2! 2)3e)! $&)B3)&2! 0%BE&)2! )0'3)&2! )'! >)=&2! &)$&(2)0'#'3%02! E30#3&)2*! F0!$)='!3B#J30)&!2)2!D=#'&)!E3'2!6%BB)!D=#'&)!&($%02)2!E%%>()00)2*!V#&!)\)B$>)!6%BB)!>P)06#4&)B)0'!4P=0)! 6)>>=>)! %=! +! 3043D=)&#3'! D=)! >#! E%&4=&)! )2'! '&#6()! )'! e(&%! 0%0I! )'! %x! >)2! E3'2! +! ?! U! )'! ,!6%&&)2$%04&#3'!&)2$)6'31)B)0'!#=\!E%&4=&)2!J#=6G)!G#=')!4&%3')!)'!E#22)*!!

!:#>)=&!4(63B#>)!

! +! ?! U! ,!

@! ! @! @! @! @!

>()00)2*!

+! ! @! @! @! +!?! ! @! @! +! @!U! ! @! @! +! +!,! ! @! +! @! @!N! ! @! +! @! +!.! ! @! +! +! @!5! ! @! +! +! +!9! ! +! @! @! @!;! ! +! @! @! +!+@! ! +! @! +! @!++! ! +! @! +! +!+?! ! +! +! @! @!+U! ! +! +! @! +!+,! ! +! +! +! @!+N! ! +! +! +! +!

:%=2! 0%')&)e! #=223! D=)! 6G#D=)! $=322#06)! 4)! 4)=\! 4%00)! =0! &(2=>'#'! D=P%0! 0)! $)='! %E')03&! $#&!#443'3%0! 4)2! 0%BE&)2! 30Q(&3)=&2*! V%=&! '&#1#3>>)&! )0! &)$&(2)0'#'3%0! E30#3&)I! :SK! ='3>32)! =0)!(0=B(&#'3%0! 4)! $=322#06)! 4)! ?*! ")2! (0=B(&#'3%02!:SK! 2)! 4(6>#&)0'! #1)6! >P302'&=6'3%0! L0=B*! V%=&!B#03$=>)&! 2)2! 1#>)=&2I! %0! $)='! ='3>32)&! 3043QQ(&)BB)0'! >)2! %$(&#')=&2! >%J3D=)2! %=! >)2! %$(&#'3%02!4(63B#>)2*!

! ?.

Page 27: Cours VBA débutants.pdf

T)J#&4%02!>P)\)B$>)!2=31#0'!v!Pu Bord re blic Enum u

'2roit '2^2

'2

Enca j b de

r Gauche

#& 4)! 4(Q303'! >P 0=

&) !># *!%BB) )2'!rB

B$ 4)

1 r!e

Gauche = 1 '2^0 Haute = 2 ^1 d e = 4 basse = 8 ^3 End Enum Public Sub Encadrement() Dim dre As Bordure 'a oute la ordure gauche Encadre = Encadre O 'ajoute la bordure haute Encadre = Encadre + Haute 'ajoute la bordure droite Encadre = Encadre + 4 'ajoute la bordure basse Encadre = Encadre Xor basse Debug.Print EncadreEnd Sub

"#! $&)B3W&)! $ '3)! 4=! 6% ( B(&#'3%0*! ]#02! >#! $&%6(4=&)! )06#4&)B)0'I! iP#i%=')! 4)2!1#>)=&2!2%3'!$#&!#443'3%0!2%3'!$#&!='3>32#'3%0!4)2!%$(&#')=&2!>%J3D=)2*!S3)0!D=P3>!Q#3>>)!&#32%00)&!)0!')&B)!4)! B#2D=)! E30#3&)I! >#! 1#>)=&! ='3>32()! )2'! =0! )0'3)&*! "P#QQ36G#J)! 4)! >#! 1#&3#E>)! L06#4&)! )0! Q30! 4)!$&%6(4= !&)01)&&# !1#>)=&!+N

/ !>P='3>32#'3%0!4)2!%$(&#')=&2!#&3'GB('3D=)2! %302!2%=$>)rI!%0!='3>32)!J(0(&#>)B)0'!>)2!%$(&#')=&2! >%J3D=)2I!D=3!Q%06'3%00)0'!)0!6% #&#32%0! !E3'2*!")=&!Q%06'3%00)B)0'!)2'!23B3>#3&)!p! >#!>%J3D=)!2'#04#&4I!6P)2'!p!43&)!4)!>#!Q%&B)!v!!

résultat!=!expr !opérateu xpr2

! ?5

Page 28: Cours VBA débutants.pdf

")2!&($%02)2!4)!2)2!%$(&#')=&2!2%0'!4(Q303)2!4#02!>)!'#E>)#=!63o#$&W2!Op résultat érateurs Bit dans

expr1 Bit dans

expr2 ! ! ! !

And ! @! @! @! ! @! +! @! ! +! @! @! ! +! +! +! ! ! ! !

E @! +!qv ! @! ! @! +! @! ! +! @! @! ! +! +! +! ! ! ! !

Imp ! @! @! +! ! @! +! +! ! +! @! @! ! +! +! +! ! ! ! !

Or ! @! @! @! ! @! +! +! ! +! @! +! ! +! +! +! !Or !

! ! !X @! @! @!

! @! +! +! ! +! @! +! ! +! +! @!

!K'' 3 )='! $&%4=3&)! 4)2! &(2=>'#'2! 2=&$&)0#0'!>%&2D=P%0! 0P )22#-)e! 4)! '&%=1)&! >)! &(2=>'#'!D=P#=&#! # &!>)!6%4)*!Public u

)0' %0I! >)2! #6'3%02! %0'! >3)=! 2=&! '%='! >)!B#2D=)! 6)! D=3! $0%02! >P(0=B(&#'3%0! $&(6(4)0')! )'!)2'! $#2! 13J3>#0'*! T)$&)

#4&)!2#02!)\(6=')>#!1 &3#E>)!L06 S b ValeurEncadre()

Dim Encadre As Bordure Encadre = Encadre Xor basse Enca droite dre = Encadre Or

dre = haute Imp Enca Encadre Encadre = Encadre And gauche Encadre = Not Encadre End Sub

! ?9

Page 29: Cours VBA débutants.pdf

Procédures & fonctions 0! )02)BE>)! 4P302'&=6'3%02! 2P)\(6='#0'!

&%6(4=&)!2)!4(Q303'!D=#04!%0!>#!4(6>#&)*!"#!4(Q303'3%0!)2'!'%=i%=&2!6%02'3'=()!')>>)!

")!0%B!4)!>#!$&%6(4=&)!0'!>#!>32')!4)2!#&J=B)0'2!

V#&!)\)B$>)I!>#!>3J0)!2=31#0')!4(Q303)!>#!$&%6(4=&)!$=E>3D=)!Encadrement!v!Pub

F0! #$$)>>)! $&%6(4=&)! jB('G%4)! 4#02! >)! 6#2! 4)2! %Ei)'2k! =BB)!=0)!)0'3'(*!<%='!6%4)!)\(6='#E>)!)2'!%E>3J#'%3&)B)0'!4#02!=0)!$&%6(4=&)*!6%L0!:SKI!=0)!$

D=)!v! g0!B%'!6>(!4(Q30322#0'!>#!$%&'()! ! "P302'&=6'3%0!Sub!

+

A1)0'=)>>)B)

lic Sub Encadrement() "%&2D=P=0)! $&%6(4=&)! &)01%3)! =0)! 1#>)=&I! %0! >P#$$)>>)! #>%&2! Q%06'3%0*! g0)! Q%06'3%0! 2)! 4(Q303'!

6%B

Public Function CalculPerimetre() As Decimal

B)! =0)! $&%6(4=&)! 2#=Q! D=P%0! ='3>32)! >P302'&=6'3%0! Function! #=! >3)=! 4)! subI! )'! D=P%0! $&(632)!J(0(&#>)B)0'!>)!'-$)!&)01%-(*!X3!>)!'-$)!0P)2'!$#2!$&(632(I!>#!Q%06'3%0!)2'!4)!'-$)!:#&3#0'*!

"#!>3J0)!2=31#0')!4(Q303'!>#!Q%06'3%0!/#>6=>V)&3B)'&)!D=3!&)01%3)!=0!&(2=>'#'!4)!'-$)!4(63B#>*!

/%B 313)!$#&!>#!%=!>)2! >3J0) 0!End Sub!%=!End Function!

B)!>#!4(Q303'3%0!)'!>#!4(6>#&#'3%0!%0'!>3)=!)0!B8B)!')B$2I!6)'')!>3J0)!4%3'!8'&)!2=2!4)!6%4)!6%B$%2#0'! >#!$&%6(4=&)!)'! Q303&!$#&! >P302'&=6'3%

2)>%0!>)!

nts

6#2*!!

Argume

V#& )&)$&(2)0'#'3%Private F

X%=1)0'! #$$)>(2!$#&#BW'&)2I! >)2! #&J=B)0'2! 2%0'!4)2!1#&3#E>)2! j#=! 2)02! >#&J)!4=! ')&B)k!D=)! >P%0!6%BB=03D=)! p! >#! $&%6(4=&)*! ")2! #&J=B)0'2! 2)! 4(6>#&)0'! >%&2! 4)! >#! 4(Q303'3%0! 4)! >#! $&%6(4=&)*! ")2!$#&#BW'&)2!2=31)0'!>)2!&WJ>)2!4)!4(6>#&#'3%0!2=31#0')2!v!

g0!B%'!6>(!2$(63Q3D=)!p!>#!4(6>#&#'3%0!4P#&J=B)0'2! ")!0%B!4)!>P#&J=B)0'! X%0!'-$)! A1)0'=)>>)B)0'!2#!1#>)=&!!)\ B$>)!>#!>3J0)!2=31#0')!4(6>#&)!>#!Q%06'3%0!70'<%S30!D=3!6%01)&'3'!=0!0%BE&)!)0'3)&!4#02!2#!

0!E30#3&)!)'!$&)042!=0!#&J=B)0'!4)!'-$)!)0'3)&!v! unction IntToBin(ByVal IntegerNumber As Long) As String

ByRef & ByVal V%=&! 6%B$&)04&)! 6%&&)6')B)0'! >)! '-$)! 4)! $#22#J)! 4P=0! #&J=B)0'I! 3>! Q#='! 6%06)1%3&! >)2!

$&(2)0'#'3%02!4P=0)!1#&3#E>)*!g0)!1#&3#E>)!)2'!=0!&) )B$>#6)B)0'!B(B%3&)!D=3!6%0'3)0'!D=)>D=)!6G%2)*!!#!#=223!=0)!1#>)=&!

Q#3'!2%0!#4&)22)!B(B%3&)I!=0)!#6'3%0!! 2%=G#3'#E>)! %=!

($)04!4)!6)!D=)!>P%0!1)='!%E')03&*!

! 1#&3#E>)*! X3! %0! 2%=G#3')! D=)! >)2! B%43Q36#'3%02! 0)! 2%3)0'! $#2!&($)&6='()2I!%0!$#22)!>P#&J=B)0'!$#&!1#>)=&I!6P)2'opo43&)!)0!6%$3#0'!>#!1#>)=&!4#02!=0)!1#&3#E>)!>%6#>)*!")!6%4)!2=31#0'!B%0'&)!E3)0!>)!$&3063$)!4)2!'-$)2!4)!$#22#J)*!Private Sub TypePassage(ByRef ParReference As Integer, ByVal ParValeur As

X'&36'%!2)02=!3>!2P#J3'!4%06!4P=0)!#4&)22)!B(B%3&)*!/)$)04#0'!p!6G#D=)!302'#0'I!)>>)D=3!)>>)I!)2'!>P30Q%&B#'3%0!D=P%0!='3>32)*!/%BB)!>#!1#&3#E>)!)2'!4)!)0! '%='! $%30'! 4=! 6%4)! B%43Q3)! >#! 1#&3#E>)*! /)! 6%B$%&')B)0'! 0P)2'! $#2! Q%&6(B)0'304(23&#E>)I!'%='!4

X3! %0! 4(23&)! $%=1%3&!B%43Q3)&! >#! 1#>)=&! 4P=0! #&J=B)0'! #=! 2)30! 4P=0)! Q%06'3%0! )'! &($)&6=')&! 6)2!B%43Q36#'3%02! 4#02! >)! 6%4)! #$$)>#0'I! %0! 43'! D=P%0! $#22)! >#! 1#&3#E>)! $#&! &(Q(&)06)I! 6P)2'opo43&)! D=)!>P#&J=B)0'! 6%0'3)0'! >P#4&)22)! 4)! >#

Integer) ParReference = 2 * ParReference ParValeur = 2 * ParValeur End Sub

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+!X3!6)'')!$%&'()!)2'!%B32)I!>#!$&%6(4=&)!2)&#!$=E>3D=)!23!)>>)!)2'!4#02!=0!B%4=>)!2'#04#&4I!$&31()!

23!0%0*!

! ?;

Page 30: Cours VBA débutants.pdf

Public Sub Test() Dim EntierRef As Integer, EntierVal As Integer tierRef = 1 En

EntierVal = 1 TypePassage EntierRef, EntierVal MsgBox "Par référence " & EntierRef & vbCrLf & "Par valeur " & EntierVal End Sub

L'!1%=2!%E'3)04&)e!v!

!/%BB)! 1%=2! >)! 1%-)eI! >#! 1#&3#E>)! $#22()! $#&! &(Q(&)06)! #! E3)0! ('(! B%43Q3()! $#&! >#! $&%6(4=&)!

('(*!>P#='&)I!>)2!1#&3#E>)2!2%0'!$#22()2!$#&!&(Q(&)06)!

2D=P=0)!#4&)22)!0)!$&)04!D=)!D=#'&)!%6')'2*!/)!0P)2'!$#2!$(0#>32#0'!)0!2%3'I!)e!E3)0!6%0263)06)!D=)!1%=2!0)!4)1)e!B%43Q3)&!>#!1#&3#E>)!D=Pp!E%0!)263)0'*!(&#>)I!%0!2=3'!>)2!&WJ>)2!2=31#0')2*!

")2!1#>)=&2!23B$>)2!j0%BE&)2I!6G#f0)2I!4#')2Zk!2%0'!'&#02B32)2!$#&!1#>)=&*!Ei)'2!)'!>)2!'#E>)#=\!2%0'!'&#02B32!$#&!&(Q(&)06)*!

%43Q3)&!=0)!1#>)=&!D=P=0!#&J=B)0'!$#22(!$#&!

TypePassage!#>%&2!D=)!>#!1#&3#E>)!$#22()!$#&!1#>)=&!0)!>P#!$#2!V#&!4(Q#='I!6P)2'opo43&)!23!1%=2!0)!$&(632)e!03!>P=0!03!

#=!0%B!4)!>P)QQ36#63#-'(!$=3

$%=&!$)=!D=)!1%=2!#03W&)!J(0])!B

")2!% F0!='3>32)!$>='m'!4)2!1#&3#E>)2!J>%E#>)2!$%=&!B&(Q(&)06)?*!

Optional /)!B%4

$)='3Q36#')=&!$&(632)!D=)!>P#&J=B)0'!)2'!%$'3%00)>I!6P)2'opo43&)!D=P3>!$)='!8'&)!'&#02B32!6%BB)!3>!

'!%$'3%00)>2*!!

"P#E2)06)!4=!$#&#BW'&)!$)='!8'&)!')2'(!#1)6!>#!Q%06'3%0!72C32230J!23!2%0!'-$)!0P)2'!$#2!=0!'-$)!1#>)=&*!

")2! #&J=B)0'2! %$'3%00)>2! $)=1)0'! #1%3&! =0)! 1#>)=&! $#&! 4(Q#='*! ]#02! 6)! 6#2! 72C32230J!&)01%3)!'%=i%=&2![#>2)*!

")2!4)=\!2-0'#\)2!D=3!2=31)0'!2%0'!(D=31#>)0')2!v!Private Function Arrondir(ByVal Valeur As Single, Optional NombreDeDecimale

!0)!$#2!>P8'&)*!")2!&WJ>)2!2=31#0')2!2P#$$>3D=)0'!v! "%&2D=P=0!#&J=B)0'!)2'!B#&D=(!6%BB)!%$'3%00)>I!'%='!>)2!#&J=B)0'2!D=3!>)!2=31)0'!4#02!>#!4(6>#&#'3%0!4%31)0'!8'&)!B#&D=(2!6%BB)!('#0

")2! #&J=B)0'2! %$'3%00)>2! 0)! $)=1)0'!$#2! 8'&)! ='3>32(2! )0!B8B)! ')B$2!D=)! >)2! '#E>)#=\!4P#&J=B)0'2!jV#&#BK&&#-k!

As Variant) As Single If IsMissing(NombreDeDecimale) Then NombreDeDecimale = 1 Arrondir = Valeur * (10 ^ NombreDeDecimale) Arrondir = Int(Arrondir + 0.49) * (10 ^ -NombreDeDecimale) End Function

O%')e!D=)!$%=&!D=)!6)'')!Q%06'3%0!Q%06'3%00)!6%&&)6')B)0'I!>P#&J=B)0'!O%BE&)])])63B#>)!)2'!4)!'-$)!:#&3#0'!)'!0%0!4)!'-$)!70')J)&*!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!?!L06%&)!D=)!4P#='&)2!#=')=&2!1%=2!43&%0'!)\#6')B)0'!>P301)&2)*!

! U@

Page 31: Cours VBA débutants.pdf

Private tional NombreDeDecimale Function Arrondir(ByVal Valeur As Single, Oper = 1) As Single As Integ

Arrondir = Valeur * (10 ^ NombreDeDecimale) Arrondir = Int(Arrondir + 0.49) * (10 ^ -NombreDeDecimale) End Function

ParamArray 7043D=)!D=)!>P#&J=B)0'!)2'!=0!'#E>)#=!1#&3#0'!4)!$#&#BW'&)*!/)!B%'!6>(!0)!$)='!8'&)!='3>32(!D=)!2=&!

>)!4)&03)&!#&J=B)0'*!/)!B%'!6>(!0P)2'!J=W&)!='3>32(!6#&!3>!$&(2)0')!D=)>D=)2!43QQ36=>'(2!4)!B#03$=>#'3%0I!6#&!3>!&)$&(2)0')!)0!Q#3'!=0!0%BE&)!3>>3B3'(!4P#&J=B)0'2*!V&)0%02!>P)\)B$>)!2=31#0'!v!Private Function Minimum(ParamArray Elements() As Variant) As Variant Dim cmpt As Long If UBound(Elements) > -1 Then 'au moins un argument

For cmpt = LBound(Elements) To UBound(Elements) If IsNumeric(Elements(cmpt)) Then

If Not IsEmpty(Minimum) Then If Minimum > Elements(cmpt) Then Minimum = Elements(cmpt) Else Minimum = Elements(cmpt) End If

End If Next cmpt

End If End Function Public Sub Test() MsgBox Minimum("toto", -1, True, 124, Range("B2"), 25.471) End Sub

/%BB)!0%=2!>)!1%-%02I!23!>#!Q%06'3%0!4(6>#&)!E3)0!=0!#&J=B)0'!4)!'-$)!'#E>)#=I!>P#$$)>!='3>32)!>=3!=0)!>32') >

O%')e!D i%=&2!@*!!4P( (B)0'2*!")!'#E>)#=!('#0'!4)!'-$)!1#&3#0'I!>)2!(>(B)0'2!$)=1)0'!8'&)!4)!0P3B$%&')!D=)>!'-$)*!

=)!>P30436)!4=!$&)B3)&!#&J=B)0'!)2'!'%=X3! 1%=2! 4%00)e! p! >P#&J=B)0'!B#&D=(! V#&#BK&&#-! =0! 0%B! 4)! 1#&3#E>)! Q30322#0'! $#&! +! 4#02! =0)!

Q%06'3%0! 4)! Q)=3>>)! 4)! 6#>6=>I! >P#2232'#0'! 4)! Q%06'3%02! 306&(B)0')&#! #='%B#'3D=)B)0'! 6G#D=)! 0%=1)>!(>(B)0'!v!

!!

! U+

Page 32: Cours VBA débutants.pdf

Arguments nommés ou passage par position

BB%4)! 4)! $#22)&! 4)! 0%BE&)=\!B)0'!$#&6)!D=)!>P%0!2%=G#3')!$#22)&!>)!$&)B3)&!)'!>)!4)&03)&*!

K!T)$>#6)!4%0'!>#!4(Q303'3%0!)2'!4)!>#!Q%&B)!23B$>3Q3()!v!X'&30JI! Q304! K2! X'&30JI! &)$>#6)! K2! X'&30JI! F$'3%0#>! 2'#&'! K2!

00)>! D=3!)0! $#22#0'! >)2! #&J=B)0'2! $#&! $%23'3%0I! 0%=2!

00)>2I!

! $#22)&! >)2! #&J=B)0'2! )0! >)2! 0%BB#0'*!]W2! >%&2I! 3>! 0P-! #! $#2! E)2%30! 4)! &)2$)6')&!)0'2!%$'3%00)>2*!

)2'!4(Q303!$#&!>)!B%4W>)!4)!>#!Q%06'3%0*!K3023!4#02!>#!Q%06'3%0!T)$>#6)I!>)!2'! #QQ)6'()!p!=&&3%02!4%06!

D=)!#=!$&(6(4)0'!2%=2!>#!Q%&B)!v!)I!6%B$#&)!vR!:E<)\'/%B$#&)k!

ppel

!/%BB)! 0%=2! 1)0%02! 4)! >)! 1%3&I! =0)! $&%6(4=&)! $)='! #1%3&! =0! J&#04! 0%BE&)! 4P#&J=B)0'2*!O%&B#>)B)0'!>)2!#&J=B)0'2!2%0'!$#22(2!$#&!$%23'3%0I!6P)2'opo43&)!4#02!>P%&4&)!%x!3>2!#$$#&#322)0'!4#02!

)$)04#0'I! 6)! 0P)2'! $#2! '%=i%=&2! 6%>#! 4(6>#&#'3%0! 4)! >#! $&%6(4=&)*! /#&J= '2!Q#6=>'#'3Q2!134)2!=03D=)B)0

7B#J30%02!=0!#$$)>!p!>#!Q%06'3%0!:Slacej)\$&)223%0! K2!Function Rep

"%0JI!F$'3%0#>!6%=0'!K2!"%0JI!F$'3%0#>!6%B$#&)!K2!:E/%B$#&)C)'G%4k!As String!'%3&)2! )'! >)! 4)&03)&! #&J=B)0'! %$'3%O%=2! 2%=G#3'%02! $#22)&! >)2! '&%32! #&J=B)0'2! %E>3J#

! 6%B$#&#32%0*!V%=&! &(#>32)&! 6)'! #$$)>!$&(632)! >)! '-$)!4))1%02!(6&3&)!v!4C#/G#f0)RT)$>#6)jC#/G#f0)IrIrIrurIII:E<)\'/%B$#&)k!/P)2'opo43&)!D=)!0%=2!$#22%02!#='#0'!4)!13&J=>)!D=)!4P#&J=B)0'2*!V%=&!4)=\!#&J=B)0'2!%$'3%

6P)2'!)06%&)!#66)$'#E>)I!B#32!2P3>!-!)0!#!+@I!6P)2'!3>>323E>)*!F0! $)='! #>%&2

>P%&4&)I!03!4)!$#22)&!4)2!)B$>#6)B)0'2!134)2!$%=&!>)2!#&J=B")!0%B!4)!>P#&J=B)0'!

$&)B3)&! #&J=B)0'! 2P#$$)>>)! P)\$&)223%0PI! >)!4)=\3WB)! PQ304P! )'! #3023!4)! 2=3')*!"#!1#>)=&! ))0'!p!>P#34)!4)!>P%$(&#')=&!$#&'36=>3)&!vR!D=3!0P)2'!='3>32(!D=)!4#02!6)!6#2*!O%=2!$%>P#&J=B

(6&3&)!=0!#$$)>!34)0'3C#/G#f0)RT)$>#6)j)\$&)223%0!vR!C#/G#f0

Instructions et règles d'a $)>)&!=0)!Q%06'3%0!%=!=0)!$&%6(4=&)!4)$=32!=0!#='&)!$%30'!4=!6%4)I!3>!Q#='!4P#E%&4!)'!#1#0'!

#&J=B)0'2! )0!

2'!#$$)>()I!%0!'#$)!2%0!0%B!2=313!4)!>#!>32')!4)2!#&J=B)0'2!2($#&(2!$#&!

! %0! '#$)! 2%0! 0%B! 2=313! 4)! >#! >32')! 4)2! #&J=B)0'2I! )0'&)!

&%6(4=&)! %=! =0)! Q%06'3%0! 4%0'! %0! 0)!=&*!]W2!>%&2!D=P%0!='3>32)!/#>>I!>#!>32')!4)2!#&J=B)0'2!4%3'!8'&)!

!1%-%02!=0!)\)B$>)!63o#$&W2!v! Integer)

V%=&!#$'%='!D=)!2#!$%&'()! >)!$)&B)'')I!6P)2'opo43&)!D=P)>>)!2%3'!1323E>)!4)$=32! >)!$%30'!4P#$$)>*!K='&)B)0'!43'I!1%=2!0)!$%=1)e!$#2!#$$)>)&!=0)!Q%06'3%0!4(6>#&()!Private!4#02!=0!Q%&B=>#3&)!p!$#&'3&!4P=0)!$&%6(4=&)!4P=0!B%4=>)!2'#04#&4*!!

"P#$$)>! 6>#223D=)! 6%0232')! p! (6&3&)! >)! 0%B! 4)! >#! $&%6(4=&)! 2=313! 4)! >#! >32')! 4)2!31#0'!>)2!&WJ>)2!2=31#0')2!v!2=

X3!=0)!$&%6(4=&)!)4)2!13&J=>)2*!

X3! =0)! Q%06'3%0! )2'! #$$)>()$#&)0'GW2)2I!2($#&(2!$#&!4)2!13&J=>)2*!

F0! ='3>32)! $#&Q%32! >P302'&=6'3%0! /#>>! $%=&! #$$)>)&! =0)! $2%=G#3')!$#2!&(6=$(&)&!>#!1#>)=&!4)!&)'%B32)!)0'&)!$#&)0'GW2)*!O%=2Private Sub ExempleSub(Arg1 As

x Arg1 MsgBoEnd Sub Private Function ExempleFunction(Arg1 As Integer) As String ExempleFunction = CStr(Arg1) End Function Public Sub TestAppel() 'appel classique ExempleSub 12 'appel avec call Call ExempleSub(12) 'appel de fonction MsgBox ExempleFunction(12) 'valeur de retour ignorée Call ExempleFunction(12) End Sub

! U?

Page 33: Cours VBA débutants.pdf

Valeur retournée "#!43QQ(&)06)!)0'&)!=0)!Q%06'3%0!)'!=0)!$&%6(4=&)!&)$%2)!2=&! >)! Q#3'!D=)! >#! Q%06'3%0!&)01%3)!=0)!

&3#E>)! 3B$>363')! D=3! )2'! >)! 0%B!4)! >#! Q%06'3%0*!%06'3%0!2%3'!v!

1#>)=&! '-$()*! V%=&! 4(Q303&! >#! 1#>)=&I! %0! ='3>32)! =0)! 1#!QK='&)B)0'!43'I!1%=2!4)1&)e!#1%3&!D=)>D=)!$#&'!4#02!>#

NomDeLaFonction = Valeur F=!

Set NomDeLaFonction = Valeur V#&!)\)B$>)v!

ivate Function Conv2Fahrenheit(Pr ByVal TCelsius As Single) As Single Conv2Fahrenheit = 1.8 * TCelsius + 32 End Function Private Function NumericRange(Feuille As Worksheet) As Range Set NumericRange = Feuille.Cells.SpecialCells(xlCellTypeConstants, xlNumbers) End Function Sub AppelFonction() Dim PlageNumerique As Range, TempC As Single, TempF As Single TempC = 25 TempF = Conv2Fahrenheit(TempC) Set PlageNumerique = NumericRange(ActiveSheet) PlageNumerique.Value = TempF End Sub

")2!Q%06'3%02!$)=1)0'!(134)BB)0'!#1%3&!$>=23)=&2!$%30'2!4)!2%&'3)2I!>%J3D=)2!%=!Q%&6(2!p!>P#34)!4)!>P302'&=6'3%0!rL\3'r*!")2!&WJ>)2!4)!>#!E%00)!$&%J&#BB#'3%0!1)=>)0'!D=P3>!-!#3'!=0)!#QQ)6'#'3%0!4)!1#>)=&!p!6G#D=)!$%30'!4)!2%&'3)*!Private Function RenvoieSigne(ByVal Valeur As Single) As Integer Select Case Valeur Case Is < 0 RenvoieSigne = -1 Case 0 'ce cas est implicitement vrai RenvoieSigne = 0 Case Is > 0 RenvoieSigne = 1 End Select End Function

/)'')! Q%06'3%0! p! '&%32! $%30'2! 4)! 2%&'3)*!<&#3')&! >)! 6#2! @! 0P)2'! ='3>)! D=P)0! ')&B)!4)! >323E3>3'(! )'! 4)!E%00)!$&%J&#BB#'3%0!$=32D=)!4)!Q#3'!23!1#>)=&!1#='!@I!>#!Q%06'3%0!T)01%3)X3J0)!1#=4&#!@!23!0%=2!0)!>=3! #QQ)6'%02! $#2! )\$>363')B)0'! =0)! 1#>)=&! 43QQ(&)0')! j@! ('#0'! >#! 1#>)=&! 4P303'3#>32#'3%0! 4)! >#! 1#&3#E>)!T)01%3)X3J0)k*!

! UU

Page 34: Cours VBA débutants.pdf

Private Function ByRef MaPlage As Range) As Boolean EstVide(

aCellule As Ra Dim M nge

For Each MaCellule In MaPlage.Cells If Not IsEmpty(MaCellule) Then EstVide = False 'implicitement vrai

Exit Function End If Next EstVide = True End Function

/)'')!Q%06'3%0!p!4)=\!$%30'2!4)!2%&'3)!j=0!$%30'!Q%&6(k*!"p!)06%&)I!>#!>3J0)!L2':34)!R![#>2)!0P)2'!='3>)! D=)! $%=&! 4)2! &#32%02! 4)! E%00)! $&%J&#BB#'3%0! $=32D=)! L2':34)! 1#='! [#>2)! 2#=Q! #QQ)6'#'3%0!)\$>363')!4)!>#!1#>)=&!<&=)*!

! U,

Page 35: Cours VBA débutants.pdf

Les objets g0!%Ei)'!)2'!=0!)02)BE>)!6%4)!w!4%00()2!2)!6%B$%&'#0'!6%BB)!=0)!)0'3'(!=03D=)!)'!6%G(&)0')*!X3!

:SK!0P)2'!$#2!=0!>#0J#J)!%Ei)'I!>)!B%4W>)!L\6)>!)0!)2'!)0'3W&)B)0'!6%B$%2(I!3>!1#!4%06!Q#>>%3&!0%=2!Q#B3>3#&32)&!#1)6!>)=&2!B#03$=>#'3%02*!

g0!%Ei)'! )\$%2)! =0)! 30')&Q#6)! 6%02'3'=()! 4)!B('G%4)2I! 4)! $&%$&3('(2! )'! 4P(1W0)B)0'2I! '%='! 6)>#!6%B$%2)!>)2!B)BE&)2!4)!>P%Ei)'*!F=E>3%02!$%=&!>P302'#0'!>)2!(1W0)B)0'2*!

g0! %Ei)'! $%22W4)! 4%06! 4)2! $&%$&3('(2! 4(Q30322#0'! 2%0! ('#'! )'! 4)2! Q%06'3%00#>3'(2! D=3! 2%0'! 2)2!B('G%4)2*!7>!$%22W4)!$#&!#3>>)=&2!=0!'-$)!322=!4)!>#!6>#22)!D=3!>)!4(Q303'*!g0)!6>#22)!)2'!>P)02)BE>)!4=!6%4)!D=3!4(Q303'!=0!'-$)!4P%Ei)'*!V%=&!Q#3&)!=0)!#0#>%J3)!6>#223D=)I!>#!6>#22)!)2'!>#!&)6)'')!4)!6=3230)!)'!>P%Ei)'!>)!$>#'*!"P%Ei)'!('#0'!>P302'#06)!4P=0)!6>#22)I!3>!4%3'!8'&)!302'#063(I!B#32!6)>#!0P)2'!$#2!Q%&6(B)0'!4Ç! p! 1%'&)! 6%4)*! T)1)0%02o)0! p! L\6)>! :SK*! g0! 6)&'#30! 0%BE&)! 4P%Ei)'! D=)! 1%=2! #>>)e! B#03$=>)&!2)&%0'!43&)6')B)0'!%=!3B$>363')B)0'!302'#063(2!j6&((2k!$#&!>P#$$>36#'3%0!L\6)>*!

"%&2D=P%0!4%3'!302'#063)&!=0!%Ei)'!$#&!>)!6%4)I!%0!='3>32)!>)!B%'!6>(!rNewr!%=!4#02!6)&'#302!6#2!=0)!B('G%4)!Q%=&03'!$#&!=0!#='&)!%Ei)'*!!

O%=2!&)13)04&%02!$>=2!>%30!2=&!>#!6%06)$'3%0!4)2!%Ei)'2I!6%06)0'&%02!0%=2!$%=&!>P302'#0'!2=&!>)=&!B#03$=>#'3%0*!V%=&!$%=1%3&!='3>32)&!=0!%Ei)'I!1%=2!4)1)e!#66(4)&!2%3'!p!>P%Ei)'!43&)6')B)0'I!2%3'!p!=0)!1#&3#E>)!-!Q#32#0'!&(Q(&)06)*!K!>#!43QQ(&)06)!4)2!1#>)=&2I!%0!4%3'!='3>32)&!>)!B%'!6>(!rSetr!$%=&!#QQ)6')&!=0)!1#&3#E>)!%Ei)'*!O%')e!D=)!4#02!6)&'#302I!6#2!>)!B%B)0'!4)!>P#QQ)6'#'3%0!$)='!#1%3&!2%0!3B$%&'#06)*!

V%=&! ='3>32)&! =0! B)BE&)! 4)! >P%Ei)'! %0! ='3>32)! >P%$(&#')=&! r*r! jV%30'k*! "#! 0#'=&)! 4=! B)BE&)! 1#!4(Q303&! >#! 2-0'#\)! p! ='3>32)&*! ")2! $&%$&3('(2! #'')04)0'! )'w%=! &)01%3)0'! 4)2! 1#>)=&2I! >)2! B('G%4)2!#'')04)0'! (1)0'=)>>)B)0'! 4)2! #&J=B)0'2! )'! &)01%3)0'! (1)0'=)>>)B)0'! =0)! 1#>)=&*! V%=&! Q#3&)! =0)!#0#>%J3)I! >)2! $&%$&3('(2! 2)! '&#3')0'! 6%BB)! 4)2! 1#&3#E>)2! )'! >)2! B('G%4)2! 6%BB)! 4)2! #$$)>2! 4)!$&%6(4=&)2!w!Q%06'3%02*!

/%BB)!=0!$)'3'! )\)B$>)! )2'! 2%=1)0'!$>=2! )QQ36#6)!D=P=0! >%0J!4326%=&2I! &)J#&4%02! >P)\)B$>)!4)!6%4)!6%BB)0'(!63o4)22%=2*!Sub DemoObjet() Dim Classeur As Workbook Set Classeur = ActiveWorkbook 'valorise la propriété Date1904 du classeur ActiveWorkbook.Date1904 = True 'lit la même propriété à l'aide de la variable MsgBox Classeur.Date1904 'utilise une méthode de la variable objet Classeur.Protect Password:="MotDePasse" 'utilise une méthode de l'instance ActiveWorkbook.Unprotect "MotDePasse" 'une propriété peut être un objet 'lit une propriété d'un objet contenu par l'objet Dim NomFeuille1 As String NomFeuille1 = Classeur.Worksheets(1).Name 'utilise une méthode d'un objet contenu ActiveWorkbook.ActiveSheet.Delete 'tend un filochon à bourricot Workbooks.Add MsgBox ActiveWorkbook.Sheets.Count & vbNewLine & Classeur.Sheets.Count End Sub

O%')e!D=)!>)2!1#&3#E>)2!%Ei)'!2)!4(6>#&)0'!6%BB)!0P3B$%&')!D=)>>)!1#&3#E>)*!T)$&)0%02!D=)>D=)2!=02!4)2!$%30'2!D=)!0%=2!#1%02!1=2! 3>>=2'&(!$#&! 6)!6%4)*!<%='!4P#E%&4I! 23! >)!

'-$)! 4)! >P%Ei)'! )2'! r`%&aE%%ar! j6>#22)=&k! 3>! 0P)\32')! $#2! 4P302'#06)! `%&aE%%a*! ])! Q#3'I!K6'31)`%&aE%%a! )2'! =0)! &(Q(&)06)! 6&(()! $#&! L\6)>! 4=! 6>#22)=&! #6'3Q*! :%=2! 0%')&)e! #=223! D=)! 0%=2!$%=1%02!#J3&!3043QQ(&)BB)0'!2=&!>P302'#06)!%=!2=&!>#!1#&3#E>)!Q#32#0'!&(Q(&)06)!p!6)>>)o63*!

! UN

François Halconruy
François Halconruy
François Halconruy
François Halconruy
François Halconruy
François Halconruy
Page 36: Cours VBA débutants.pdf

O%=2! 1%-%02! #=223! D=P=0! %Ei)'! $)='! #1%3&! 6%BB)!B)BE&)2! 4)2! $&%$&3('(2! ('#0'! 4)2! %Ei)'2I! D=3!)=\oB !$&%$&3('(2!('#0'!4)2!%Ei)'2!)'!#3023!4)!2=3')*!F0!#$$)>>)!6)>#!=0!B%4W>)!%Ei)

)#=! 6>#22)=&*! /)! 0%=1)#=! 6>#22)=&! 4)13)0'! >)!)>! Q#3'! &(Q(&)06)! p! 6)! 0%=1)#=! 6>#22)=&! 4#02! >P%Ei)'!

&!#6'3QI!3>!0P-!#

8B)2!$)=1)0'!#1%3&!4)23(&#&6G3D=)!)'!6P)2'!>)!Q%'!G 04)B)0'!4=!B%4W>)!%Ei)'!4PL\6)>*!

")2!$&%$&3('(2!%0'!'%=i%=&2!=0!'-$)I!%Ei)'!%=!1#>)=&I!>)2!#&J=B)0'2!)'!>)2!1#>)=&2!&)01%-()2!$#&!>)2!B('G%4)2!(J#>)B)0'*!K='&)B)0'!43'I!3>!0P)\32')!$#2!4)!J&#04)=&2!2#02!'-$)*!

hP#3!#i%='(!p! >#! Q30!4=!6%4)!4)=\! >3J0)2!4)!6%4)!$&(2)0'#0'!=0!$)'3'!$3WJ)*! h=2D=)! >#I! >#!1#&3#E>)!/>#22)=&! )'! >P%Ei)'! K6'31)`%&aE%%a! Q#32#3'! &(Q(&)06)! p! >#! B8B)! 6G%2)*! "P#$$)>! 4)! >#! B('G%4)!`%&aE%%a2*K44! 4)B#04)! p! L\6)>! 4)! 6&()&! =0! 0%=16>#22)=&! #6'3Q! $#&! 4(Q#='I! 4W2! >%&2I! L\6K6'31)`%&aE%%a*!V#&!6%0'&)!0%'&)!1#&3#E>)!6>#22)=&!Q#3'!'%=i%=&2!&(Q(&)06)!p!>P#063)0!6>#22)=

!4%06!$>=2!(D=31#>)06)!)0'&)!>#!1#&3#E>)!)'!>P%Ei)'!K6'31)`%&aE%%a*!T)2'%02!)0!>p!$%=&!>P302'#0'I!0%=2!&)13)04&%02!E)#=6%=$!$>=2!)0!4('#3>2!2=&!>)2!%Ei)'2!4#02!>#!2=3')!

4)!6)!6%=&2*!

! U.

Page 37: Cours VBA débutants.pdf

Les tableaux F0! #$$)>>)! '#E>)#=I! =0! )02)BE>)! 4P(>(B)0'2I! 304)\(2! 2(D=)0'3)>>)B)0'I! #-#0'! >)!B8B)! '-$)! 4)!

4%00()2*! g0! '#E>)#=! $)='! $%22(4)&! i=2D=Pp! .@! 43B)023%02! )0! :32=#>! S#236*! ")2! 4(6>#&#'3%02! 4)2!'#E>)#=\!2=31)0'!>)2!&WJ>)2!2=31#0')2!v!

'3D=)2! 4%31)0'! 4(Q303&! >)=&2! 0%BE&)2! 4P(>(B)0'2! 4#02! 6G#D=)!43B)023%0! >%&2! 4)!>)=&

")2! '#E>)#=\! 2'#!4(6>#&#'3%0!v!

Dim TabEntier(15) As Integer Dim TabString(10, 10) As String

L0!:SKI!>)2!'#E>)#=\!$)=1)0'!#1%3&!$#&!4(Q#='!6%BB)!$>=2!$)'3'!30436)I!@!%=!+*!!$>=2!

$)'3'!30436)!4)2!'#E>)#=\!4%0'!>#!>3B3')!30Q(&3)=&)!0P)2'!$#2!)\$>363')B)0'!4(Q303)!)2'!@*!K='&)B)0'!43'!v!Opt

F0!4(Q303'!6)>#!)0!$&(632#0'!>PF$'3%0!S#2)!)0!'8')!4)!B%4=>)*!F$'3%0!S#2)!@!1)='!43&)!D=)!>)

ion Explicit Option Base 1 Private TabNom(10) As String

X3J03Q3)!D=)!<#EO%B!1#!4)!+!p!+@!#>%&2!D=)!23!>P302'&=6'3%0!F$'3%0!S#2)!1#>#3'!@!%=!23!)>>)!('#3'!!;*!

B3')2!4)!6G#D=)!43B)023%0!p!>P#34)!4)!>#!6>#=2)!r<%r*!

Boolean

%B32)I!3>!3&#3'!4)!@!p:SK!$)&B)'!>#!4(6>#&#'3%0!)\$>363')!4)2!>3

V#&!)\)B$>)!v!Dim TabBool(1 To 10) As im TabSingle(5 To 15, 3D To 8, 2 To 7) As Single <%=2!>)2!(>(B)0'2!4P=0!'#E>)#=!2%0'!4)!B8B)!'-$)*!/)$)04#0'!6%BB)!=0!'#E>)#=!$)='!8'&)!4)!'-$)!

As Single

:#&3#0'I!=0!'#E>)#=!$)='!6%0')03&!'%='!'-$)!4)!4%00()2I!-!6%B$&32!4)2!%Ei)'2!%=!4P#='&)2!'#E>)#=\*!")2!'#E>)#=\!4-0#B3D=)2!2)!4(6>#&)0'!2#02!$&(632)&!>)2!43B)023%02!B#32!#1)6!>)2!$#&)0'GW2)2*!

Dim TabDynamique() F0! ='3>32)! >P302'&=6'3%0! T)]3B! $%=&! B%43Q3)&! >#! '#3>>)! 4P=0! '#E>)#=! 4-0#B3D=)I! D=)! 6)! 2%3'! >)!

0%BE&)!4P(>(B)0'2!%=!>)!0%BE&)!4)!43B)023%02*!!ReDim TabDynamique(1 To 10)

o 5) ReDim TabDynamique(1 To 5, 1 T")!&)43B)023%00)B)0'!)0J)04&)!>#!$)&')!4)2!4%00()2!6%0')0=)2*!V%=&!6%02)&1)&!2)2!4%00()2I!%0!

'!6>(!V&)2)&1)*!As Single

='3>32)!>)!B%Dim TabDynamique() ReDim TabDynamique(1 To 5, 1 To 5) TabDynamique(1, 1) = 2.54 ReDim Preserve TabDynamique(1 To 5, 1 To 6) MsgBox TabDynamique(1, 1)

"P='3>32#'3%0!4=!B%'!6>(!V&)2)&1)!Q3J)!>)!0%BE&)!4)!43B)023%02!)'!>#!>3B3')!30Q(&3)=&)!4)!6G#6=0)!4P)0'&)!)>>)I!#='&)B)0'!43'I!>)2!'&%32!4)&03W&)2!>3J0)2!2=31#0')2!4(6>)06G)&#3)0'!=0)!)&&)=&!v!ReDim TabDynamique(1 To 5, 1 To 5) ReDim Preserve TabDynamique(1 To 5, 1 To 6) ReDim Preserve TabDynamique(1 To 6, 1 To 5) ReDim Preserve TabDynamique(1 To 5, 2 To 5) ReDim Preserve TabDynamique(1 To 6)

F0!>3'!%=!(6&3'!4#02!=0!(>(B)0'!4=!'#E>)#=!)0!0%BB#0'!>)!'#E>)#=!#1)6!>)j2k!30436)j2k!4)!>#!6#2)!6%BB)!B%0'&(!4#02!>P)\)B$>)!$&(6(4)0'*!<%='!#$$)>!4P=0!'#E>)#=!#1)6!=0!30436)!)0!4)G%&2!4)!>#!$>#J)!4(6>)06G)&#!=0)!)&&)=&!&(6=$(&#E>)*!!

! U5

Page 38: Cours VBA débutants.pdf

Instructions et fonctions spécifiques "P )QQ#6)&!=0! '#E>)#=*!]#02! >)!6#2!4)2! '#E>)#=\!Q3\)2I! >)2!1#>)=&2!2%0'!

&(30

)'! 4P303'3#>32)&! =0)! 1#&3#E>)! 4)! '-$)! :#&3#0'! 6%BB)! =0! '#E>)#=! )0! >=3!)0'2!4=! '#E>)#=*!"#! >3B3')!)2'! Q3\()!$#&! >#!1#>)=&!4PF$'3%0!S#2)I!2#=Q!23!

!VBA.Array*!]#02!6)!6#2I!>P30436)!4)!>#!>3B3')!E#22)!2)&#!Q%&6(!p!@*!F0!%E'3)0'!0)>!#1)6!6)'')!Q%06'3%0*!

4)!4(')6')&!>)2!>3B3')2!4)2!'#E>)#=\I!LBound!)'!Ubound*!

As Long!3Q!4)!>#!43B)023%0!&)! 43B)023%0! )2'!

302'&=6'3%0!Erase!$)&B)'!4P3'3#>32()2! B#32! >)! '#E>)#=! J#&4)! >)2! 43B)023%02! D=3! 2%0'! 4(Q303)2I! 4#02! >)! 6#2! 4)2! '#E>)#=\!

4-0#B3D=)2I!>)!'#E>)#=!)2'!&(303'3#>32(!j$)&')!4)2!1#>)=&2!)'!4)2!43B)023%02k*!"#!0%'#'3%0!)2'!v!Erase!Tableau!"#! Q%06'3%0!Array! $)&B

22#0'!43&)6')B)0'!4)2!(>(B$#1%=2!='3>32)e!>#!2-0'#\)Q%&6(B)0'!=0!'#E>)#=!=0343B)023%0

7>!)\32')!4)=\!Q%06'3%02!$)&B)''#0'!])!>#!Q%&B)!v!

As Long LBound(arrayname!}, dimension As Integer~)(arrayname!}, dimension As Integer~)UBound

Fx!arrayname!)2'!>)!0%B!4)!>#!1#&3#E>)!'#E>)#=!)'!dimension!>)!0=B(&%!Q#6=>'#'3W4%0'! %0! 6G)&6G)! >)2! >3B3')2*! "%&2D=)! 43B)023%0! )2'! %B32I! >#! 1#>)=&! 4)! >#! $&)B

&)01%-()*!Option Base 0

u() Public Sub TestTablea

s VariDim TabVar1 A ant TabVar1 = Array(1, 2, 3, 4, 5) Debug.Print "limite inf " & LBound(T

ar1) abVar1) & vbNewLine & "limite sup "

& UBound(TabVte in 'limi

'limitf 0

e sup 4 Erase TabVar1 ReDim TabVar1(0 To 2, 1 To 5) Debug.Print "limite inf dimension 2 " & LBound(TabVar1, 2) 'limite inf dimension 2 1 End Sub

! U9

Page 39: Cours VBA débutants.pdf

Les blocs "P302'&=6'3%0!With…End With!)2'!>P302'&=6'3%0!4)!E>%6!:32=#>!S#236*!"P302'&=6'3%0!4)!E>%6!$)&B)'!

4)! Q#3&)! &(Q(&)06)! p! =0! %Ei)'! =0)! 2)=>)! Q%32! $%=&! '%='! >)! E>%6! 4)! >3J0)! 4)! 6%4)2! D=P3>! 6%0'3)0'*!/)63!$)&B)'! =0)! #=JB)0'#'3%0! 4)! 13')22)! 4=! 6%4)! $=32D=)! >#! &(Q(&)06)! 0P)2'! &(2%>=)! D=P=0)! Q%32! )'! =0)!B)3>>)=&)!>323E3>3'(*!V#&!)\)B$>)!v!Dim Valeur As Variant With Range("B2") .Font.ColorIndex = 7 .Interior.ColorIndex = 5 Valeur = .Value .BorderAround ColorIndex:=3, Weight:=xlThick .FormulaLocal = "=Somme(A1:A10)" nd With E7>!)2'!$%223E>)!4P3BE&3D=)&!>)2!E>%62!`3'G!4#02!>)!2)02!4=!B%4W>)!G

th Workbooks("Classeur1").Worksheets("Feuil1").Cells(2, 2) 3(&#&6G3D=)!v!

Wi .FormulaLocal = "=Somme(A1:A10)" With .Font .Name = "Arial" .Bold = True .Size = 8 End With With .Interior .ColorIndex = 5 .Patte End With

rn = xlPatternCrissCross End With

! U;

Page 40: Cours VBA débutants.pdf

Structure décisionnelle 6323%00)>>)! >#!

6%4)!p!

ructures compactes

:SK!='3>32)! $>=23)=&2! Q%&B)2!4)! 2'&=6'=&)2! 4(6323%00)>>)2*!F0! #$$)>>)! 2'&=6'=&)! 4(6%02'&=6'3%0!4)!6%4)!$)&B)''#0'!4)! ')2')&!=0)!%=!$>=23)=&2! )\$&)223%02!#Q30!4)!4(')&B30)&! >)!)\(6=')&*!

Les st")2!2'&=6'=&)2

!6%B$#6')2!2%0'!4)2!Q%06'3%02!:SK!&)'%=&0#0'!=0)!1#>)=&!)0!Q%06'3%0!4P=0!')2'*!

Immediate If IIf ])!>#!Q%&B)!IIf(expr, truepart, falsepart)!Fx!'&=)$#&'!)'!Q#>2)$#&'!2%0'!4)2!1#>)=&2!%=!4)2!)\$&)223%02!&)01%-()2*!V#&!)\)B$>)!v!

Private Function IsNothing(ByRef Objet As Object) As Boolean IsNothing = IIf(Objet Is Nothing, True, False)

nction End Fu7>!)2'!$%223E>)!4P3BE&3D=)&!6)!'-$)!4)!2'&=6'=&)I!E3)0!D=)!>#!>323E3>3'(!)0!$É'322)!&#$34)B

3BE&36#'3%0!$)='!8'&)!G3(&#&6G3D=)!%=!304($)04#0')!v!)0'*!/)'')!

iérarchique 'imbrication hPrivate Function Signe(ByVal Valeur As Double) As Integer Signe = IIf(Valeur > 0, 1, IIf(Valeur < 0, -1, 0)) End Function 'imbrication indépendante Pri leur2 As Variant) vate Function Max2(ByVal Valeur1 As Variant, ByVal VaAs Variant Max2 = IIf(IIf(IsNumeric(Valeur1), Valeur1, Empty) < IIf(IsNumeric(Valeur2), Valeur2, Empty), Valeur2, Valeur1) End Function

K'')0'3%0I!:32=#>!S#236!(1#>=)!'%=i%=&2!'%=')2!>)2!)\$&)223%02!4)!>#!2'&=6'=)2'!$#2!&)01%-()*!X3!6)>>)o63!6%0'3)0'!=0)!)&&)=&I!)>>)!2)!$&%4=3&#!B8B)!23!>P)\$&)223%0!0)!4)1&#3'!$#2!

&)!B8B)!>#!$#&'3)!D=3!

O%'G30J! 6#&!!=0)!)&&)=&!B8B)!23!6)'')!$#&'3)!4)!>P)\$&)223%0!0)!4%3'!$#2!8'&)!(1#>=()*!

0P8'&)! &)01%-()*!]#02! >P)\)B$>)! 2=31#0'I! >#! Q%06'3%0! >W1)&#! =0)! )&&)=&! 23! >P#&J=B)0'! 1#='!O%'G30J*:#>=)!)2'Private Function IIFBug(ByVal Arg1 As Range) As Integer IIFBug = IIf(Arg1 Is Nothing, 0, Arg1.Value) End Function

Choose T)01%3)!=0)!1#>)=&!4P=0)!>32')!4)!6G%3\!)0!Q%06'3%0!4)!>P304)\!$#22(!)0!$&)B3)&!#&J=B)0'*!])!>#!

rIndex(ByVal Index As Integer) As String

Q%&B)!v!Choose(Index, Choix , Choix , …., Choix ) 1 2 n

Private Function EqvColo EqvColorIndex = Choose(Index, "noir", "blanc", "rouge", "vert", "bleu", "jaune") End Function

! ,@

Page 41: Cours VBA débutants.pdf

704)\!4%3'!Q%&6(B)0'!8'&)!6%B$&32!)0'&)!+!)'!>)!0%BE&)!4)!6G%3\!4)!>#!>32')I!230%0!/G%%2)!&)01)&&#!

ByVal Index As Integer) As String >#!1#>)=&!O=>>*!Private Function EqvColorIndex( Dim Reponse As Variant Reponse = Choose(Index, "noir", "blanc", "rouge", "vert", "bleu", "jaune") EqvColorIndex = IIf(IsNull(Reponse), "index en dehors des limites", Reponse) End Function Private Sub test2() MsgBox EqvColorIndex(7) End Sub

704)\!)2'!=0!0%BE&)!4(63B#>I! 3>!)2'!#&&%043!#1#0'! >P(1X3! #>=#'3%0I!4#02!0%'&)!)\)B$>)!$&(6(4)0'I!1/%>%&704)\j?*9k!&)01)&&#!r&%=J)r*!!C2JS%\!LD

K'')0'3%0I!>p!)06%&)!'%=2!>)2!6G%3\!2)&%0'!(1#>=(2*!"P)\)B$>)!2=31#0'!#QQ36G)&#!>#!>32')!4)2!6%=>)=&2!4#02!4)2!E%f')2!4)!43#>%J=)!v!Private Sub EqvColorIndex(ByVal Index As Integer) Choose Index, MsgBox("noir"), MsgBox("blanc"), MsgBox("rouge"), MsgBox("vert"), MsgBox("bleu"), MsgBox("jaune") End Function

Switch /)'')!Q%06'3%0!&)01%3)!=0)!1#>)=&!%=!=0)!)\$&)223%0!Q%06'3%0!4)!>P)\$&)223%0!D=3!>=3!)2'!#22%63()!

4#02!=0)!>32')!4P)\$&)223%0*!F0!>#!&)06%0'&)!&#&)B)0'!6#&!)>>)!)2'!#22)e!2%=1)0'!B#>!6%B$&32)*!

%0! +! p! (1#>=)&I! )\$&)223%0! &)01%-()! 23! )\$&)223%0! +! )2'! 1&#3I! )\$&)223%0! ?! p!(1#>=)&I!)\$&)223%0!&)01%-()!23!)\$&)223%0!?!)2'!1&#3I!)'6Zk!

$>)!4P(1#>=#'3%0!4)!23J0)!23B3>#3&)!p!>#!Q%06'3%0!(6&3')!#1)6!4)2!77Q!3Private Function Signe2(ByVal Valeur As Double) As Integer

X#!Q%&B)!J(0(&3D=)!)2'!v!

Switch(expr-1, value-1[, expr-2, value-2 … [, expr-n,value-n]]) 43'!v!%=!#='&)B)0'!

YX 3'6Gj)\$&)223

/ BB)0q%02!$#&!=0!)\)B$>)!23B!v!

%BE&3D=(2

Signe2 = Switch(Valeur < 0, -1, Valeur = 0, 0, Valeur > 0, 1)

unction End F]#02!6)!6#2I!>#!Q%06'3%0!1#!(1#>=)&!>)2!)\$&)223%02!4)!>#!J#=6G)!1)&2!>#!4&%3')!)'!&)01%-)&!>#!1#>)=&!

2'!#!

W&)2!)\$&)223%02!$)=1)0'!8'&)!1&#3)2!23!

Valeur As Double) As Integer

#22%63()!4W2!>%&2!D=P=0)!4)2!)\$&)223%02!)2'!1&#3)*!"P%&4&)!4P(1#>=#'3%0!#!2%0!3B$%&'#06)!$=32D=)!6P)>#!$&)B3W&)!)\$&)223%0!1&#3)!D=3!4(Q303&#! >#!1#>)=&! &)01%-()*!K3023! >#! Q%06'3%0!2=31#0')! &)01)&&#3'! >B8B)!6G%2)!D=)!>#!$&(6(4)0')!D=#04!E3)0!B8B)!>)2!4)=\!4)&03:#>)=&!1#='!@!v!Private Function Signe2(ByVal Signe2 = Switch(Valeur < 0, -1, Valeur =

ion 0, 0, Valeur >= 0, 1)

End Funct!!XY3'6G!&)01)&&#!O=>>!23!#=6=0)!)\$&)223%0!0P)2'!1&#3)I!$#&!)\)B$>)!v!

Public Function SousType1(ByVal Valeur As Variant) As String im Reponse D As Variant Reponse = Switch(IsArray(Valeur), "Tableau", IsEmpty(Valeur), "Vide", IsDate(Valeur), "Date", IsNumeric(Valeur), "Nombre") SousType1 = IIf(IsNull(Reponse), "Chaîne", Reponse) End Function

! ,+

Page 42: Cours VBA débutants.pdf

7>!)2'!$%223E>)!4P3BE&3D=)&!>)2!Q%06'3%02!XY3'6G!v!Public Function SousType1(ByVal Valeur As Variant) As String Dim Reponse As Variant Reponse = Switch(IsArray(Valeur), "Tableau", IsEmpty(Valeur), "Vide", IsDate(Valeur), "Date", IsNumeric(Valeur), Switch(Valeur - Int(Valeur) <> 0, "Decimal", Valeur - Int(Valeur) Mod 1 = 0, "Entier")) SousType1 = IIf(IsNull(Reponse), "Chaîne", Reponse) End Function Private Sub test2() MsgBox SousType1(14.3)'renverra 'Decimal End Sub

"p!)06%&)I!'%=')2!>)2!)\$&)223%02!D=)>>)2!2%3)0'!4)!')2'!%=!&)01%-()2!2)&%0'!(1#>=()2*!]W2!>%&2!>#!Q%06'3%0!$&(6(4)0')!&)01)&&#!=0)!)&&)=&!4P306%B$#'3E3>3'(!4)!'-$)!$%=&!'%=')!4%00()2!0%0!0=B(&3D=)2!$#22()2!6%BB)!#&J=B)0'!$=32D=)!70'jk!#'')04!Q%&6(B)0'!=0!0%BE&)*!

'2!B#i)=&2I!>)=&!Q#3E>)!

>)2!2'&=6'=&)2!(6>#'()2!2=31#0')2*!

d=%3D=)!'&W2!$&#'3D=)I!6)2!2'&=6'=&)2!6%B$#6')2!%0'!4%06!4)=\!306%01(03)03E3>3'(! )'! >P(1#>=#'3%0! 4)! '%=2! >)2! 6#2! B8B)2! >%&2D=P3>2! 2%0'! )\6>=2! $#&! >)! ')2'*! V%=&! (13')&! 6)2!>32

306%01(03)0'2I!%0!'&#1#3>>)!$>='m'!#1)6!

If Then Else )!7Q!s!<G)0!s!L>2)!#4B)'!4)"#!2'&=6'=&

02!>#!2-=\!2-0'#\)2I!>#!2-0'#\)!>30(#3&)!)'!>#!2-0'#\)!4)!E>%62*!

0'#\)!>30(#3&)I!'%=')!>P302'&=6'3%0!'3)0'!2=&!=0)!>3J0)!)'!3>!0P-!#!$#2!4P302'&=6'3%0!4)!Q30!4)!)2'!v!

If <)2' lse <&#3')B)0' ]#02! )2!'&#3')B)0'2!2%0'!2($#&(2!4)2!302'&=6'3%02!4=!E>%6!)'!>)!E>%6!2)!')&B30)!

Q%&6

DuMois(ByVal Mois As Integer, ByVal Annee As

]#E>%62I!>#!Q%&B)!)0!

Then <&#3')B)0' E>#!2-0'#\)!4)!E>%6I!>

(B)0'!$#&!>P302'&=6'3%0!rL04!7Qr*!"#!2'&=6'=&)!)2'!4%06!4)!>#!Q%&B)!If Test Then Traitement Else Traitement End If V#&!)\)B$>)!

Private Function PremierLundiInteger) As Date

s Dat Dim PremierDuMois A e, NumJour As Integer 'syntaxe en ligne

Then Err.R If Mois < 1 Or Mois > 12 tier compris entre 1

aise 5, "Mois", "La valeur du mois est un en et 12" PremierDuMois = DateSerial(

= Weekday(PremierDuAnnee, Mois, 1)

NumJour Mois, vbMonday) 'syntaxe en bloc If NumJour = 1 Then PremierLundiDuMois = PremierDuMois Else PremierLundiDuMois = DateAdd("d", 8 - Weekday(PremierDuMois, vbMonday), PremierDuMois)

nd If E

ction End FunK1)6!>#!2-0'#\)!)0!E>%6I!>)2!'&#3')B)0'2!$)=1)0'!6%0')03&!$>=23)=&2!>3J0)2!4)!6%4)*!7>!)2'!$%223E>)!

&=6'=&)2! 7Q*!O%')e!D=)!D=)>>)!D=)! 2%3'! >#! 2-0'#\)!6G%323)I! >)!E>%6!L>2)!)2'! '%=i%=&2!4P3BE&3D=)&!4)2! 2'Q#6=>'#'3Q*!

! ,?

Page 43: Cours VBA débutants.pdf

Privat ParamArray ListeValeur() As Variant) As Variant e Function Max( Dim compteur As Long If UBound(listvaleur) > -1 Then ound(ListeValeur) To UBound(ListeValeur) For compteur = LB

If IsNumeric( ListeValeur(compteur)) Then < ListeValeur(compteur) Then If Max Max = ListeValeur(compteur) End If End If

pteur Next comf End I

End Function

O*S!v!"P304)0'#'3%0!4=!6%4)!0P)2'!$#2!%E>3J#'%3&)I!B#32!6%BB)!)>>)!$)&B)'!=0!$>=2!J&#04!6%0Q%&'!

! 4)! E>%6! $)&B)'! #=223! 4)! 26304)&! >)2! ')2'2! )'! >)2! )\$&)223%02*!K3023! >#!p! >#! 2-0'#\)! r77QS=Jr! D=)! 0%=2! #1%02! 1=! $>=2! G#='! Q%06'3%00)&#! 2#02!

)&#!(1#>=(!v!As Range) As Integer

4)!>)6'=&)I!)>>)!)2'!6G#=4)B)0'!&)6%BB#04()*!"P='3>32#'3%0! 4)! >#! 2-0'#\)

=31#>)0')!Q%06'3%0! 2=31#0')! (D$&%E>WB)I!$=32D=)!2)=>!>)!6%4)!4=!E>%6!6%06)&0(!2

IfCorrige(ByVal Arg1 Private Function

Nothing Then If Arg1 Is IfCorrige = 0 Else IfCorrige = Arg1.Value End If End Function

ElseIf…Then ")!i)=!4P302'&

#i%==6'3%0!L>2)7QZ<G)0!$)&B)'!4)!J(&)&!4)2!')2'2!6%02(6='3Q2!4#02!=0!E>%6!7Q*!F0!$)='!

')&!#='#0'!4)!E>%6!L>2)7Q!D=)!>P%0!1)='!B#32!#=6=0!0)!$)='!#$$#&#f'&)!#$&W2!>)!E>%6!L>2)*!]W2!D=P=0)!)\$&)223%0!L>2)7Q!)2'!(1#>=()!:&#3I!>)!J&%=$)!4)!'&#3')B)0'!4=!E>%6!)2'!)\(6='(!)'!>)!E>%6!7Q!2P#6GW1)*!Public Function SousType2(ByVal Valeur As Variant) As String f IsArray(Valeur) Then I SousType2 = "T

pty(Valableau"

ElseIf IsEm eur) Then SousType2 = "Vide"

Date(Valeur) Then ElseIf Is SousType2 = "Date" ElseIf IsNumeric(Valeur) Then If Valeur - CInt(Valeur) = 0 Then SousType2 = "Entier" Else

ousType2 = "Decimal" S End If ElseIf IsError(Valeur) Then SousType2 = "Erreur" ElseIf IsNull(Valeur) Then SousType2 = "Null" ElseIf Valeur Is Nothing Then

ype2 = "Nothing" SousTElse SousType2 = "Chaîne" End If End Function

! ,U

Page 44: Cours VBA débutants.pdf

Select Case /)'')!2-0'#\)!)2'!23B3>#3&)!#=!'&#3')B)0'!$&(6W4)0'!$=32D=P3>!2P#J3'!4P=0)!2=3')!4P(1#>=#'3%0!4)!')2'!

4(')&B30#0'!>)!6%4)!p!)\(6=')&*!])!>#!Q%&B)!v!Select Case ExpressionTest Case ExpressionList

!6%B$#&)!=0)!)\$&)223%0!%=!=0)!1#&3#E>)!p!=0)!2=3')!4)!1#>)=&2!v!ex2(ByVal Index As Integer) As String

traitement Case ExpressionList

traitement Case Else traitement End Select ]#02!2#!Q%&B)!>#!$>=2!=2=)>>)I!%0

unction EqvColorIndPrivate F Select Case Index

Case 1 EqvColorIndex2 = "noir" Case 2

EqvColorIndex2 = "b lanc" Case 3 EqvColorIndex2 = "

ase 4 rouge"

C EqvColorIndex2 = "vert" Case 5

EqvColorIndex2 = "bleu" Case 6 EqvColorIndex2 = "j End Select

aune" End Function

F0!$)='!$&%$%2)&!$>=23)=&2!1#>)=&2!4#02!>P302'&=6'3%0!/#2)I!2%3'!2%=2!Q%&B)!4)!>32')!)0!2($#&#0'!>)2!!13&J=>)2I!2%3'!2%=2!Q%&B)!4)!$>#J)!p!>P#34)!4=!B%'!6>(!ToI!2%3'!#1)6!4)2!%$(&#')=&2!4)!>)!B%'!6>(!Is*!F0!$)='!6%BE30)&!6)2!1#>)=&2!#1)6!4)2!13&J=>)2*!

ntaxeCase(ByVal Arg1 As Integer)

1#>)=&2!$#&!4)2B$#&#32%0!)'!6%

Private Sub Sy Select Case Arg1 Case 0 Debug.Print "Arg1 est nulle" Case 1, 2, 3 Debug.Print "Arg1 vaut 1 ou 2 ou 3" Case 4 To 10 Debug.Print "Arg1 est compris entre 4 et 10 bornes incluses" Case Is < 100 Debug.Print "Arg1 est inférieure à 100" Case 100, 200 To 300, Is > 1000 Debug.Print "Arg1 vaut 100, ou est compris dans l'interval [200,300] ou est supérieur à 1000" Case Else Debug.Print "tous les autres cas" End Select End Sub

! ,,

Page 45: Cours VBA débutants.pdf

:%=2! 0%')&)e! D=)! >#! 2-0'#\)! PCase ElseP! $)&B)'! 4P)\(6=')&! =0! '&#3')B)0'! 23! #=6=0! 4)2! 6#2!$&(6(4)0'!0P#!('(!1&#3*!

%&2D=P%0!='3>32)!4)2!Q%0" 6'3%02!E%%>()00)2!$%=&!>)2!')2'2!%=!>%&2D=)!>)2!')2'2!0)!2%0'!$#2!>3(2I!%0!='3>32)!J(0(&#>)B)0'!>#!2-0'#\)!&)01)&2()!Select Case True*!Private Function SousType3(ByVal Valeur As Variant) As String Select Case True ay(Valeur) Case IsArr SousType2 = "Tableau" Case IsEmpty(Valeur) SousType2 = "Vide" Case IsDate(Valeur) SousType2 = "Date" Case IsNumeric(Valeur) And Valeur - CInt(Valeur) = 0 SousType2 = "Entier" Case IsNumeric(Valeur) 'utilise la discrimination du test précédent SousType2 = "Decimal"

ase IsError(Va C leur) SousType2 = "Erreur" Case IsNull(Valeur) SousType2 = "Null"

Nothing Case Valeur Is SousType2 = "Nothing"

Case E

lse SousType2 = "Chaîne" End Select End Function

V%=&!>)!6#2!%=!>#!1#&3#E>)!)2'!4)!2%=2!'-$)!4(63B#>I!iP#3!='3>32(!=0!')2'!4($)04#0'!4)!>#!0%0!1(&#63'(!4=!')2'!$&(6(4)0'*!L0!)QQ)'I!23!>#!1#&3#E>)!)2'!=0!)0'3)&I!>)!6#2!$&(6(4)0'!2)&#!1&#3!)'!>)!6#2!4(63B#>!0)!2)&#!$#2!(1#>=(I!3>!0P-!#!4%06!E3)0!D=P=0)!1#>)=&!4(63B#>)!D=3!)0'&)&#!4#02!>)!2)6%04!IsNumeric*!

")2!E>%62!X)>)6'!/#2)!$)=1)0'!8'&)!3BE&3D=(2*!'2! )2'! 3B$%&'#0')! p! E3)0! 6%B$&)04&)! p/)'')! G3(&#&6G3)! 4)2! ')2

326&3B30#'3%0!$)='!#1%3&!2%0! $>=2! 4P=0! 031)#=*!]P#E%&4! 6#&! >#!

!3B$%&'#06)!2=&!>#!D=#>3'(!4)!Q%06'3%00)B)0'!4=!6%4)I!)02=3')!$#&6)!D=P3>!32#'3%0!3B$%&'#0'*!

4$)='!2P#J3&!4P=0!(>(B)0'!4P%$'3B

! ,N

Page 46: Cours VBA débutants.pdf

Les boucles ")2! E%=6>)2! %=! '&#3')B)0'2! 3'(&#'3Q2! 2)! 2($#&)0'! )0! 4)=\! Q#B3>>)2I! >)2! '&#3')B)0'2! p! 0%BE&)2!

4P3'(&#'3%02!Q3032!)'!>)2!E%=6>)2!p!')2'*!<%=')2!>)2!E%=6>)2!:SK!'%>W&)0'!>#!6>#=2)!4)!2%&'3)!Exit*!!

For Next ])!>#!Q%&B)!v!

!}Step!pas~!

B$>)!6>#223D=)!2)&#3'!v!Pri

For!compteur!=!début!To!fin}traitement~!}Exit For~!j6>#=2)!4)!2%&'3)k!}traitement~!

ur~!Next!}compteg0!)\)vate Function Factorielle(ByVal Arg As Integer) As Long

Dim compteur As Long Factorielle = 1 For compteur = 1 To Arg Step 1 Factorielle = Factorielle * compteur Next compteur End Function

! $#2! 1#='! +! 6%BB)"%&2D=)! >)%'#'3%0!

! 4#02! 6)'! )\)B$>)I! 3>! )2'! J(0(&#>)B)0'! %B32! )'! %0! '&%=1)&#! >#!

To Arg 0 For compteur = 1 F actorielle = Factorielle * compteur Next compteur

O%=2!$%=1%02!$#&6%=&3&!=0)!E%=6>)!)0! 301)&2#0'! >)!B303B=B!)'! >)!B#\3B=B!)'!)0!4(6>#&#0'!=0!

$#2!0(J#'3Q*! For compteur = Arg To 1 Step -1 Factorielle = Factorielle * compteur Next compteur

O%')e!E3)0!D=)!4#02!6)!6#2I!1%=2!0)!$%=1)e!$#2!%B)''&)! >)!$#2!2#02!D=%3! >#!E%=6>)!0)!2)&#!$#2!

!4(E='I!Q30!)'!$#2I!>=()2!D=P=0)!Q%32!>%&2!4)!>P)0'&()!4#02!>#!E%=6>)*!K='&)B)0'!43'I!23!

2!$)='!&)01%-)&!=0)!1#>)=&!43QQ(&)0')!#>%&2!D=)!>)!6%4)!)2'!4(ip!)0'&(!4#02!>#!E%=6>)I!

)\(6='()*!223%02!)0!>3)=!)'!$>#6)!4)!1#>)=&!$%=&!>)2!')&B)2:%=2!$%=1)e!='3>32)&!4)2!)\$&)

223%02!0)!2)&%0'!(1#B#32!6)2!)\$&)=0)!4)2!)\$&)223%06)>>)o63!0)!2)&#!$#2!$&32)!)0!6%B$')*!T)J#&4%02!>P)\)B$>)!2=31#0'!v!Public Sub TestFor() im compteur As Long D compteur = 6 For compteur = 1 To 4 * compteur Step compteur \ 3 MsgBox compteur Next compteur End Sub

36G)&! '%=/)! 6%4)! 1#! #QQ 2! >)2! 0%BE&)2! 3B$#3&2! 6%B$&32! )0'&)! +! )'! ?,*! "%&2! 4)! >P)0'&()! 4#02! >#!&P!1#='!.I!>#!>3J0)!2)&#!30')&$&('()!6%BB)!v!

To 24 Step 2 E%=6>)I!6%BB)!P6%B$')=For compteur = 1

"%&2! 4)! >#! $&)B3W&)! 3'(&#'3%0I! P6%B$')=&P! 1#>#0'! #>%&2! UI! %0! $%=&&#3'! $)02)&! D=)! >#! E%=6>)!4)13)04&#3'!v!For compteur = 1 To 12 Step 1

! ,.

Page 47: Cours VBA débutants.pdf

C#32!6%BB)!>)D

2!)\$&)223%02!0)!2%0'!(1#>=()2!D=)! >%&2!4)! >P)0'&()!4#02! >#!E%=6>)!)'!0%0! >%&2!4)!6G# =)!3'(&#'3%0I!6P)2'!E3)0!>#!$&)B3W&)!30')&$&('#'3%0!D=3!$&(1#=4&#*!O%')e!D=P3>!Q#='!(13')&!6)!'-$)!4)!2-0'#\)I! $#&! 6%01)0'3%0I! >#! 1#&3#E>)! 4)! 4(6%B$')! 0)! 4%3'! $#2! #$$#&#f'&)! 4#02! >)2! )\$&)223%02! 4)!4(Q303'3%0!4)!>#!E%=6>)*!

V#&!6%0'&)I!1%=2!0)!4)1)e!)0!#=6=0!6#2!#QQ)6')&!=0)!1#>)=&!p!>#!1#&3#E>)!4)!4(6%B$')!#=!2)30!4)!>#!E%=6>)I!2%=2!$)30)!4)!&32D=)&!>#!6&(#'3%0!4P=0)!E%=6>)!30Q303)!6%BB)!4#02!>P)\)B$>)!2=31#0'!v!Public Sub TestFor() Dim compteur As Long For compteur = 1 To 4 compteur = IIf(compteur > 3, 1, compteur) Next compteur End Sub

F0! ='3>32)! $#&Q%32! %&'3)! PL\3'! [ &! $&(B#'= ! E%=6>)*! K1#0'!! 3>! 6%013)0'!4)!1(&3Q3)&!D=P=0!#= !0)!2 &%$&3()*!X3!#2I!1%= )! '#0'!>#

ceConsecutif()

>#! 6>#=2)! 4)! 2 %&P! $%=&! 2%&'3 &(B)0'! 4)! >#4P='3>32)&!6)>>)o63I

)2'!$#2!>)!6'&)! '-$)!4)!E%=6>)

&'3)!)0!')2)&#3'!$#2!$>=2!#$$

')>>)!0P 2!$%=1)e!1(&3Q3)&!>#!6#=2 4)!>#!2% !1#&3#E>)!4)!4(6%B$')*!O*S!v!"#!6>#=2)!4)!2%&'3)!$%23'3%00)!>)!6=&2)=&!4P)\(6='3%0!2=&!>#!>3J0)!D=3!2=3'!>P302'&=6'3%0!O)\'!

4)!>#!E%=6>)![%&*!Public Sub Espa

TestSortie("Ai-je deux espaces consécutifs dans la chaîne") If

Then Debug.Print "oui"

End If End Sub Private Function TestSortie(ByVal Phrase As String) As Boolean im compteur As Long, TabSplit() As String D TabSplit = Split(Phrase, " ") For compteur = 0 To UBound(TabSplit) If Len(TabSplit(compteur)) = 0 Then Exit For Next compteur

= UBound(TabSplit) Then If compteur < 'sorti avec Exit For TestSortie = True End If End Function

/)!J)0&)!4)!')2'!4)B)=&)!6)$)04#0'!#22)e!&#&)!$=32D=P3>!)2'!2%=1)0'!$>=2!$&#'3D=)!4)!J(&)&!>)!6#2!'3)I!6)!D=3!4#02!>P)\)B$>)!$&(6(4)0'!2P(6&3&#3'!v!4#02!>)!')2'!6%0')0#0'!>#!6>#=2)!4)!2%&

Private Function TestSortie(ByVal Phrase As String) As Boolean Dim compteur As Long, TabSplit() As String TabSplit = Split(Phrase, " ")

= 0 To UBound(TabSplit For compteur ) If Len(TabSplit(compteur)) = 0 Then TestSortie = True Exit For End If Next compteur End Function

! ,5

Page 48: Cours VBA débutants.pdf

Do Loop ")2!E%=6>)2!]%Z"%%$I!$#&Q%32!#$$)>()2!E%=6>)2!6%043'3%00)>>)2!='3>32)0'!=0!')2'!$%=&!1(&3Q3)&!2P3>!

=3!$%=&2=3'!>)2!2!i=2D=Pp!D=)!

2=&! >)! 0%BE&)! 4P3'(&#'3%02*! X3! >)! ')2'! )2'! $%23'3%00(! )0! 4(E='! 4)!! 4=! '&#3')B)0'!

(!p!>#!Q30I!6P)2'opo43&)!2=&!>#!B8B)!>3J0)!D=)!"%%$I!)\(6='(!#=!B%302!=0)!Q%32*!

4)!2%&'3)! PExit

043'3%00)>>)2!D=3!2%0'!v!

<&#3')B)0'2~!

Do Until!Expression!

!!!!}Exit Do~!!!!!}<&#3')B)0'2~!

Do !2!

!!!!}Exit Do~!!!!!}<&#3')B)0'2~!

pression

6%013)0'!4)!6%0'30=)&!>)2!3'(&#'3%02*!:SK!='3>32)!4)=\!')2'2!43QQ(&)0'2!`G3>)!j<#0'!D=)k!D0'3>!jh=2D=Ppk!D=3!$%=&2=3'!>)2!3'(&#'3%03'(&#'3%02!'#0'!D=)!>P)\$&)223%0!4=!')2'!)2'!1&#3!%=!g

1&#3)*!>P)\$&)223%0!4=!')2'!2%3'!"#! $%23'3%0! 4=! ')2'! 1#! 30Q>=)&!

E%=6>)I! 6P)2'opo43&)! 2=&! >#!B8B)! >3J0)! D=)! >)!]%I! 3>! 0P-! #=&#! $#&! Q%&6(B)0'! )\(6='3%06%0')0=!4#02!>#!E%=6>)I!$#&!6%0'&)!2P3>!)2'!$%23'3%00>)!'&#3')B)0'!2)&#!'%=i%=&2!

d=)>>)!D=)!2%3'! >#!6%02'&=6'3%0!6G%323)I! 3>!)2'! '%=i%=&2!$%223E>)!4P='3>32)&! >#!6>#=2)!DoP*!

=#'&)!Q%&B)2!4)!E%=6>)2!6%O%=2!#1%02!4%06!DDo While!Expression! Do !!!!!<&#3')B)0'2! !!!!<&#3')B)0'2! !!!!<&#3')B)0'2! !!!!<&#3')B)0'!!!!}Exit Do~! !!!!}Exit Do~!!!!!}<&#3')B)0'2~!Loop Loop While!Expression Loop! Loop Until!Ex

'#\)! (D=31#>)0')! p! >#! $&)B3W&)! Q%&B

!!!!}

:%=2! '&%=1)&)e! $#&Q%32! =0)! #063)00)! 2-0)!)2'!v!

)I! >#! E%=6>)!

%06'3%00)>>)B)0'!p! >#!E%=6>)!]%!`G3>)Z"%%$I!%0!0P='3>32)!$>=2! ')>>)B)0'!)>>)!0)!$)&B)'!$#2!>P='3>32#'3%0!4P=0)!6>#=2)!4)!2%&'3)!03!>)!$%23'3%00)B)0'!4=!')2'!)0!

String

`G3>)Z`)04*!X#!Q%&BWhile!Expression!!!!!<&#3')B)0'2!Wend!

!S3)0!D=P(D=31#>)0')! Q6)'')!2-0'#\)!6#&!Q30!4)!E%=6>)*!

")!6G%3\!4)!>#!E%=6>)!4($)04!J(0(&#>)B)0'!4=!6%0')\')!4=!6%4)!6%BB)!0%=2!#>>%02!>)!1%3&!4#02!D=)>D=)2!)\)B$>)2!23B$>)2*!Private Function ConvAra

beVersRomain(ByVal Valeur As Integer) As

Do While Valeur > 0 Select Case Valeur Case Is >= 1000 ConvArabeVersRomain = ConvArabeVersRomain & "M" Valeur = Valeur - 1000 Case Is >= 900 ConvArabeVersRomain = ConvArabeVersRomain & "CM" Valeur = Valeur - 900

Case Is >= 500 ConvArabeVersRomain = ConvArabeVersRomain & "D" Valeur = Valeur - 500 Case Is >= 400

omain & "CD" ConvArabeVersRomain = ConvArabeVersR Valeur = Valeur - 400

Case Is >= 100 ConvArabeVersRomain = ConvArabeVersRomain & "C" Valeur = Valeur - 100 Case Is >= 90 ConvArabeVersRomain = ConvArabeVersRomain & "XC" Valeur = Valeur - 90 Case Is >= 50 ConvArabeVersRomain = ConvArabeVersRomain & "L"

! ,9

Page 49: Cours VBA débutants.pdf

Valeur = Valeur - 50

Case Is >= 40 ConvArabeVersRomain = ConvArabeVersRomain & "XL"

Valeur = Valeur - 40 Case Is >= 10

ConvArabeVersRomain = ConvArabeVersRomain & "X" Valeur = Valeur - 10 Case 9 ConvArabeVersRomain = ConvArabeVersRomain & "IX" Valeur = Valeur - 9 Case Is >= 5 ConvArabeVersRomain = ConvArabeVersRomain & "V" Valeur = Valeur - 5

4 Case ConvArabeVers Valeur = Vale

Romain = ConvArabeVersRomain & "IV" ur - 4

Case Else ConvArabeVersRomain = ConvArabeVersRomain & "I" Valeur = Valeur - 1 End Select Loop End Function

E='!4)!E%=6]#02!6)!6#2I!>)!')2'!2)!B)'!)0!4( >)!$=32D=)!>P)\(6='3%0!4P=0)!3'(&#'3%0!0)!4%3'!#1%3&!>3)=!

'I!0%=2!$%=&&3%02!(6&3&)!v!D=)!23!>#!1#>)=&!')2'()!)2'!2=$(&3)=&)!p!@*!!

3&!)2'!2%=1)0'!$>=2!2=E'3>)*!])!Q#3"#!0#'=&)!4=!')2'!p!6G%32 Until Valeur = 0 Do

L'! %E')03&! =0! 6%B$%&')B)0'! '%='! p! Q#3'! 23B3>#3&)*! /)$)04#0'I! >#! 2-0'#\)! `G3>)! 0%=2! $)&B)'!4P(>3

2=31#0'!B%0'&)!>P='3>32#'3%0!4P=0!')2'!g0'3>!)0!Q30!4)!E%=6>)*!Private Function ChercherCellules(PlageCible As Range, ValeurCherchee As

B30)&!#=223!>)2!1#>)=&2!0(J#'31)2!#>%&2!D=)!>P='3>32#'3%0!4)!g0'3>!0)!>)!$)&B)'!$#2*!"P)\)B$>)!

Variant) As Range Dim CelluleTrouvee As Range, Adresse As String Set CelluleTrouvee = PlageCible.Find(ValeurCherchee) If Not CelluleTrouvee Is Nothing Then Adresse = CelluleTrouvee.Address Do If ChercherCellules Is Nothing Then Set ChercherCellules = CelluleTrouvee Else Set ChercherCellules = Application.Union(ChercherCellules, CelluleTrouvee) Set CelluleTrouvee = PlageCible.FindNext(CelluleTrouvee) Loop Until CelluleTrouvee.Address = Adresse End If End Function

! ,;

Page 50: Cours VBA débutants.pdf

Énumérations & collections

Next!}Elément~!Publi

g0!%Ei)'!/%>>)6'3%0!)2'!=0!i)=!4P(>(B)0'2!304)\(2!#=\D=)>2!3>!$)='!8'&)!Q#3'!&(Q(&)06)!6%BB)!2P3>2!6%02'3'=#3)0'! =0! )02)BE>)! =03D=)*! /G#D=)! (>(B)0'! 4P=0)! 6%>>)6'3%0! j#$$)>(2! B)BE&)k! $)='! 8'&)!&)'&%=1(!p!>P#34)!4)!2%0!304)\*!")2!B)BE&)2!0P%0'!$#2!%E>3J#'%3&)B)0'!>)!B8B)!'-$)!4)!4%00()2I!E3)0!D=)!6)!2%3'!$&)2D=)!'%=i%=&2!>)!6#2!4#02!>)2!6%>>)6'3%02!4=!B%4W>)!%Ei)'!L\6)>*!

g0)! 6%>>)6'3%0! $&(2)0')! '%=i%=&2! =0)! $&%$&3('(!Count! D=3! &)01%3)! >)! 0%BE&)! 4P(>(B)0'2I! 4)=\!B('G%4)2!Add!)'!Remove!D=3!$)&B)'')0'!4P#i%=')&!%=!4)!2=$$&3B)&!=0!(>(B)0'I!)'!=0)!B('G%4)!Item!D=3!$)&B)'!4)!&)01%-)&!=0!(>(B)0'!)0!Q%06'3%0!4)!2%0!704)\*!"P304)\!$)='!$#&Q%32!8'&)!3043QQ(&)BB)0'!=0!0=B(&%!4P%&4&)!)'w%=!=0!0%B*!

7>! )\32')! =0)! E%=6>)! $#&'36=>3W&)! D=3! $)&B)'! 4)! $#&6%=&3&! '%=2! >)2! (>(B)0'2! 4P=0)! 6%>>)6'3%0I! >#!E%=6>)![%&!L#6GZO)\'I!#$$)>()!#=223!(0=B(&#'3%0*!])!>#!Q%&B)!

For Each!Elément!In!/%>>)6'3%0!! <&#3')B)0'!! [Exit For] ! }<&#3')B)0'~!

c Sub DemoCollection() Dim MaColl As New Collection, Enumerateur As Variant MaColl.Add 1 MaColl.Add "Démo"

For Each Enu r In MaColl merateu MsgBox Enumerateur If IsDat u ) Then Exit For e(Enumerate r Next Enumerateur End Sub

0! J&#04! 0%BE&)! 4)! 6%>>)6'3%0I! 0%=2! >)2! &)1)&&%02! 4%06! E3)0'm

MaColl.Add #10/28/2005# MaColl.Add True

")!B%4W>)! %Ei)'! L\6)>! )\$%2)! = '!$>=2!)0!4('#3>*!

! N@

Page 51: Cours VBA débutants.pdf

Fonctions VBA V%=&! Q ! 4=! >#0J#J)! p! $&%$&)B)0'! $#&>)&! )'! #1#0'! 4)! 2)! >#06)&! 4#02! >P('=4)! 4=!B%4W>)!

%Ei)'! L\6)>I! 0%=2! #>>%02! $#&6%=&3&! >)2! Q%06'3%02! 43')2! 30'&302WD=)2! 4=! >#0J#J)*! /)2! Q%06'3%02!#$$#

02!>P#&6G3')6'=&)!4)!>P%Ei)'!:SK!6#&!6)>#!0P#!J=W&)!4P30'(&8'!$%=

=2! (6&31)e! 1%=2oB8B)*! "#! $&(2)0'#'3%0! 4)2! Q%06'3%02! D=3! 1#! 2=31&)! 0)! 2)&#! $#2!03!$%=&!>)2!#&J=B)0'2!D=P)>>)2!#66)$')0'*!L0!)QQ)'I!6)&'#30)2!Q%06'3%02!

k!! B%0'&)&! >)2!

23D=)2P*!]#02! >)!6#2!%x!>)2!4('#3>2!6%B$>)'2!2=&! >#!!$%23'3%00)&!

J03Q3)!

303&! >P('=4)

&'3)00)0'!p!>P%Ei)'!:SK!)'!Q%0'!2%=1)0'!$#&'3)!4=!26%$)I!)>>)2!0P%0'!4%06!J(0(&#>)B)0'!$#2!E)2%30!4P8'&)!D=#>3Q3()2U*!h)!0)!&)0'&)&#32!$#2!363!4#&!>#!$&%J&#BB#'3%0!4PL\6)>I!B#32!2#6G)e!i=2')!D=)!6)2!Q%06'3%02!2P='3>32)0'!6%BB)!>)2!Q%06'3%02!%=!

$&%6(4=&)2! D=)! 1%)\G#=2'31)!03!$%=&!>)2!Q%06'3%02I!='3>32)0'!4)!0%BE&)=\!$#&#BW'&)2!%$'3%00)>2!jD=)!1%=2!$%=1)e!$#22)&!$#&!$%23'3%0!%=!)0!>)2!0%BB#0')'! >#! >32')! D=3! 1#! 2=31&)! 0P#! $#2! $%=&! E='! 4)! 4%=E>%00)&! >P#34)! )0! >3J0)I! B#32! 4)! 1%=2Q%06'3%02! >)2!$>=2!='3>32()2!#1)6!4)2!)\)B$>)2! P6>#2Q%06'3%0!2%0'!0(6)22#3&)2I!3>!2=QQ3'!4)!'#$)&!>)!0%B!4)!>#!Q%06'3%0!4#02!>P(43')=&!4)!6%4)I!4)

&&)2$%04#0')*!>)!6=&2)=&!2=&!6)!0%B!)'!4P#$$=-)&!2=&![+!$%=&!#QQ36G)&!>P#34)!6%]#02!>)2!B%4W>)2!4%00(2I!>)2!#&J=B)0'2!)0'&)!6&%6G)'2!}~!2%0'!%$'3%00)>2!u!>#!0%'#'3%0!}Z~!23

0'!$#2!='3>32(2!4#02!6)!6%=&2*!!D=P3>!)\32')!4P#='&)2!#&J=B)0'2!%$'3%00)>2!D=3!0)!2%

Fonctions de conversions

Conversion de type CBool(expression)! Boolean ")2!1#>)=&2!0=B(&3D=)2!2%0'!6%01)&'3'!2)>%0!>#!&WJ>)!'%=')2!

1#>)=&2!43QQ(&)0')2!4)!e(&%!)2'!1&#3*!

CByte(expression)! Byte !

CCur(expression)! Currency !

CDate(expression)! Date /%01)&'3'!>)2!>3''(&#=\!)0!4#')I!)'!>)2!0%BE&)2!)0!2=31#0'!>#!&WJ>)!rV#&'3)!)0'3W&)!(J#>)!#=!0%BE&)!4)!i%=&2!4)$=32!>)!+w+w+;@@!u!$#&'3)!4(63B#>)!(J#>)!#=!0%BE&)!4)!2)6%04)!4)$=32!B30=3'*!

CDbl(expression)! Double !

CDec(expression)! Decimal !

CInt(expression)! Integer K&&%043'!>)2!4(63B#=\!#=!@*N!$&W2!

CLng(expression)! Long K&&%043'!>)2!4(63B#=\!#=!@*N!$&W2!

CSng(expression)! Single !

CStr(expression)! String OP(6G%=)!D=)!$%=&!>)2!1#>)=&2!$#&'36=>3W&)2!O%'G30JIL&&%&!

!LB$'-I!

CVar(expression)! Variant OP(6G%=)!i#B#32!

O%=2! #1%02! 1=! &#$34)B)0'! >)2! Q%06'3%02! 4)! 6%01)&23%0! 4)! '-$)!%06'3%02!#'')04)0'!=0)!1#&3#E>)!%=!=0)!)\$&)223%0!4

>%&2! 4)! >P('=4)! 4)2! '-$)2! 4)!P=0! '-$)!)'! >)! '&#02Q%&B)!4#02!=0!

!6%01)&23%0!(6G%=)!=0)!)&&)=&!&(6=$(&#E>)!)2'!>)1()*!

!!!!!!!!!!!!!

4%00()2*!/)2! Q'&)!'-$)*!X3!>##=

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !U!7>!)\32')!=0!6#2!4#02!L\6)>!?@@@!%=!>)!6%B$3>#')=&!4(')6')!=0)!#BE3J=Å'(!)0'&)!>#!Q%06'3%0!")Q'!

)'! >#! $&%$&3('(! ")Q'! 4)2! g2)&[%&B2*! 7>! 2=QQ3'! 4P(6&3&)! :SK*")Q'! $%=&! 4(23J0)&! >#! Q%06'3%0! )'! >)1)&!>P#BE3J=Å'(*!

! N+

Page 52: Cours VBA débutants.pdf

Conversions spécifiques

CVErr CVErr(NumErreur As integer) As Variant V)&B)'! 4)! &)01%-)&! =0! :#&3#0'! 6%0')0#0'! >P)&&)=&! 2$(63Q3()! 6%BB)! #&J=B)0'*! F0! ='3>32)!

02!4)=\!6#2*J(0(&#>)B)0'!6)'')!Q%06'3%0!4#V%=&!43QQ(&)&!>)!'&#3')B)0'

!!4P=0)!)&&)=&!%=!$%=&!$)&B)''&)!>)!'&#3')B)0'!$#&!>P#$$)>#0'I!6%BB)!4#02!

>P)\)B$>)!2=31#0'!Public Sub Traitement()

, MaCell Dim FichierLog As String As Range, Reponse As Variant

e1.txt" FichierLog = "d:\user\list For Each MaCell In ThisWorkbook.Wor

ment Is Nothinksheets(1).UsedRange.Cells

If Not MaCell.Com g Then Reponse = AjouteAuFichi

If IsError(Reponse) Thener(FichierLog, MaCell.Comment.Text)

Select Case CInt(Reponse) Case 53 MsgBox "Fichier introuvable" Case 55 MsgBox "Fichier déjà ouvert" End Select End If End If Next MaCell End Sub

Private Function AjouteAuFichier(ByVal Chemin As String, ByVal Ajout As t

Erreur or Append As #1 ut

Close #1 AjouteAuFichier = True Exit Function Erreur:

Err.Clear End Function

F0!>P='3>32)!#=223!$ 6'3%0!$)&2%00#>32()!4)!Q)=3>>)Public Function ConvPSI2Pascal(ByVal Cellule As Range) As Variant

%=&!&)01%-)&!4)2!)&&)=&2!4#02!>#!6)>>=>)!4)!6#>6=>!>%&2D=P%0!(6&3'!=0)!Q%0!4)!6#>6=>*!

Else ConvPSI2Pascal = 6894.757 * Cellule.Value End If End Function

String) As Varian On Error GoTo Open Chemin F Print #1, Ajo

AjouteAuFichier = CVErr(Err.Number)

If Not IsNumeric(Cellule.Value) Or IsEmpty(Cellule.Value) Then ConvPSI2Pascal = CVErr(xlErrNum)

! N?

Page 53: Cours VBA débutants.pdf

Val l(string As Strin

"#! Q%06'3%0! :#>! ! =0)! 6G#f0)! 6%BB)! =0)! 1#>)=&! 0=B(&3D=)*! L>>)! >3'! >)2!)&2! >#! 4&%3')! )'! #&&8')! >P30')&$&('#'3%0! 4W2! D=P=0! 6#&#6'W&)! 0)! $)='! $>=2! 8'&)!

%BB)!=0)!$ Public Sub TestV

Va g) As type numérique 6G)&6G)! p! 30')&$&(')&

6#&#6'W&)2! 4)! >#! J#=6G)! 130')&$&('(!6 #&'3)!4P=0!0%BE&)*!

al() Dim Nombre As Double

"121") Debug.Print Nombre 'renvoie 121 Nombre = Val("121.10") Debug.Print Nombre 'renvoie 121.1 Nombre = Val("121.10erp") Debug.Print Nombre 'renvoie 121.1 Nombre = Val("a121") Debug.Print Nombre 'renvoie 0

Nombre = Val(

End Sub

mFormat, For at$ nt }I!format~!#2!X'&30JI!}Z~!k!As Variant

!)0!6G#f0)!Q%&B#'()!2)>%0!

#&J=B)0'!Q%&B#'!2%3'!4)2!(>(B)0'2!$&(4(Q3032I!2%3'!>#!6%02'&=6'3%0!

Formatjexpression As VariaFormat$jexpression As Variant }I!format~!#2!X'&30JI!}Z~!k!As String "#!Q%06'3%0!Q%&B#'!6G)&6G)!p!'&#02Q%&B)&!=0)!1#>)=&!%=!=0)!)\$&)223%0

>P#&J=B)0'!4)!B32)!)0!Q%&B)*!)!/)'')!Q%06'3%0!#66)$')!6%BB

4)!2$(63Q36#'3%0!4)!Q%&B#'#J)!$)&2%00#>32()*!")2!6G#f0)2!$&(4(Q303)2!='3>32#E>)2!2%0'!

Argument format Description

4)2!0%BE&)2!&()>2I!#QQ36G#J)!4)!>#!XP3>!0P-!#!$#2!4)!$#&'3)!$>)!,wUw;U*!XP3>!0P-!#!$#2!4)!)B$>)I!@NvU,!VC*!")!

BW'&)2!4)!1%'&)!2-2'WB)*!

)*!

&B)!p!>#!>#0J=)!4)!

#'!4(Q303!4#02!1%'&)!2-2'WB)*!

! KQQ36G#J)!4)!>PG)=&)!6%B$>W')!2)>%0!>)!Q%&B#'!4(Q303!4#02!1%'&)!2-2'WB)I!6%B$&)0#0'!>)2!G)=&)2I!>)2!B30=')2!)'!>)2!2)6%04)2*!

Medium Time! KQQ36G#J)!4)!>PG)=&)!4#02!=0!Q%&B#'!4)!+?!G)=&)2!)0!='3>32#0'!>)2!G)=&)2!)'!>)2!B30=')2!#3023!D=)!>)2!30436#')=&2!KCwVC*!

Short Time! KQQ36G#J)!4)!>PG)=&)!#=!Q%&B#'!4)!?,!G)=&)2I!$#&!)\)B$>)!+5v,N*!

General Number! KQQ36G#J)!4=!0%BE&)!2#02!2($#&#')=&!4)!B3>>3)&2*!

Currency! KQQ36G#J)!4=!0%BE&)!#1)6!=0!2($#&#')=&!4)!B3>>3)&2I!>)!6#2!(6G(#0'!u!#QQ36G#J)!4)!4)=\!6G3QQ&)2!p!4&%3')!4=!2($#&#')=&!4(63B#>*!")!&(2=>'#'!)2'!Q%06'3%0!4)2!$#&#BW'&)2!&(J3%0#=\!4)!1%'&)!2-2'WB)*!

Standard! KQQ36G#J)!4)!>#!4#')!)'w%=!4)!>PG)=&)*!V%=&!4#')!)'!4)!>PG)=&)I!$#&!)\)B$>)!,wUw;U!@NvU,!VC*!4(63B#>)I!#QQ36G#J)!4)!>#!4#')!2)=>)B)0'I!$#&!)\)B$#&'3)!)0'3W&)I!#QQ36G#J)!4)!>PG)=&)!2)=>)B)0'I!$#&!)\Q%&B#'!4)!>#!4#')!)2'!4(')&B30(!$#&!>)2!$#&#

Long Date! KQQ36G#J)!4)!>#!4#')!6%B$>W')!2)>%0!>)!Q%&B#'!4(Q303!4#02!1%'&)!2-2'WB

Medium Date! KQQ36G#J)!4)!>#!4#')!2)>%0!>)!Q%&B#'!30')&B(43#3&)!6%0Q%>P#$$>36#'3%0!Gm')*!

Short Date! KQQ36G#J)!4)!>#!4#')!#E&(J()!2)>%0!>)!Q%&B

Long Time

! NU

Page 54: Cours VBA débutants.pdf

Argument format Description

Fixed! Q36G#J)!4P#=!B%302!=0!6G3QQ&)!p!J#=6G)!)'!4)!4)=\!6G3QQ&)2!p!4&%3')!4=!

Stan

Per KQQ36G#J)!4P=0!0%BE&)!B=>'3$>3(!$#&!+@@!2=313!4=!23J0)!$%=&6)0'#J)!j%k!u!#QQ36G#J)!#='%B#'3D=)!4)!4)=\!6G3QQ&)2!p!4&%3')!4=!2($#&#')=&!4(63B#>*!

Yes/No! QQ36G#J)!4)!O%0!23!>)!0%BE&)!)2'!@!u!230%0!#QQ36G#J)!4)!F=3*!

Tru 23!>)!0%BE&)!)2'!@!u!230%0!#QQ36G#J)!4)!Vrai*!

On/

&)$&)04&#32!$#2!>#!>32')!363*!:%=2!'&%=1)&)e!6)=\ 3J0)*!

)2!v!Pub

KQ2($#&#')=&!4(63B#>*!

dard! KQQ36G#J)!4P=0!0%BE&)!#1)6!2($#&#')=&!4)!B3>>3)&2!)'!4P#=!B%302!=0!6G3QQ&)!p!J#=6G)!)'!4)!4)=\!6G3QQ&)2!p!4&%3')!4=!2($#&#')=&!4(63B#>*!

cent!

Scientific! g'3>32#'3%0!4)!>#!0%'#'3%0!263)0'3Q3D=)!2'#04#&4*!

K

e/False! KQQ36G#J)!4)!Faux

Off! KQQ36G#J)!4)!70#6'3Q!23!>)!0%BE&)!)2'!@!u!230%0!#QQ36G#J)!4)!K6'3Q*!

")2!6%4)2!$)&2%00#>32(2!('#0'!#22)e!0%BE&)=\I!i)!0P)0!o63!4#02!>P#34)!)0!>d=)>D=)2!)\)B$>lic Sub TestFormat()

Dim Chaî ing, Nombre As Double, UneDate As Date ne As Str Chaîne = "Avec Casse" Nombre = "1253.124" UneDate = #1/16/1967 8:15:00 PM# Debug.Print Format(Chaîne, "<") 'avec casse Debug.Print Format(Chaîne, ">") 'AVEC CASSE Debug.Print Format(Chaîne, "@@@@@!") 'Casse D ") '1 253.12 ebug.Print Format(Nombre, "Standard

ebug.Print Format(Nombre, "Percent" D ) '125312.40% Debug.Print Format(Nombre, "Scientific") '1.25E+03 Debug.Print Format(Nombre, "0.00") '1253.12 Debug.Print Format(UneDate, "Long Date") 'lundi 16 janvier 1967 Debug.Print Format(UneDate, "Short Date") '16/01/1967 Debug.Print Format(UneDate, "Long Time") '20:15:00 Debug.Print Format(UneDate, "ddd dd/mm/yyyy") 'lun. 16/01/1967

Debug.Print Format(UneDate, "ww") '3 Debug.Print Format(UneDate, "h:mm") '20:15

End Sub

! N,

Page 55: Cours VBA débutants.pdf

Conversion de valeur

Hex, Hex$ Hexjnumber As Variantk!As Variant Hex$ number As Variant As String j k!/%01)&'3'! =0! 0%BE&)! 4(63B#>! )0! _)\#4(63B#>*! "P#&J=B)0'! P0=BE)&P! 4%3'! &)01%-)&! =0! 0%BE&)!

>)!$>=2!$&%6G)*!O%')e!D=)!v!

2! >)! 6%4)I! $&(Q3\(2! $#&! H_*! V#&! )\)B$>)!

)0'3)&!230%0!>)!&(2=>'#'!2)&#!#&&%043!p!>P)0'3)&!_)\jO=>>k!R!O=>>!_)\jLB$'-kR@!")2! 0%BE&)2! G)\#4(63B#=\! 2%0'! $#&Q%32! ='3>32(2! 4#0

H_+@!1#='!+.*!

Oct, Oct$ Octjnumber As Variantk!As Variant Oct$jnumber As Variantk!As String /%01)&'3'!=0!0%BE&)!4(63B#>!)0!F6'#>*!"P#&J=B)0'!P0=BE)&P!4%3'!&)0

%043!p!>P)0'3)&!>)!$>=2!$&%6G)*!O%')e!D=)!v!1%-)&!=0!0%BE&)!)0'3)&!230%0!

=>>!$'-kR@!

>)!&(2=>'#'!2)&#!#&&F6'jO=>>k!R!OF6'jLB")2!0%BE&)2!%6'#=\!2%0'!$#&Q%32!='3>32(2!4#02!>)!6%4)I!$&(Q3\(2!$#&!HF*!V#&!)\)B$>)!HF+@!1#='!

9*!

Int, Fix number As Variantk!As Variant Intj

Fixjnumber As Variantk!As Variant

*!K='&)B)0'!43'I!Intj-7.3k!1#='!o9!#>% ='!o5*!

"#! B#03$=>#'3%0! 4)2! 4#')2! )'! 4)2! G)=&)2! )2'! 2%=1)0'! $&%E>(B#'3D=)! 4=! Q#3'! 4)! >#! B('G%4)! 4)!2'%6a#J)!4)2!4#')2!)'!4)2!43QQ(&)06)2!4)!Q%&B#'!4)!4#')2!)0'&)!>)!2-2'WB)!#0J>%o2#\%0!)'!>)!0%'&)*!

4(63;@@! 6)>=3o63! ('#0'!

6%B$'(*!

'')!&)$&(2)0'#'3%0!0=B(&3D=)!)2'!2%=1)0'!#$$)>()!r0=B(&%!4)!2(&3)r!%=!>#!$#&'3)!)0'3W&)!)2'!>)!0=B(&%!4)!2(&3)!4)!>#!4#')!)'!>#!$#&'3)!4(63B#>)!6)>=3!4)!>PG)=&)*!

<%=')2!>)2!&)$&(2)0'#'3%02!4=!')B$2!('#0'!2%=2!Q%&B)!4)!4#')I!3>!0P)\32')!$#2!4)!&)$&(2)0'#'3%0!4)!4=&()! 2%=2! Q%&B)! 4)! ')B$2! 2=$(&3)=&)! p! ?UvN;vN;I! G%&2! #&'3Q36)! 4)! Q%&B#'#J)*! K3023! 1%=2! $%=1)e!#QQ36G)&!>#!1#>)=&!?,v@@v@@!4#02!=0)!6)>>=>)!L\6)>!)0!#$$>3D=#0'!>)!Q%&B#'!}G~vBBv22I!B#32!1%=2!1)&&)e!D=)!>#!1#>)=&!&()>>)!4)!>#!6)>>=>)!2)&#!@?w@+w+;@@!@@v@@v@@*!

g0)!Q%32!D=)!1%=2!#1)e!p!>P)2$&3'!6)!B%4)!4)!2'%6a#J)I!>#!B#03$=>#'3%0!4)2!4#')2!0)!$%2)!$#2!$>=2!4)!43QQ36=>'(!D=P#='&)!6G%2)*!

T)01%3)!>#!$#&'3)!)0'3W&)!4)!>P#&J=B)0'*!V%=&!>)2!1#>)=&2!$%23'31)2I!Int!)'!Fix!&)01%3)0'!>#!B8B)!1#>)=&I! $%=&! >)2!1#>)=&2!0(J#'31)2I! Int! &)01%3)! >)! $&)B3)&! )0'3)&! 0(J#'3Q! 30Q(&3)=&!%=! (J#>! p!numberI!#>%&2!D=)!Fix! &)01%3)! >)!$&)B3)&!)0'3)&!0(J#'3Q! 2=$(&3)=&!%=!(J#>!p!number

&2!D=)!Fixj-7.3k!1#

Fonctions de Date & Heure

V%=&! 2P#QQ&#06G3&! 4)! 6)'! #2$)6'! 30')&0#'3%0#>I! L\6)>! 2'%6a)! >)2! 4#')2! 2%=2! Q%&B)2! 4P=0! 0%BE&)!B#>!6%B$%23')!4(Q303'!6%BB)!v!g0)! $#&'3)! )0'3W&)! &)$&(2)0'#0'! >)! 0%BE&)! 4)! i%=&2! (6%=>(2! 4)$=32! >)! @+w@+w+

g0)!$#&'3)!4(63B#>)! &)$&(2)0'#0'! >)!0%BE&)!4)!2)6%04)2!4)$=32!@@!G!@@!B30!@@!2I! &#B)0()!p!+!i%=&!j6P)2'!p!43&)!>)!')B$2!)0!2)6%04)!w!9.,@@!2!4)!>#!i%=&0()k!

/)'')!B('G%4)!4)!2'%6a#J)!$)&B)'!4)!>3B3')&!>#!!'#3>>)!4)!2'%6a#J)!4)2!4#')2!)'!4)!$%=1%3&!='3>32)&!>P#&3'GB('3D=)!4(63B#>)!2=&!>)2!4#')2*!/)

! NN

Page 56: Cours VBA débutants.pdf

V&)0%02!>P)\)B$>)!2=31#0'!v!Test() Sub

Dim Date1 , ETemps As Date, TempSec As Double As Date, EDate As DateDim Heure As Long, Minute As Long, Seconde As Long Date1 = #10/22/2002 2:02:21 PM# EDate = CLng(Date1

Date1 - I)

ETemps = Debug.Pr

nt(Date1) int "Date : " & EDate & " -> N° série : " & CLng(EDate) & vbNewLine 'Date : 23/10/2002 -> N° série : 37552

ETemps & " -> Debug.Print "Heure : " & N° sé

N° série : " & CDbl(ETemps) 'Heure : 14:02:21 -> rie : 0.5849653 TempSec = Round(CDbl(ETemps) *

Sec \ 3600 86400)

Heure = Temp Minute = (TempSec - Heure * 36

TempSec - (Heure * 300) \ 60

Seconde = Debug.Print

600) - Minute * 60 Heure & ":" & Minute & ":" & Seconde '14:2:21 End Sub

O%'%0 6)!6%4)!Q%06'3%00)!$#&6)!D=P%0!='3>32)!=0!#&&%043!$%=&!&)'&%=1)&!>)!')B$2!)0!2!'%=')Q%32!D=)!2)6%04)!)'!0%0!=0)!'&%06#'=&)*!

Récupération du temps système

Date, Date$ T)01%3)! >#! 4#')! 2-2'WB)I! ]#')! &)01%3)! =0! 1#&3#0'! #>%&2! D=)! ]#')^! &)01%3)! =0)! 6G#f0)! 4)!

6#&#6'W&)2*!"#!6G#f0)!&)01%-()!$#&!]#')^!)2'!#=!Q%&B#'!30')&0#'3%0#>*!

Time, Time$ T)01%3)! >PG)=&)! 2-2'WB)I! <3B)! &)01%3)! =0! :#&3#0'! #>%&2! D=)! <3B)^! &)01%3)! =0)! 6G#f0)! 4)!

6#&#6'W&)2*!

Timer T)01%3)!=0)!1#>)=&!4)!'-$)!Single &)$&(2)0'#0'!>)!0%BE&)!4)!2)6%04)2!(6%=>()2!4)$=32!B30=3'*!

)!70'j<3B)&k*!O%')e!D=)!T%=04j<3B)k!&)01%3)!>#!B8B)!1#>)=&!D=

Now T)01%3)! >#!4#')! )'! >PG)=&)! 2-2'WB)! j:#&3#0'k*!S)#=

&! &(6=$(&)&! >)! ')B$2!2-2'WB)!$%=6%=$!4)!4(1)>%$$)=&2!='3>32)0'! 6)'')! Q%06'3%0!&!(13')&! >#!6%0Q=23%0!)0'&)! >)2! Q%06'3%02!]#')I!4#02! '%=2! >)2!6#2!$%=

<3B)I!)'!>)2!302'&=6'3%02!4=!B8B)!0%B*!

! N.

Page 57: Cours VBA débutants.pdf

Fonctions de conversions

DateValue, TimeValue F0! ='3>32)! J(0(&#>)B)0'! >#! Q%06'3%0! 4)! 6%01)&23%0! /]#')! $%=&! 6%01)&'3&! =0)! 6G#f0)! %=! =0)!

)\$&)223%0!)0!4#')*!/)$)04#0'!>%&2D=)!>#!1#>)=&!6%0'3)0'!=0)!30Q%&B#'3%0!4)!4#')!)'!4)!')B$2!)'!D=P%0!0)! 2%=G#3')! &(6#'):#>=)!)'w%=

=$(&)&!D=P=0)!4)2!4)=\! 30Q%&B#'3%02I! 3>!$)='!8'&)!$>=2!)QQ36#6)!4P='3>32)&! >)2! Q%06'3%02!!<3B):#>=)*!]

Sub Test() Dim sDate As String

0 décembre 2002 2:14:17 PM" sDate = "1 Debug.Print CDate(sDate)

2 14:14:17 '10/12/200 Debug.Print DateValue(sDate) '10/12/2002 Debug.Print TimeValue( sDate) '14:14:17 End Sub

DateSerial

DateSeria Integer, day As Integer) As Variant!

Debug.Print

l(year As Integer, month AsT)01%3)!>)!0=B(&%!4)!2(&3)!4)!>#!4#')!6%&&)2$%04#0'!#=\!#&J=B)0'2!$#22(2*!V#&!)\)B$>)!v!

DateSerial(2002, 10, 22) '22/10/2002

K'')0'3%0I!3>!0P-!#!$#2!4)!6%0'&m !2=&!>) $#22(2I!2)=>!>P#$$#&')0#06)!p!>#!$>#J)!4)2!1#>)=&2!#='%&32()2!$%=&!>)2!4#')2!) >()*!

K='&)B)0'!43'I!%0!$)='!2#323&!4)2 2=$( !>)2!i%=&2!)'!2=$(&3)=&)2!p!+?!$%=&!>)2!B%32I!1%3&)!4)2!1#>)=&2!0(J#'31)2*!Sub Test()

>)2 )>2!$#&'3 2!#&J=B)0'2!2'!6%0'&m! 2!1#>)=& &3)=&)2!p!U+!$%=&

2002, 10 Debug.Print DateSerial( , 22) '22/10/2002

g.Print Dat Debu eSerial(2002, 10, 33) '02/11/2002 Debug.Print DateSerial(2002, 11, 33) '03/12/2002

Debug.Print DateSerial(2002, 14, 33) '05/03/2003 Debug.Print DateSerial(2002, 15, 33) '02/04/2003 Debug.Print DateSerial(2002, 36, 33) '02/01/2005 Debug.Print DateSerial(2002, -36, 33) '02/01/1999 End Sub

O%=2!&)13)04&%02!2=&!>)!Q%06'3%00)B)0'!4)!366)'')!Q%06'3%0!>%&2!4)!>P('=4)!4)!>#!Q%06'3%0!]#')K44!

N.B :!:%=2!0%')&)e!D=)!>#!4)B#04)!4P#QQ G#J)!4)!>#!Q%06'3%0!]#')X)&3#>!$#&!])E=J*V&30'!&)01%3)!=0)!4#')!)'!0%0!=0!0=B(&%!4)!2(&3)*!/)63!$&%13)0'!4=!Q#3'!D=)!>#!1#>)=&!&)01%-(!)2'!=0!1#&3#0'!4P#E%&4!30')&$&('(!6%BB)!=0)!4#')*!:%=2!4)1)e!>)!&(6=$(&)&!4#02!=0)!1#&3#E>)!4)!'-$)!"%0J!$%=&!&(6=$(&)&!>)!0=B(&%!4)!2(&3)*!

! N5

Page 58: Cours VBA débutants.pdf

TimeSerial Tim

-!#!$#2!4)!6

Sub Te

eSerial(Hour As Integer, minute As Integer, second As Integer) As Variant!T)01%3)!>)!0=B(&%!4)!2(&3)!4)!>PG)=&)!6%&&)2$%04#0'!#=\!#&J=B)0'2!$#22(2*!"#!)06%&)I!3>!0P%0'&m>)2!$#&'3)>2!4)2!#&J=B)0'2!B#32!i=2')!>P%E>3J#'3%0!D=)!>)!&(2=>'#'!2%3'!4#02!>#!$>#J)!4)2!4#')2!

1#>34)2*!st()

TimeSerial(12, -10, 52)

#&D=)!D=)!$%=&!>#!Q%

n F s spéc

)!2%=2!Q%&B

tat

Debug.Print TimeSerial(12, 10, 52) '12:10:52 Debug.Print '11:50:52 Debug.Print TimeSerial(18, 90, 81) '19:31:21 Debug.Print TimeSerial(22, 120, 52) '31/12/1899 00:00:52 End Sub

N.B :!C8B)!&)B 06'3%0!]#')X)&3#>!

Fonctions d'extractioonction ifiques

")2!Q%06'3%02!2$(63Q3D=)2!&)01%3)0'!=0!(>(B)0'!4)!>#!4#' )!4P=0!70')J)&*!NomFonctionjdate As Datek!As Integer

Nom de la fonction Résul

Day +!y!T!y!U+!Month +!y!T!y!+?!Year +@@!y!T!y!;;;;!Hour @!y!T!y!?U!

Minute @!y!T!y!N;!Seconde @!y!T!y!N;!

kDay "#! Q%06'3%0!`))a]#- =B(&%! 4P =&! 4#02! >#!

2)B#30)!$#&!&#$$%&'!p!>#!E#2)!4%00()!)0!#&J=B)0'*!Weekday(date As Date,!}firstdayofweek~) As Integer "#! 6%02'#0') ))aP 00)! >#! E#2)! $%=&! >)! 4( *! X3! 6P)2'! =0! i%=&! 2$(63Q3D=)I! 6)>#!

1)='!43&)!D=)!6)! 0=B(&%!4)!2(&3)!+I!23!6P)2'!>#!E# B)I!6)>#!4($)04&#!4)2!$#&#BW'&)2!30')&0#'3%0#=\!j0%&B [&#06)kI!23!>)!$#&#BW !%B32!>#!E#2)!2)&#!>)!43B#06G)!

:%=2!'&%=1 4)2!6%02'#0')2!4#02!>P('=4)!4)!>#!Q%06'3%0!2=31#0')*!Sub Test()

! &)01%3)! =0! 0 %&4&)! 6%&&)2$%04#0'! p! >#! $%23'3%0! 4=! i%

! PQ3&2'4#-%QY ! 4% 6%B$')i%=&!#=&#!>)!

#>)B)0'!>)!>=043!)0!2)!2-2'W'&)!)2'

)&)e!>)!'#E>)#=!

te As Date

nt Day(M )

nt Year(M e)

Wee

Dim MaDa MaDate = #10/22/2002 5:14:26 PM# Debug.Pri aDate '22 Debug.Print Month(MaDate) '10 Debug.Pri aDat '2002 Debug.Print Hour(MaDate) '17 Minute(MaDate) '14 Debug.Print Debug.Print Second(MaDate) '26 Debug.Print Weekday(MaDate, vbSunday) '3 Debug.Print Weekday(MaDate, vbMonday) '2 Debug.Print Weekday(MaDate, vbUseSystemDayOfWeek) '2 End Sub

! N9

Page 59: Cours VBA débutants.pdf

DatePart /)'')!Q%06'3%0!&)01%3)!4)2!30Q%&B#'3%02!2=&!>#!4#')!)0!Q%06'3%0!4)2!#&J=B)0'2!$#22(2*!DatePart(interval As Stringl,!date As Date},firstdayofweek,!firstweekofyear~~) As Integer "P#&J=B)0'! interval!)2'!=0)!6G#f0)!$&(4(Q303)!4(Q30322#0'! >)! '-$)!4P30Q%&B#'3%0!D=)! >P%0!2%=G#3')!

&(6=$( ='!$& 2!1#>)=&2!v!&)&*!L>>)!$) )04&)!>)

Valeur Valeur retournée

----! K0 ()!0 +@@! !\! !;;;;!

D! <&3B)2'&)! +! !\! !,!

B! C%32! !+?!+! !\!

Information

-! h%=&!4)!>P#00()! +! !\! U..!

4! h%=&! +! !\! U+!

Y! h%=&!4)!>#!2)B#30)! +! !\! !5!v!!X)023E>)!p!>P#&J=B)0'!firstdayofweek!

YY! X)B#30)! +! !\! !NU!v!!X)023E>)!p!>P#&J=B)0'!firstweekofyear!

G! _)=&)! @! !\! !?U!

0! C30=')! @! !\! !N;!

2! X)6%04)! @! !\! !N;!

"P#&J=B)0'!firstdayofweek!4(Q303'!D=)>!i%=&!4)!>#!2)B#30)!#=&#!>)!0=B(&%!4)!2(&3)!+*!7>!0P'3%02I!2#=Q!4#02!6)&'#30)2!6%BE30#32%0

)2'!$#2!2!#1)6!

! 4)! 2)B#30)*! "%&2D=P3>! )2'! %B32I! 6P)2'! >)!!2)B#30)*!7>!$)='!$&)04&)!6%BB)!1#>)=&2!=0)!

0(6)22#3&)!4)!>)!$&(632)&!$%=&!&(6=$(&)&!4P#='&)2!30Q%&B#>P#&J=B)0'! firstweekofyear! $%=&! 4(')&B30)&! >)! 0=B(&%43B#06G)!D=3!2)&#!6%0234(&(!6%BB)!>)!$&)B3)&!i%=&!4)!>#

2'#0')2!2=31#0')2!v!4)2!6%0

Constante Valeur Description

vbUseSystem! @! ](Q303'!$#&!>)2!$#&#BW'&)2!30')&0#'3%0#=\!2-2'WB)!

vbSunday! +! ]3B#06G)!j1#>)=&!$#&!4(Q#='k!

vbMonday! ?! "=043!

vbTuesday! U! C#&43!

vbWednesday! ,! C)&6&)43!

vbThursday! N! h)=43!

vbFriday! .! :)04&)43!

vbSaturday! 5! X#B)43!

!

! N;

Page 60: Cours VBA débutants.pdf

"P#&J=B)0'! firstweekofyear! $&((&%! 4)! 2(&3)! +*! 7>! 0P)2'! ='3>)! 4)!

632)! >)! B%4)! 4)! 4(Q303'3%0! 4)! >#! 2)B#30)! 4)! >P#00()! #-#0'! >)!0=B >)! $&(632)&! D=)! >%&2D=P%0! 1)='! )\'&#3&)! >)! 0=B(&%! 4)! 2(&3)! 4)! >#!2)B#30)*!" B32I!6)!$#&#BW'&)!$&)04!>#!2)B#30)!4=!+)&!h#013)&!6%BB)!2)B#30)!0=B(&%!+*!L0![&#06)!6 BB)!1#>)

%&2D=P3>!)2'!%P)2'! >#!$&)B3W&)!2)B#30)!4)!,! i%=&2!D=3!#! >)!0=B(&%!4)!2)B#30)*! 7>!$)='!$&)04&)!6%

=&!=0)!4)2!6%02'#0')2!2=31#0')2!v!

Constante Valeur Description

vbUseSystem! @! ](Q303'!$#&!>)2!$#&#BW'&)2!30')&0#'3%0#=\!2-2'WB)!

vbFirstJan1! +! X)B#30)!4=!+)&!i#013)&!j1#>)=&!$#&!4(Q#='k*!

vbFirstFourDays! ?! V&)B3W&)!2)B#30)!6%B$%&'#0'!#=!B%302!D=#'&)!i%=&2!4#02!>P#00()!0%=1)>>)*!

vbFirstFullWeek! U! V&)B3W&)!2)B#30)!6%B$>W')!4)!>P#00()*!

d=)>D=)2!)\)B$>)2!4P='3>32#'3%0!v!Sub Test() Dim MaDate As Date

5:14:26 PM# MaDate = #10/22/2002

"yyyy", MaDate) '200 Debug.Print DatePart( 2 Debug.Print DatePart("q", MaDate) '4

"m", MaDate) '10 Debug.Print DatePart( Debug.Print DatePart("y", MaDate) '295

"d", MaDate) ' 22

Debug.Print DatePart( Debug.Print DatePart("w", MaDate) '3

bMonday) Debug.Print DatePart("w", MaDate, vg.Print DatePart("ww", MaDate) '

'2 Debu

43 Debug.Print DatePart("ww", MaDate, vbMonday, vbFirstFullWeek) '42

Debug.Print DatePart("h", MaDate) '17 Debug.Print DatePart("n", MaDate) '14

.Print DatePart("s", MaDate) '26 Debug End Sub

!

! .@

Page 61: Cours VBA débutants.pdf

Fonctions de calculs

DateAdd V)

Dat ring, number As Long, date As Date)!&I! 6)'')!

'3%0!]#')V#&'*!!)!0%BE&)!4P30')&1#>>)2*!g0)!1#>)=&!4(63B#>)!2)&#!#&&%043)!p!>P)0'3)&!0J)04&)&#!=0)!2%=2'&#6'3%0*!!

&B)'!4P#i%=')&!%=!4)!2%=2'&#3&)!=0!30')&1#>>)!4)!')B$2!2=&!=0)!4#')*!])!>#!Q%&B)!v!

eAdd(interval As St"P#&J=B)0'! interval! )2'! =0)! 6G#f0)! $&(4(Q303)! 4(')&B30#0'! >P30')&1#>>)! 4)! ')B$2! p! #i%=')

#f0)!$)='!$&)04&)!>)2!B8B)2!1#>)=&2!D=)!6)>>)2!4)!>#!Q%066G"#!1#>)=&!number!4(')&B30)!>

>)!$>=2!$&%6G)*!g0)!1#>)=&!0(J#'31)!)2#'3%0!vd=)>D=)2!)\)B$>)2!4P='3>3

Sub Test() Dim MaDate As Date MaDate = #1/31/2002 5:14:26 PM#

bug.Print DateAdd("s", 40, MaDate) De '31/01/2002 17:15:06 Debug.Print DateAdd("n", -15, MaDate)

2 16:59:26 '31/01/200 Debug.Print DateAdd("w", 5, MaDate) '05/02/2002 17:14:26

t DateAdd("y", -1992, MaDate) Debug.Prin '18/08/1996 17:14:26 Debug.Print DateAdd("m", 25, MaDate) '29/02/2004 17:14:26 Debug.Print DateAdd("h", 40, MaDate) '02/02/2002 09:14:26

"yyyy", -1992, MaDate) Debug.Print DateAdd( 'Erreur hors de la plage des dates End Sub

BB)!1%=2!>)!1%-)eI!>#!Q%06'3%0!)2'!#22)e!/% 23B$>)!4P)B$>%3*!d=)>D=)2!&)B#&D=)2!2%0'!'%=')Q%32!

02(D=)06)!

=3'!p!=0!#!D=)!U@!i%=&2!j%=!?9k!6P)2'!>)!4)&03)&!i%=&!4=!B%32!D=3!2)&#!&)01%-(*!7>!)0!2)&#!%=&!>)2!#00()2!E322)\'3>)2!#1)6!>)!>3''(&#>!r----r*!!

Sub

0(6)22#3&)2!v! 7>! 0P)2'! $#2! $%223E>)! 4)! '&#1#3>>)&! 2=&! =0!0%BE&)!4(63B#>! 4P30')&1#>>)2*! V%=&! %E')03&! =0)!B%43Q36#'3%0! (D=31#>)0')! 1%=2! $%=1)e! 2%3'! 3BE&3D=)&! >)2! Q%06'3%02! ]#')K44I! 2%3'! >)2!='3>32)&!)0!2=66)223%0*!

"P)B$>%3!4)2!>3''(&#=\!r4rI!rYrI!r-r!)2'!(D=31#>)0'!$%=&!>P#i%='!%=!>#!2%=2'&#6'3%0!4)!i%=&*! "%&2D=)!>P30')&1#>>)!)2'!4(Q303!$#&!rBrI!r----rI!rDrI!3>!0)!$)='!$#2!#1%3&!$%=&!6%4P)0J)04&)&! >#!B%43Q36#'3%0!4P=0)!#='&)!$#&'3)!4)! >#!4#')*!K='&)B)0'!43'I! 23!1%=2!#i%=')e!4)2!B%32!%=!4)2! '&3B)2'&)2!p!=0)!4#')!4%0'! >)! i%=&!)2'!U+!)'!D=)! >)!&(2=>'#'!6%04B%32!D=3!0P4)!B8B)!$

Test() Dim MaDate As Date MaDate = #1/31/2000 5:14:26 PM# Debug.Print DateAdd("n", 30, DateAdd("h", 2, MaDate)) '29/02/2000 19:44:26 MaDate = DateAdd("h", 2, MaDate) Debug.Print DateAdd("n", 30, MaDate) '29/02/2000 19:44:26 Debug.Print DateAdd("yyyy", 1, MaDate) '28/02/2001 19:14:26 Debug.Print DateAdd("m", 12, MaDate) '28/02/2001 19:14:26 Debug.Print DateAdd("q", 1, MaDate) End Sub

! .+

Page 62: Cours VBA débutants.pdf

g0)! E%00)! $&#'3D=)! 4)! 6)'')! Q%06'3%0! $)&B)'! 4)! B3)=\! 6%B$&)04&)! >)! Q%06'3%00)B)0'! 4)! >#!)&3#>! D=)! 0%=2! #1%02! 1=! $&(6(4)BB)0'*! O%=2! #>>%02! (6&3&)! 0%'&)! $&%$&)! Q%06'3%0!&!B3)=\!>)!1%3&*!

Q%06'3%0! ]#')X&3#>!$%=]#')X)

!/)'! )\)B$>)!1#!0%=2! )BB)0)&!=0!$)'3'! $)=! >%30I! 23! 1%=2!4(E=')e! >)!:SK!1%=2!$%=1)e!6%0'30=)&!p!>P('=4)!4)!>#!Q%06'3%0!2=31#0')*!

O%'&)!Q%06'3%0!2)&#!v!Public Function NotreDateSerial(ByVal Annee As Integer, ByVal Mois As Integer, ByVal Jour As Integer) As Variant Dim BaseDate As Date

seDate = #1/31/1999# Ba 'Test sur l'année Select Case Annee Case Is > 100 'affectation de l'année BaseDate = DateAdd("yyyy", -1 * (1999 - Annee), BaseDate) Case Is <= 0 'soustraire à la base BaseDate = DateAdd("yyyy", Annee, BaseDate)

Case Else 'lire comme Base + Annee - 100 BaseDate = DateAdd("yyyy", Annee - 100, BaseDate) End Select 'aller au dernier jour de novembre et ajouter Mois BaseDate = DateAdd("m", 10 + Mois, BaseDate) 'si l'année est une affectation, enlever un an If Annee > 100 Then BaseDate = DateAdd("yyyy", -1, BaseDate) 'ajouter les jours BaseDate = DateAdd("d", Jour, BaseDate) NotreDateSerial = BaseDate End Function

V%=&D=%3! =0! 6%4)! #=223! 6%B$>)\)*! /%BB)! 0%=2! >P#1%02! 43'! #=! 6%=&2! 4)! >P('=4)! 4)! >#! Q%06'3%0!]#')X)&3#>I! 3>! 0P-! #! $#2! 4)! 6%0'&m>)! =03'#3&)! 4)2! #&J=B)0'2! $#22(2*! /%

>)06G)! $#2! 4P)&&)=&! 23! %0! >=3! $#22)! =0)! 1#>)=&! 4P#000'&#3&)B)0'! p! =0)! 34()! &)q=)I!()! 30Q(&3)=&)! p! +@@*! L0! Q#3'I!

0)! 4#')! )0! 30')&0)I! 4(Q303! #=! 4)&03)&! i%=&! 4)! 0%1)BE&)! +;;;*! h)! 0)! 432! $#2! #=! U@!!p!>#!4#')!30')&0)*!! E#2)! #-#0'! U+! i%=&2! 6)! D=3!

')>!D=)!0%=2!>P#1%02!1=!$&(6(4)BB)0'*!

]#')X)&3#>! 0)! 4(6#')X)&3#>! JW&)! =]O%1)BE&)!6#&!]#')X)&3#>!&)01)&&#!>)!U+!4(6)BE&)!23!1%=2!#i%=')e!=0!B%32

%06! $#&! =0)! 4#')! 4)V%=&! $%=1%3&! J(&)&! 6)'')! 6%043'3%0I! i)! $#22)! 43('(2!4)!>P#i%='!#1)6!>P#&J=B)0'!rBrI!='3>32)&#!>)2!$&%$&

DateDiff T)01%3)!>#!43

ateDiff(interval As StrinQQ(&)06)!)0'&)!4)=\!4#')2!4#02!>P30')&1#>>)!2$(63Q3(*!])!>#!Q%&B)!v!

g, date1 As Date, date2 As Date}, firstdayofweek},! firstweekofyear~~) As

()*!

! D=%3D=)! '&W2! $&#'3D=)! )2'! =0! $)=! $3(J)=2)! 6#&! >#! 0%'3%0! 4P30')&1#>>)! 4)! ')B$2! 1#!

DLong

Fx!>P#&J=B)0'!interval!)2'!=0)!6G#f0)!$&(4(Q303)!$&(632#0'!>P=03'(!4)!')B$2!4)!>#!1#>)=&!&)'%=&0L>>)!$)='!$&)04&)!>)2!B8B)2!1#>)=&2!D=)!$%=&!>#!Q%06'3%0!]#')V#&'*!

/)'')! Q%06'3%04($)04&)!4)!$#&#BW'&)2!$>=2!0=B(&3D=)2!D=)!>%J3D=)2*!

! .?

Page 63: Cours VBA débutants.pdf

T)J#&4%02!>)!6%4)!2=31#0'!v!Sub Test() Debug.Print DateDiff("d", DateValue("27/02/2002"), DateValue("31/12/2002")) '307 Debug.Print DateDiff("yyyy", DateValue("27/02/2002"), DateValue("31/12/2002")) '0 Debug.Print DateDiff("d", DateValue("31/12/2002"), DateValue("15/01/2003")) '15 Debug.Print DateDiff("yyyy", DateValue("31/12/2002"), DateValue("15/01/2003")) '1 Debug.Print DateDiff("d", DateValue("02/02/2002"), DateValue("28/02/2002")) '26 Debug.Print DateDiff("m", DateValue("02/02/2002"), DateValue("28/02/2002")) '0 Debug.Print DateDiff("d", DateValue("28/02/2002"), DateValue("01/03/2002")) '1 Debug.Print DateDiff("m", DateValue("28/02/2002"), DateValue("01/03/2002")) '1 End Sub

/%BB)! 1%=2! >)! 1%-)eI! =0)! 43QQ(&)06)! 4)! U@@! i%=&2! &)01)&&#! =0)! 43QQ(&)06)! 4)! @! #00()2! #>%&2!%32*!4)1)e!

! Q%06'3%0!]#')]3QQ! )0! #-#0'! E3)0! p! >P)2$&3'! >)!B%4)! 4)! 6#>6=>! ='3>32(*! V%=&! (13')&! >)2!! J(0(&#>)B)0'! =0! &)'%=&! 4#02! >#! $>=2! $)'3')! =03'(! 4)! >P(>(B)0'! ji%=&2! $%=&! >#! 4#')I!B$2k!#Q30!4P#1%3&!>#!4=&()!>#!$>=2!i=2')!$%223E>)*!

D=P=0)!43QQ(&)06)!4)!+N!i%=&2!$)='!&)01%-)&!=0!30')&1#>>)!4)!+!#00()*!7>!)0!)2'!4)!B8B)!#1)6!>)2!B)2'!2)!Q#3'!2=&!>#!1#>)=&!4)2!(>(B)0'2!6%B$%2#0'!>#!4#')!6%B$#&(2!=0!p!=0*!:%=2!])!Q#3'!>)!'

%06! ='3>32)&! >#4)&&)=&2I! %0! ='3>32)6%04)!$%=&!>)!')2)X3!]#')+!)2'!$%2'(&3)=&)!p!]#')?I!>#!Q%06'3%0!]#')]3QQ!&)01%3)!=0!0%BE&)!0(J#'3Q*!

Exemples classiques d'utilisation !

Public Function FinDuMois(ByVal D As Date) As Date FinDuMois = DateSerial(Year(D), Month(D) + 1, 0) End Function Public Function DebutSemaine(ByVal D As Date) As Date DebutSemaine = D - Weekday(D) + 7 End Function Public Function FinSemaine(ByVal D As Date) As Date FinSemaine = D - Weekday(D) + 7 End Function Public Function EstBissextile(ByVal Annee As Long) As Boolean EstBissextile = Annee Mod 4 = 0 And (Annee Mod 100 <> 0 Or Annee Mod 400 = 0) End Function Public Function NombreMemeJour(ByVal Date1 As Date, ByVal Date2 As Date, Jour As VbDayOfWeek) As Integer NombreMemeJour = DateDiff("ww", Date1, Date2, Jour) End Function Public Function Duree(ByVal Date1 As Date, ByVal Date2 As Date) As Date Duree = DateDiff("s", Date1, Date2) / 86400 End Function

! .U

Page 64: Cours VBA débutants.pdf

Public Function Annee As Integer) As Date DimanchePaques(ByVal algorithme de Oudin im G As Integer, C As Intege

' D r, C_4 As Integer, E As Integer

Dim H As Integer, K As Integer, P As Integer, Q As Integer Dim I As Integer, B As Integer, J1 As Integer, J2 As Integer Dim R As Integer G = Annee Mod 19

C = Annee \ 100 C_4 = C \ 4 E = (8 * C + 13) \ 25 H = (19 * G + C - C_4 - E + 15) Mod 30 K = H \ 28 P = 29 \ (H + 1) Q = (21 - G) \ 11 I = (K * P * Q - 1) * K + H B = Annee \ 4 + Annee J1 = B + I + 2 + C_4 - C J2 = J1 Mod 7 R = 28 + I - J2 If R <= 31 Then

DimanchePaques = DateValue(CStr(R) & "/3/" & CStr(Annee)) Else DimanchePaques = DateValue(CStr(R - 31) & "/4/" & CStr(Annee)) End If End Function Pub ies(ByVal Annee As Integer) As Variant lic Function JoursFer ReDim JoursFeries(1 To 11) JoursFeries(1) = DateSerial(Annee, 1, 1) '1er janvier JoursFeries(2) = DateAdd("d", 1, DimanchePaques) 'lundi de paques JoursFeries(3) = DateSerial(Annee, 5, 1) '1er Mai JoursFeries(4) = DateSerial(Annee, 5, 8) 'victoire 1945 JoursFeries(5) = DateAdd("d", 39, DimanchePaques) 'jeudi ascension JoursFeries(6) = DateAdd("d", 50, DimanchePaques) 'lundi pentecote JoursFeries(7) = DateSerial(Annee, 7, 14) 'fête nationale JoursFeries(8) = DateSerial(Annee, 8, 15) 'assomption JoursFeries(9) = DateSerial(Annee, 11, 1) 'toussaint ice 14-18 JoursFeries(10) = DateSerial(Annee, 11, 11) 'armist

Noel JoursFeries(11) = DateSerial(Annee, 12, 25) ' End Function

! .,

Page 65: Cours VBA débutants.pdf

Fonctions de fichiers ")2!Q%06'3%02!4)!B#03$=>#'3%0!4)!Q36G3)&2!D=)!0%=2!#>>%02!1%3&!2%0'! 306>=2)2!4#02!>)!:SK*!7>!0)!

2P#J3'!$#2!363!4)2!B('G%4)2!4)!B#03$=>#'3%0!4)!>#!E3E>3%'GWD=)!4P%Ei)'!L\6)>I!03!4)!6)>>)!4)!>#!>3E&#3&3)!FQQ36)*!h)!0)!$#&>)&#32!$#2!0%0!$>=2!4#02!6)!6%=&2!4)!>#!B#03$=>#'3%0!4)!>#!>3E&#3&3)![3>)X-2')BFEi)6'*!")! ')&B)! Q%06'3%02! )2'! 4P#3>>)=&2! =0! $)=! =2=&$(! $=32D=P)0! >P%66=&&)06)! %0! ='3>32)&#! #=223! 4)2!

&2!)'!6)>>)2!2=&!>)2!

e de fichier

302'&=6'3%02*!")2!%$(&#'3%02!2=&!>)2!Q36G3)&2!2)!43132)0'!)0!4)=\I!6)>>)2!2=&!>)!2-2'WB)!4)!Q36G3)

Q36G3)&2*!

Systèm

ChDir /G#0J)!>)!&($)&'%3&)!6%=&#0'*!!ChDir!path As String ")! &($)&'%3&)! 4(23J0(!$#&!Path! 4%3'! Q%&6(B)0'! )\32')&*!"P302'&=6'3%0!ChDir! 6G#0J)! >)! &($)&'%3&)!

#2! >)! >)6')=&! $#&! 4(Q#='*! X3! >)! >)6')=&! 0P)2'! $#2! 2$(63Q3(! 4#02!PathI! >#! 6%BB#04)!$#&! 4(Q#='! B#32! $2P#$$>3D=)!#=!>)6')=&!$#&!4(Q#='*!

ChDrive /G#0J)!>)!>)6')=&!6%=&#0'!ChDrive!Drive As String

CurDir T)01%3)!>)!6G)B30!6%=&#0'!CurDir}(drive)~!X3!>P#&J=B)0'!drive!)2'!%B32I!6P)2'!>)!6G)B30!$#&!4(Q#='!4=!>)6')=&!$#&!4(Q#='!D=3!)2'!&)01%-(!230%0!

6P)2'!6)>=3!4=!>)6')=&!2$(63Q3(*!

Dir V%=&! >)2! 13)=\! D=3! %0'! 6%00=! >)! 4%=\! ')B$2! 4)!CXo]FXI! 6)'')! Q%06'3%0! 0)! $&(2)0')&#! $#2! 4)!

3$=>#'3%0*!

!J(0(&3D=)2*!X)>%0!2#!0#'=&)I!3>!$)&B)''&#!4P='3>32)&!>#!Q%06'3%0!Dir!43QQ(&)BB)0'*!Attrib #2D=)!E30#3&)!#66)$'#0'!>)2!6%B$%2#0'2!2=31#0'2!v!

43QQ36=>'(2!4)!B#0Dir}(pathname}, attributes~)~!Pathname )2'! =0! #&J=B)0'! Q#6=>'#'3Q! D=3! 4%3'! 4(23J0)&! =0! 6G)B30! )\32'#0'I! #66)$'#0'! 4)2!

6#&#6'W&)2utes!)2'!=0!B

Valeur Constante Description

vbNormal! @! jV#&!4(Q#='k!X$(63Q3)!>)2!Q36G3)&2!2#02!#''&3E='2*!

vbReadOnl (63Q3)!>)2!Q36G3)&2!#66)223E>)2!)0!>)6'=&)!2)=>)!#3023!D=)!>)2!Q36G3)&2!2#02!#''&3E='2*!y! +! X$

vbHidden! ?! X$(63Q3)!>)2!Q36G3)&2!6#6G(2!#3023!D=)!>)2!Q36G3)&2!2#02!#''&3E='2*!

vb )!>)2!Q36G3System! ,! X$(63Q3)!>)2!Q36G3)&2!2-2'WB)!#3023!D=30'%2G*!

)&2!2#02!#''&3E='2*!O%0!432$%03E>)!2=&!>)!C#6

vbVolume! 9! X$(63Q3)!=0!0%B!4)!1%>=B)!u!23!=0!#='&)!#''&3E='!)2'!2$(63Q3(I!>#!6%02'#0')!vbVolume!)2'!3J0%&()*!O%0!432$%03E>)!2=&!C#630'%2G*!

vbDirectory! +.! X$(63Q3)!>)2!4%223)&2!#3023!D=)!>)2!Q36G3)&2!2#02!#''&3E='2*!

vbArchive U?! X$(63Q3)!>)2!Q36G3)&2!B%43Q3(2!#3023!D=)!>)2!Q36G3)&2!2#02!#''&3E='2*!

! .N

Page 66: Cours VBA débutants.pdf

]#02! %3)! =0! 0%B! 4)! Q36G3)&! %=! 4)! &($)&'%3&)! >%&2D=P)>>)! '&%=1)! =0)!6%&&)2$%04#06)!#1)6!>)2!#&J=B)0'2!$#22(2!%=!=0)!6G#f0)!134)!4#02!>)!6#2!6%0'&#3&)*!"%&2D=)!$>=23)=&2!Q36G !g0!0%=1)>!#$$) )0'!2=31#0'I!)'!#3023!4)!2=3')! i=2D=Pp! >P%E')0'3%0!4P=0 0%BE&)=2)2I!#=223!#>>%02!0%=2!1%3&!4)=\!)\)B$>)2!

B)0'*!32')!2#02!='3>32)&!>)!6%0'&m>)!4P)&&)=&*!

ByVal Chemin As String) As Boolean

>P#E2%>=I! ]3&! &)01

3)&2!%=!4%223)&2! &($%04)0'!#=\!#&J=B)0'2I!]3&! &)01%3)! >)!$&)B3)&!(>(B)0'!4)! >#! >32')*>!p! >#!Q%06'3%0!]3&!2#02!#&J=B)0'! &)01)&&#! >P(>(B

!")2!$%223E3>3'(2!4P)B$>%32!2%0'!)!6G#f0)!134)*6>#223D=)2!4P='3>32#'3%0!$%=&!B3)=\!6%B$&)04&)!2%0!Q%06'3%00)

$)&B)'!4)!1(&3Q3)&!23!=0!Q36G3)&!)\"#!$&)B3W&)!#$$>36#'3%0!Private Function FileExist( ue If Len(Dir(Chemin)) > 0 Then FileExist = Tr

End

"#! Q%06'3%0! 2)! E#2)! 2=&! >)! $&3063$)! 4)! >#! Q%06'3%0!] Function

3&! D=3! &)01%3)! >)! 0%B! 4)! Q36G3)&! $#22(! )0!&2D=)!6)>=3o63!)\32')*!"#!B8B)!Q%06'3%0!$)='!2)!Q#3&)!#1)6!>)2!&($)&'%3&)2*!

Private st(ByVal Repertoire As String) As Boolean #&J=B)0'!>%

Function FolderExi If Len(Dir(Repertoire, vbDirectory)) > 0 Then FolderExist = True End Function

")!&($)&'%3&)!$)='!(1)0'=)>>)B)0'!2)!')&B30)&!$#&!rÄr!%=!0%0*')! 4)2! Q36G3)&2! 4P

!=0! &($)&'%3&)! )0! $&(632#0'!

(1)0 E&)!4)!Q36G3)&2*!Pri

"#! 4)=\3WB)! Q%06'3%0! 6%0232')! p! &(6=$(&)&! >#! >32'=)>>)B)0'!=0!B#2D=)!4)!&)6G)&6G)*!"#!Q%06'3%0!&)01%3)!#=223!>)!0%Bvate Function ListeFichier(ByVal Repertoire As String, ByRef Coll As

Collection, Optional ByVal Pattern As String = "*.*") As Integer If Right(Repertoire, 1) <> "\" Then Repertoire = Repertoire & "\" If Dir(Repertoire & "\") = "" Then Exit Function Dim MonFichier As String MonFichier = Dir(Repertoire & Pattern, vbArchive Or vbNormal Or vbReadOnly) Do While Len(MonFichier) > 0 Coll.Add (Repertoire & MonFichier)

= ListeFichier + 1 ListeFichier MonFichier = Dir Loop End Function

:%=2!0%')&)e!D=)!>#!>32')!4)2!Q36G3)&2!2)&#!$>#6()!4#02!=0!#&J=B)0'!6%>>)6'3%0!$#22(!$:%=2! 0%')&)e! (J#>)B)0'! D=)! >)! 6%4)! ')2')! >P#E2)06)! 4P=0! 6#&#6'W&)! #0'32>#2G! Q30#>! )'! >P#i%=')! >)! 6

#&!&(Q(&)06)*!#2!

(6G(#0'*!

FileAttr %06'3%0!b)'K''&*! "#! Q%06'3%0! [3>)K''&! &)01%3)! >)!

B%4 W2!2%=1)0'*!/)'')! Q%06'3%0! )2'! 2%=1)0'! 6%0Q%04=)! #1)6! >#! Q)!4P%=1)&'=&)!4P=0!Q36G3)&!6)!D=3!0P)2'!$#2!='3>)!'&

FileCopy /%$3)! >)! Q36G3)&! $#22(! 6%BB)! #&J=B)0'! 2%=&6)! 4#02! 4)2'30#'3%0*! ")2! 4)=\! #&J=B)0'2! 4%31)0'!

6%B$&)04&)!>)!0%B!4=!Q36G3)&I!B#32!$#2!0(6)22#3&)B)0'!>)!B8B)*!FileCopy!source As String,!destination As String!

Private Sub Test1() FileCopy "d:\svg\essai.txt", "d:\svg\jmarc\essai.txt" 'valide FileCopy "d:\svg\essai.txt", "d:\svg\jmarc\nouveau.txt" 'valide FileCopy "d:\svg\essai.txt", "d:\svg\jmarc\" 'erroné End Sub

! ..

Page 67: Cours VBA débutants.pdf

FileDateTime 6%BB)!#&J=B)0'*!

s String) As Date!T)01%3)!>#!4#')!)'!>PG)=&)!4)!4)&03W&)!B%43Q36#'3%0!4=!Q36G3)&!$#22(!FileDateTime(pathname AV#&!)\)B$>)!

Debug.Print FileDateTime("d:\svg\essai.txt") '20/10/2002 21:35:13

FileLen T)01%3)!>#!'#3>>)!4=!Q36G3)&I!)0!%6')'2I!!$#22(!)0!#&J=B)0'*!FileLen(pathname As String) As Long!

Debug.Print FileLen("d:\svg\win32api.txt") '667988

GetAttr & SetAttr "#! Q%06'3%0!SetAttr! 4(Q303)! >)2! #''&3E='2! 4=! Q36G3)&! $#22(! 6%BB)! $&)B3)&! #&J=B)0'! p! >P#34)! 4=!

2)6%04!#&J=B)0'*!"#!Q%06'3%0!GetAttr! &)01%3)!=0!B#2D=)!E30#3&)!4)2!

=>!p!=0!Q36G3)&!$=32!1#!&)>3&)!6)2!

Sub TestAttribut()

B#2D=)!E30#3&)!$#22(!6%BB)!#''&3E='2!4=!Q36G3)&!$#22(!)0!#&J=B)0'*!

SetAttr PathName As String, Attributes As VbFileAttribute leAttribute GetAttr(pathname As String) As VbFi

")2!#''&3E='2!2%0'!>)2!B8B)2!D=)!6)=\!4%00(2!$%=&!>#!Q%06'3%0!Dir*!'!1#!4%00)&!>)2!#''&3E='2!Q36G3)&!6#6G(!)'!>)6'=&)!2)"P)\)B$>)!2=31#0

#''&3E='2*!Private im MesAtD tributs As VbFileAttribute, msg As String, ReadInt As Integer MesAttributs = MesAttributs Or vbHidden MesAttributs = MesAttributs Or vbReadOnly MesAttributs = MesAttributs Or GetAttr("d:\svg\essai.txt") SetAttr "d:\svg\essai.txt", MesAttributs MesAttributs = 0 MesAttributs = GetAttr("d:\svg\essai.txt") Do While MesAttributs > 0

Int(Log(MesAttr ReadInt =sg

ibuts) / Log(2)) msg = m & Choose(ReadInt + 1, "vbReadOnly", "vbHidden", "vbSystem", "", "", "vbArchive", "vbAlias") & vbNewLine MesAttributs = MesAttributs - 2 ^ ReadInt Loop

ox m MsgBEnd Sub

sg

]#02!6)'!)\)B$>)I!%0!%E'3)0'!6%BB)!&($%02)!v!

!/)>#!13)0'!4=!Q#3'!D=)!>#!'&%323WB)!>3J0)!4)!6%4)!#!#22%63(!>)2!#''&3E='2!4(ip!)\32'#0'2!#=\!#''&3E='2!

#i%='(2!$#&!>)!6%4)*!X#02!6)'')!>3J0)I!>P#''&3E='!#&6G31)!#=&#3'!('(!)QQ#6(*!

! .5

Page 68: Cours VBA débutants.pdf

Kill X=$$&3B)!>)!%=!>)2!Q36G3)&2!)0!Q%06'3%0!4)!>P#&J=B)0'*!KillX3! p #&#6'W&)2!

J(0(

!pathname As String &3B(*! X3I! pathname! 6%0'3)0'! 4)2! 6athname! 4(23J0)! =0! Q36G3)&I! 6)>=3! 63! 2)&#! 2=$$

&3D=)2I!'%=2!>)2!Q36G3)&2!6%&&)2$%04#0'!2)&%0'!2=$$&3B(2*!!

MkDir & RmDir "#!Q%0 '%3&)!4#02!>)!&($)&'%3&)!$#22(!6%BB)!#&J=B)0'I!%=!4#02!>)!>)6')=&!

$#&!

")!&

Pub

6'3%0!Ca]3&!6&()!=0!&($)&4(Q#='!23!>P#&J=B)0'!)2'!%B32*!

&'%3&)!$#22(!)0!#&J=B)0'*!/)>=3o63!$)='!8'&)!=0!6G)B30!&)>#'3Q*!"#!Q%06'3%0!TB]3&!2=$$&3B)!>)!&($)($)&'%3&)!63E>)!0)!4%3'!$#2!6%0')03&!4)!Q36G3)&!03!8'&)!>)!6G)B30!6%=&#0'*!

ir!pathname As String MkDRmDir!pathname As String!")2!4)=\!$&%6(4=&)2!2=31#0')2!3>>=2'&)0'!>)2!B#03$=>#'3%02!4=!2-2'WB)!4)!Q36G3)&*!lic Sub Creation()

Dim Fi ich er As String Fichie =r "d:\user\tutos\codemoteur.txt"

isIf Not oF lderEx t("d:\user\tutos\demo\") Then Di "d:\user\tutos\demo\" Mk r

FileCopy Fichier, "d:\user\tutos\demo\code.txt" ChDrive "D" ChDir "d:\user\tutos\demo\" End If End Sub Public u S b Suppression()

Di If t \demo", vbTextCompare) = 0 Then S rComp(Cur r, "d:\user\tutosim CollFichier As New Collec D tion, NbFichier As Integer, strFichier

As Var nia t NbFichier = ListeFichier(CurDir, CollFichier, "*.*")

If NbFichier > 0 Then For Each strFichier In CollFichier

Next End If

ChDir "d:\user\tutos" RmDir "d:\user\tutos\demo" End If End Sub

")!6%4)!4)!2=$$&)223%0!$%=&&#3'!8'&)!$>=2!23B$>)!$=32D=P3>!2=QQ3&#3'!4)!Q#3&)!v!

Kill strFichier

c3>>!/=&]3&!H!r�*�r!O*S!v!S3)0!D=)!q#!0P#3'!&3)0!p!1%3&!#1)6!>)!2=i)'!D=3!0%=2!30'(&)22)I!1%=2!0%')&)e!D=)!>P(0=B(&#')=&!

strFichi D=)! 0%=2! 2#6G3%02! $)&'30)BB)0'! D=)! >#! 6%>>)6'3%0! 0)!er! )2'! 4(6>#&(! 6%BB)! :#&3#0'! E3)0!6%0'3)0'!D=)!4)2!6G#f0)2*!L0!:SKI!>P(0=B(&#')=&!0)!$)='!8'&)!D=)!4)!'-$)!:#&3#0'!%=!FEi)6'*!

! .9

Page 69: Cours VBA débutants.pdf

Manipulation de fichier ")2!Q%06'3%02!2'#04#&4!4)!B#03$=>#'3%0!4)!Q36G3)&2!$)&B)'')0'!>P#66W2!p!'&%32!

"P#66W2!E30#3&)! !g'3>32(!2=&'%='!$%=&!&(4=3&)!>#!'#3>>)!4)2!Q36G3)&2*!'-$)2!4)!Q36G3)&2!v!

'%3&)! !g'3>32(!$%=&!=0)!B#03$=>#'3%0!$&%6G)!4)2!XbS]*!0'3)>! !bW&)!>)2!Q36G3)&2!')\')*!

W2*!

"P#66W2!#>(# "P#66W2!2(D=)

O%=2! #>>%02! 1%3&! 2=66306')B)0'! >)2! 43QQ(&)0')2! 302'&=6'3%02! )'! Q%06'3%02! 4)! B#03$=>#'3%0! 4)!Q36G3)&2I!$=32!=0!)\)B$>)!4)!>)6'=&)!(6&3'=&)!$%=&!>)2!'&%32!'-$)2!4P#66

L'instruction Open V%=&!$%=1%3&!B#03$=>)&!=0!Q36G3)&I!3>!1#!Q%&6(B)0'!Q#>>%3&!6%BB)06)&!$#&!>P%=1&3&!%=!>)!6&()&*!"P302'&=6'3%0!F$)0!)2'!4)!>#!Q%&B)!v!Open!pathname!For!mode!}Access access~!}lock~!As!}#~filenumber!}LenRreclength~!Fx!

Pa (23J0)!>)!Q36G3)&!p!%=1&3&!%=!p!6&()&!23!>P#&J=B)0'!&)$&(2)0')!=0!Q36G3)&!D=3!0P)\32')!

4! !F=1&)!=0!Q36G3)&!')\')!j2(D=)0'3)>k!)0!B%4)!#i%='! ! !F=1&)!=0!Q36G3)&!!)0!#66W2!E30#3&)!

0!Q36G3)&!)0!#66W2!#>(#'%3&)! Ac 3J0)!>)!'-$)!4P#66W2!$%=&!>)!B%4)!E30#3&)I!')>!D=)!v!

2!>)2!#66W2!#='%&32(2! !:)&&%=3>>(!)0!>)6'=&)! !`&3')! !1)&&%=3>>(!)0!(6&3'=&)!

02! Le ! >%0J=)=&! 4)2! )0&)J32'&)B)0'2! )0! B%4)! #>(#'%3&)! %=! (1)0'=)>>)B)0'! >#! '#3>>)! 4=!

Q36G3)&2! )0! B%4)! #>(#'%3&)! #1)6! >#! '#3>>)! 4)!>P)0&

+* 3'=&)!Open

thname!4$#2!>%&2!4P=0)!%$(&#'3%0!4P(6&3'=&)*!

Mode!4(23J0)!>)!B%4)!4P#66W2!')>!D=)!v!K$$)0S30#&-

70$='! !F=1&)!=0!Q36G3)&!')\')!j2(D=)0'3)>k!)0!B%4)!>)6'=&)! F='$='! !F=1&)!=0!Q36G3)&!')\')!j2(D=)0'3)>k!)0!B%4)!(6&3'=&)! T#04%B! !F=1&)!=

cess!4(2T)#4!

`&3')! T)#4!`&3')!

Lock!4(23J0)!>)2!&)2'&36'3%02!4P#66W2!$%=&!>)2!#='&)2!$&%6)22=2! XG#&)4! !'%="%6a!T)#4!"%6a

"%6a!T)#4!`&3')! !:)&&%=3>>(! Filenumber!)2'!>)!0=B(&%!4)!Q36G3)&!6%B$&32!)0'&)!+!)'!?NN!$%=&!>)2!Q36G3)&2!&)2'&)30'2!)'!)0'&)!?N.!p!N++!$%=&!>)2!Q36G3)&2!#66)223E>)2!#=\!#='&)2!#$$>36#'3%

n! )2'! >#'#B$%0!)0!B%4)!2(D=)0'3)>!

V&(2)0'(!6%B >#I!q#!#!>P#3&!=0!$)=!'%&4=I!6)$)04#0'!1%=2!#>>)e!1%3&!D=)!6P)2'!#22 B$>)*!B)!6) )e!23b(0(&#>)B)0'!%0!='3>32)!4)2! Q36G3)&2! &)2'&)30'2! p! >P#$$>36#'3%0!6)!D=3! Q#3'!D=P%0!0)!$&(632)!$#2! >#!

6>#=2)!Lock*!!")! $#&#BW'&)! Len! 0P)2'! ='3>32(! D=)! $%=&! >)2!)J32'&)B)0'*!/)!D=3!1#!0%=2!&#B)0)&!p!D=)>D=)2!2-0'#\)2I!D=)!0%=2!$%=&&3%02!>32')&!6%BB)!2=3'!v!

F=1&3&!=0!Q36G3)&!')\')!)0!(6& "d:\user\tutos\texte.txt" For Output As #1 ?* F=1&3&!=0!Q36G3)&!')\')!)0!Ki%='!

Open "d:\user\tutos\texte.txt" For Append As #1 0!>)6'=&)!U* F=1&3&!=0!Q36G3)&!')\')!)

Open "d:\user\tutos\texte.txt" For Input As #1 ,* F=1&3&!=0!Q36G3)&!)0!B%4)!#>(#'%3&)!

Open "d:\user\tutos\random.dat" For Random As #1 Len=Len(TypeEnreg) N* F=1&3&!=0!Q36G3)&!E30#3&)!)0!(6&3'=&)!

Open "d:\user\tutos\binaire.dat" For Binary Access Write As #1 .* F=1&3&!=0!Q36G3)&!E30#3&)!)0!>)6'=&)!

Open "d:\user\tutos\binaire.dat For Binary Access Read As #1

! .;

Page 70: Cours VBA débutants.pdf

A134)BB)0'!4#02!6)&'#302!6#2I!3>!)2'!30'(&)22#0'!4)!J(&)&!>)!$#&#BW'&)!LockI!6)!D=3!$%=&&#3'!4%00)&!$#&!Ope)\)B$>)!v!n "d:\user\tutos\texte.txt" For Append Lock Write As #1

FreeFile T)01%3)! >)!$&%6G#30!0=B(&%!4)! Q36G3)&! >3E&)*!"P#&J=B)0'!$#22(!(1)0'=)>>)B)0'!$)&B)'!4)! Q%&6)&!

>P#''&3E='3% 0')!%=!4)!>#!e%0)!%=1)&')*!

Fre-(!2#02!')03&!6%B$')!4)!>#!e%0)I!2P3>!1#='!

+!=0

=4)0'!4P#$$)>)&!>#!Q%06'3%0![&))[3>)!D=)!4P='3>32)&!=0!0=B(&%!)0!4=&*!

0!4P=0!0=B(&%!4)!>#!e%0)!&)2'&)3

eFile}(rangenumber)~!As Integer!X3!rangenumber!)2'!%B32I!>)!$&%6G#30!0=B(&%!2)&#!&)01%!0=B(&%!4)! >#!e%0)!&)2'&)30')!2)&#!&)01%-()!j+!s!?NNkI!2P3>!1#='!?!6)!2)&#!=0!0=B(&%!4)! >#!e%0)!

%=1)&')!j?N.!s!N++k*!7>!)2'!'%=i%=&2!$>=2!$&

Close [)&B)!>)!Q36G3)&!4(23J0(!$#&!>)!0=B(&%!$#22(!6%BB)!#&J=B)0'*!

EOF T)01%3)!1&#3!D=#04!>#!Q30!4P=0!Q36G3)&!%=1)&'!)0!B%4)!2(D=)0'3)>!%=!#>(#'%3&)!)2'!#'')30')*!K'')0'3%0I!>P#&J=B)0'!D=3!4(23J0)!>)!0=B(&%!4)!Q36G3)&!0P#'')04!$#2!>)!6#&#6'W&)!ÑI!%0!4)1&#!4%06!

(6&3&)!LF[j+k!)'!0%0!LF[jÑ+k*!

LOF T)01%3)!>#!'#3>>)!)0!%6')'2!4P=0!Q36G3)&!%=1)&'*!LOF(filenumber As integer) As Long T(6=$(&)&!>#!'#3>>)!4=!Q36G3)&!$)&B)'!4)!6#>6=>)&!!>)!0%BE&)!4P)0&)J32'&)B)0'2!%=!4)!43B)023%00)&!

=0!'#B$%0!4)!&(6)$'3%0*!

Loc T)01%3)! =0)! 1#>)=&! 4)! '-$)! "%0J! 3043D=#0'! >#! $%23'3%0! 4=! 4)&03)&! %6')'! >=! %=! (6&3'! )0! B%4)!

E30#3&)I!%=!4=!4)&03)&!)0&)J32'&)B)0'!>=!%=!(6&3'!)0!B%4)!#>(#'%3&)!

Seek /%BB)!'%='!6)>#!$%=1#3'!$#&#f'&)!'&%$!23B$>)I!3>!)\32')!=0)!302'&=6'3%0!Seek!)'!=0)!Q%06'3%0!Seek*!"#! Q%06'3%0! Seek! Q%06'3%00)! )\#6')B)0'! 4)! >#! B8B)! B#03W&)! D=)! >#! Q%06'3%0! Loc! D=)! 0%=2!

1)0%02!4)!1%3&I!>P302'&=6'3%0!Seek!$)&B)'!4)!4($>#6)&!>#!$%23'3%0!4)!>)6'=&)!4#02!=0!Q36G3)&!%=1)&'*!])!>#!Q%&B)!v!

Seek!}#~filenumber As integerI!position As long Fx!filenumber!)2'!>)!0=B(&%!4)!Q36G3)&!)'!position!>#!$%23'3%0!4)!>)6'=&)!(6&3'=&)!4=!Q36G3)&!%=1)&'*!

Instructions d'écriture ]#02!>)2!Q36G3)&2!')\')I!%0!='3>32)!2%3'!>P302'&=6'3%0!Print!#I!2%3'!>P302'&=6'3%0!Write #.!O%=2! 0P#>>%02! $#2! #E%&4)&! 363! >P='3>32#'3%0! 4)!Print #! 6#&! )>>)! )2'! $>='m'! ='3>32()! $%=&! >)2! 2%&'3)2!

Q%&B#'()2!6)!D=3!0%=2!)0'&#f0)&#3'!=0!$)=!>%30*!"#!Q%06'3%0!Write #!2=3'!>#!Q%&B)!v!Write #filenumberI!}outputlist~!Fx!filenumber!)2'!>)!0=B(&%!4)!Q36G3)&!)'!outputlist!>#!>32')!4)2!)\$&)223%02!p!(6&3&)!4#02!>)!Q36G3)&!

2($#&(3>!4#02!>P#34)!

)0!>X3! outputlist! )2'! %B32I! >P302'&=6'3%0! (6&3'! =0)! >3J0)! 134)! 4#02! >)! Q36G3)&I! >)2! 1#>)=&2! 0=B(&3D=)2!

0P#='%&32)!D=)!>)!$%30'!6%BB)!2($#&#')=&!4(63B#>I!>)2!6G#f0)2!2%0'!)0'%=&()2!4)!J=3>>)B)'2!)'!)0Q30!D=)!>#!Q%06'3%0!302W&)!=0!2#='!4)!>3J0)!p!>#!Q30!4=!4)&03)&!(>(B)0'!4)!outputlist*!

)2!$#&!=0)!13&J=>)*!7>!-!#!4)2!&WJ>)2!4P='3>32#'3%0!4)!>#!Q%06'3%0!Write #!D=)!1%=2!$%=1)e!%E')03&!)0!4('#3J0)I!B#32!#-)e!p!>P)2$&3'!D=)!v!

! 5@

Page 71: Cours VBA débutants.pdf

"P302'&=6'3%0!V='!)2'!='3>32()!$%=&!>P(6&3'=&)!4)2!Q36G3)&2!E30#3&)2!)'!#>(#'%3&)2*!])!>#!Q%&B)!v!

D=#0'!>#!$%23'3%0!4)!(6&3&)*!

('=4)! 4)! 6#2!

Put!}#~filenumberI!}recnumber~I!varname!Fx!filenumber!)2'!>)!0=B(&%!4)!Q36G3)&I!recnumber!=0!#&J=B)0'!Q#6=>'#'3Q!3043

>P%$(&#'3%0!4P(6&3'=&)!)'!varname!>#!1#>)=&!p!O%=2! 1)&&%02! 4)2! )\)B$>)2! 4P='3>32#'3%0! 4)! 6)2! 302'&=6'3%02! 4#02! >)2! 6%4)2! 4)! >P#0'!6)!6G#$3'&)*!6%06>=

Instructions de lecture "#!Q%06'3%0!Input #!)2'!=0!$)=!>#!Q%06'3%0!301)&2)!4)!Write #*!Input!#filenumber, varlist "#! Q%06'3%0! &(6=$W&)!4#02! >)! Q36G3)&! 4)2!1#>)=&2! 2($#&()2!$#&!4)2!13&J=>)2!$%=&! >)2! #Q

1#&3#E>)2!4)!>P#&J=B)0'!varlist*!")2!1#&3#E>)2!4%31)0'!8'&)!6%&&)6')B)0'!'-$()2!)'!>)2!)0'&()2!6%&&)6')B)0'!4(>3B3'()2*!

='!Ñ!>3'!>)!Q

Q)6')&! #=\!4=!Q36G3)&!

36G3)&!$#&!>3J0)!$%=&!#QQ)6')&!>#!>3J0)!>=)!4#02!=0)!1#&3#E>)!4)!'-$)!

I!varname 6'3%0! b)'! >3'! >#! %=! >)2! 4%00()2! 4=! Q36G3)&! %=1)&'! p! $#&'3&! 4)! >#! $%23'3%0! (1)0'=)>>)B)0'!

$)!#>(#'%3&)*!

"#!Q%06'3%0!"30)!70$X'&30J*!!

Line Input #filenumber"#! Q%0

$&(632()!$%=&!>P#QQ)6')&!p!>#!1#&3#E>)!$#22()!)0!#&J=B)0'*!Get!}#~filenumber, }recnumber~, varname L0!B%4)!#>(#'%3&)I!recnumber!6%&&)2$%04!#=!0=B(&%!4P)0&)J32'&)B)0'!#>%&2!D=P)0!B%4)!E30#3&)!3>!

2P#J3'!4)!>P%6')'*!!h)!1%=2!3013')!131)B)0'!p!>3&)!>P#34)!23!1%=2!1%=>)e!B#03$=>)&!4)2!Q36G3)&2!4)!'-

Exemples O%=2!#>>%02! 363!0%=2! >31&)&!p!D=)>D=)2!)\)B$>)2!4)!B#03$=>#'3%02!4)! Q36G3)&2!4#02!431)&2!B%4)!

#Q30! 4)! B3)=\! 6%B$&)04&)! >)! Q%06'3%00)B)0'! 4)2! #66W2! #=\! Q36G3)&2*! O%'&)! Q36G3)&! L\6)>! )2'! 4)! >#!Q%&B)!2=31#0')!v!

!O%=2!#>>%02!2'%6a)&!)'w%=!&)>3&)!2)2!4%00()2!)0!='3>32#0'!6)!D=)!0%=2!1)0%02!4)!1%3&*!/%BB)0q%02!$#&!6%01)&'3&!6)!Q36G3)&!L\6)>!)0!Q36G3)&!')\')*!

! 5+

Page 72: Cours VBA débutants.pdf

")!6%4)!>)!$>=2!23B$>)!2)&#3'!v!Private Const Chemin As String = "D:\user\tutos\excel\" Public Sub EcrireFichierTexte() Dim NumFichier As Integer, compteur As Long NumFichier = FreeFile Open Chemin & "texte.txt" For Output As #NumFichier For compteur = 3 To Range("data").Rows.Count + 2 Write #NumFichier, Cells(compteur, 1).Value, Cells(compteur, 2).Value, Cells(compteur, 3).Value, Cells(compteur, 4).Value, Cells(compteur, 5).Value, Cells(compteur, 6).Value, Cells(compteur, 7).Value, Cells(compteur, 8).Value, Cells(compteur, 9).Value, Cells(compteur, 10).Value Next compteur Close #1 End Sub

")!6%4)!)2'!23B$>)!p!(6&3&)I!$#2! '&%$!>323E>)!)'! >)!Q36G3)&!&(2=>'#0'!)06%&)!B%302I!6)!D=3!0P)2'!$#2!23!6P)2'!$%=&! >P='3>32)&!#1)6!L\6)>!$=32D=)!6%BB)!0%=2! >)!1)&&%02!4#02! >P('=4)!4=!B%4W>)!E3)0!J&#1)!

%Ei)'! L\6)>I! 3>! )\32')! 4)2! B('G%4)2! 30'(J&()2! $%=&! >3&)! 43&)6')B)0'! 6)! '-$)! 4)! Q36G3)&*! V#&! 6%0'&)!>P(6&3'=&)!4P=0)!Q%06'3%0!2)&#3'!=0!$)=!$>=2!6%B$>)\)!$=32D=)!2P3>!)2'!$%223E>)!4P#QQ)6')&!43&)6')B)0'!4)2!1#>)=&2!4)!6)>>=>)2!4#02!>P302'&=6'3%0!Write #I!6)>#!0P)2'!$#2!#='%&32(!#1)6!Input #*!

7>! )\32')! $>=23)=&2! Q#q%02! 4)! 6%0'%=&0)&! 6)! $&%E>WB)*! b>%E#>)B)0'I! 3>! )\32')! '&%32! 2%>='3%02! 4)!>)6'=&)!4=!Q36G3)&I!4%00()!$#&!4%00()I!>3J0)!$#&!>3J0)!%=!>)6'=&)!=03D=)*!

!T)J#&4%02! 4P#E%&4! >#! $&)B3W&)! 2%>='3%0*! /)>>)o63! &)$%2)! 2=&! >)! Q#3'! D=)! 0%=2! 6%00#3223%02!J>%E#>)B)0'!>)!Q%&B#'!4)!Q36G3)&I!0%'#BB)0'!>)!Q#3'!D=P3>!-!#3'!43\!6%>%00)2!4)!1#>)=&2*!O%=2!$%=&&3%02!#>%&2!(6&3&)!v!Public Sub LireFichierTexte() Dim NumFichier As Integer, cmptLigne As Long, cmptCol As Long, Recup As Variant NumFichier = FreeFile Open Chemin & "texte.txt" For Input As #NumFichier With Worksheets("Feuil1").Range("A1") Do Until EOF(1) Input #Nu

et(cmmFichier, Recup

.Offs cmptCo

ptLigne, cmptCol).Value = Recup l = cmptCol + 1

If cmptCol > 9 Then cmptCol = 0

cmptLigne = cmptLigne + 1 End If

Loop End With Close #1 End Sub

S3)0!D=)!Q%06'3%00)>I!6)!6%4)!$&(2=$$%2)!=0!Q%&B#'!6)!D=3!)2'!'%=i%=&2!=0!$)=!4#0J)&)=\*!O%=2!#>>%02! 4%06! $&(Q(&)&! =0)! >)6'=&)! J>%E#>)I! $>=2! &#$34)! D=P=0)! #$$&%6G)! $#&! >3J0)! )'! D=3! )>>)! 0)!$&(2=$$%2)! $#2! 4)! Q%&B#'*!O%=2! #>>%02! $%=&! 6)>#! ='3>32)&! >#! Q%06'3%0! X$>3'! D=3! 4(6%=$)! 4)2! 6G#f0)2!2)>%0! =0! 2($#&#')=&*! /)'')! Q%06'3%0! 2)&#! ('=43()! =0! $)=! $>=2! >%30! >%&2! 4)! >P('=4)! 4)2! Q%06'3%02! 4)!6G#f0)2*!

! 5?

Page 73: Cours VBA débutants.pdf

Public Sub LireFichierTexte() Dim NumFichier As Integer, TabLigne() As String, tabCol() As String,

Recup As String m cmpt1 As Long, cmpt2 As Long Di

NumFichier = FreeFile Open Chemin & "texte.txt" For Binary Access Read As #NumFichier Recup = String(LOF(NumFichier), " ")

, Recup Get #NumFichier, Close #NumFichier With Worksheets("Feuil1").Range("A1") TabLigne = Split(Recup, vbCrLf) For cmpt1 = 0 To UBound(TabLigne) tabCol = Split(TabLigne(cmpt1), ",") For cmpt2 = 0 To UBound(tabCol) .Offset(cmpt1, cmpt2).Value = tabCol(cmpt2) Next cmpt2 Next cmpt1 End With End Sub

X3!1%=2!&)J#&4)e!>)2!>3J0)2!4)!>)6'=&)!4=!Q36G3)&I!1%=2!#>>)e!1%=2!43&)!D=)!i)!1%=2!$&)042!$%=&!4)2!B%0! B%4)! ')\')! #>%&2! D=)! iP)QQ)6'=)! =0)! >)6'=&)! E30#3&)! 4=! Q36G3)&*! V%=&! $%=1%3&!

)! Q36G3)&! )0! =0)! 2)=>)! &(6=$(&#'3%0I! 6P)2'! $%=&'#0'! >#! B('G%4)! >#! $>=2! 23B$>)*! F0!43B !6G#&J)!'%='!>)!Q36G3)&!4#02!6)!'#B$%0*!

4=! Q36G3)&! ')\')! $%=&! #=JB)0')&! >#! >323E3>3'(! 4)!

03&!00()2!p!2#=1)J#&4)&*!A134)BB)0'I!6P)2'!>)!6#2!4#02!0%'&)!)\)B$>)!')!4#02!=0!'-$)!='3>32#')=&*!

i#BE%02! #1)6!&(6=$(&)&! >

)023%00)!=0!'#B$%0!4)!>#!'#3>>)!4=!Q36G3)&!)'!%07>! -! #! (134)BB)0'! 4P#='&)2! ')6G03D=)2! 4P(6&3'=&)!

6)>=3o63!%=!$%=&!6%0'%=&0)&!>)2!$&%E>WB)2!4)!2($#&#')=&!B#32!6)63!2%&'!4=!6#4&)!4)!0%'&)!6%=&2*!#3>!)0!B%4)!#>(#'%3&)*!/)>=3o63!0P#!4)!2)02!D=)!23!1%=2!$%=1)e!%E')T)J#&4%02!B#30')0#0'!>)!'&#1

=6'=&)!&($('#E>)!4#02!>)2!4%=0)!2'&$=32D=)!6G#D=)!>3J0)!$)='!8'&)!4(6&3Public Type Enregistrement LaDate As Date Temp1 As Single Temp2 As Single Temp3 As Single Temp4 As Single Vitesse As Integer Status As Boolean Polluant As Byte RPAM As Long End Type

:%=2! 0%')&)e! D=)! 0%'&)! '-$)! 0P#! D=)! 0)=Q! 6G#B$2! #>%&2! D=)! >)! Q36G3)&! p! +@! 6%>%00)2*! V%=&! 4)2!!$&)B3)&2!6G#B$2!)0!=0!2)=>!&#32%02!4)!'#3>>)!)'!4)!23B$>363'(I!0%=2!#1%02!'%='!30'(&8'!p!&(=03&!>)2!4)=\

$=32D=)!>)2!4)=\!30Q%&B#'3%02!$)=1)0'!8'&)!6%0')0=)2!4#02!>)!B8B)!6G#B$*!

! 5U

Page 74: Cours VBA débutants.pdf

g0)!Q%32!>)!'-$)!6&((I!>)!6%4)!4P(6&3'=&)!)2'!)\'&8B)B)0'!23B$>)*!Public Sub EcrireFichierAleatoire() Dim NumFichier As Integer, compteur As Long, MyEnr As Enregistrement NumFichier = FreeFile Open Chemin & "aleatoire.dat" For Random As #NumFichier Len = Len(MyEnr) For compteur = 3 To Range("data").Rows.Count + 2 With MyEnr .LaDate = Cells(compteur, 1).Value + Cells(compteur, 2).Value .Temp1 = Cells(compteur, 3).Value .Temp2 = Cells(compteur, 4).Value .Temp3 = Cells(compteur, 5).Value .Temp4 = Cells(compteur, 6).Value .Vitesse = Cells(compteur, 7).Value .Status = Cells(compteur, 8).Value .Polluant = Cells(compteur, 9).Value .RPAM = Cells(compteur, 10).Value End With Put #NumFichier, , MyEnr Next compteur Close #NumFichier End Sub

3B$>)*!")! )Public u

6%4 !4)!&)>)6'=&)!2)&#3'!'%='!#=223!2 S b LireFichierAleatoire()

Di N As Long, MyEnr As Enregistrement m umFichier As Integer, compteur Di Nm bEnr As Integer Nu imF chier = FreeFile Open Chemin & "aleatoire.dat" For Random As #NumFichier Len = Len(My rEn ) NbEnr = LOF(1) \ Len(MyEnr) Fo c

Get #NumFichier, , MyEnr With Worksheets("Feuil1") .Cells(compteur, 1).Value = DateValue(MyEnr.LaDate) .Cells(compteur, 2).Value = TimeValue(MyEnr.LaDate) .Cells(compteur, 3).Value = MyEnr.Temp1

r ompteur = 1 To NbEnr

.Cells(compteur, 4).Value = MyEnr.Temp2 .Cells(compteur, 5).Value = MyEnr.Temp3 .Cells(compteur, 6).Value = MyEnr.Temp4 .Cells(compteur, 7).Value = MyEnr.Vitesse .Cells(compteur, 8).Value = MyEnr.Status .Cells(compteur, 9).Value = MyEnr.Polluant .Cells(compteur, 10).Value = MyEnr.RPAM End With Next compteur Close #NumFichier End Sub

O%'%02!'%=')Q%32!D=)!2'&=6'=&)&!>)2!4%00()2!$%=&!>)!B%4)!#>(#'%3&)!0P#!$#2!')>>)B)0'!4)!2)02!$%=&!)QQ)6'=)&!=03D=)B)0'!=0!'&#1#3>!4)!>)6'=&)!w!(6&3'=&)!4#02!L\6)>*!")!B%4)!#>(#'%3&)!$&(2)0')!2=&'%='!=0!30'(&8'!$#&6)!D=P3>!)2'!$%223E>)!4)!>3&)!%=!(6&3&)!Q#63>)B)0'!=0!)0&)J32'&)B)0'!2#02!4)1%3&!#J3&!2=&!'%='!>)!Q36G3)&*!

!"P)\)B$>)!2=31#0'!1#!0%=2!(6#&')&!4=!2=i)'!4)!E#2)I!23!1%=2!4(E=')e!>)!:SK!1%=2!$%=1)e!6%0'30=)&!p!>P('=4)!4)2!Q%06'3%02!4P30Q%&B#'3%0*!

! 5,

Page 75: Cours VBA débutants.pdf

F0! ='3>32)! 4)! B%302! )0! B%302! >)2! Q36G3)&2! 2%=2! Q%&B)! E30#3&)I! $%=&'#0'! 6)>#! $)='! $&(2)0')&! =0!(0(&#>)B)0'!$%=&!43B30=)&!>#!'#3>>)!4=!Q36G3)&!#Q30!4P#>>(J)&!>#!6G#&J)!4)!2#!)0!>P#E2)06)!4=!6%4)!4)!6%4#J)w4(6%4#J)I!>)2!4%00()2!D=P3>!6%0'3)0'!2%0'!

! #>>%02! 0%=2! >31&)&! 363! p! =0! $)'3'! )\)&636)! 4)! 2'->)! D=3! 1#! 0%=2! $)&B)''&)! 4)!6%4)!#$$>3D=(*!6)!6%BB)!2%=1)0'!4#02! >)!4(1)>%$$)B)0'!1#!6%0232')&!p!%E2)&1)&!)'! &(Q>(6G3&*!&! )QQ36#6)B)0'!4#02! >)! 2)02!D=3!0%=2!6%013)0'I! )0! >P%66=&&)06)!$%=&! &(4=3&)! >#!='!E3)0!#1%3&!p!>P)2$&3'!>#!'#3>>)!4)2!'-$)2!4)!4%00()2*!(63Q36#'3%02!$%=&!>P(6&3'=&)!4P=0!Q36G3)&!E30#3&)*!:%=2!$%=1)e!='3>32)&!0P3B$%&')!)!$%=&!$)=!D=)!1%=2! 2%-)e! 6#$#E>)!4)!4(6%4)&! 2#02!$)&')!4P30Q%&B#'3%0*!")2!2)02P!4#02!=0!Q36G3)&!E30#3&)!$=32D=P%0!0)!&#32%00)!30!Q30)!D=)!2=&!4)2!%6')'2*!

! $&)B3W&)! 6%02'#'#'3%0! D=3! 2P3B$%2)! )2'! D=)! >#! 4#')! 0)!

)!>3J0)!%0!

#'=&)2!2=31#0')2!$&(2)0')0'!>)2!B8B)2!6#&#6'(&32'3D=)2*!7>!2P#J3'!4)!02! >#!

23%0!0P)2'!i#B#32!30Q(&3)=&)!p!>#!2!4P)06%4#J)*!

$(&#'=&)!r<r!jS-')k!0')J)&k!

6%&&3J()2!j70')J)&k!

2!E%%>()00)2I!D=3!0%&B#>)B)0'!! 0%=2! >P#1%02! 1=! #1)6! >)2! B#2D=)2! E30#3&)2I! 3>! )2'!

36G3)&! 2)&#! 4%06!

30'(&8'!6)&'#30*!F0!>P='3>32)!J#&6)!D=P6%BB=036#'3%0I!)'!$

30)\$>%3'#E>)2*! O%=2B#03$=>)&!=0!$)=!4)!

")!$&)B3)&!)\)&63V%=&!$%=1%3&! '&#1#3>>)'#3>>)!4)!2'%6a#J)I!3>!Q#

7>!0P)\32')!$#2!4)!2$)!4)! 6%4#JD=)>!$&3063$

00()2!0P%0'!$#2!4)!P4%X3! 0%=2! %E2)&1%02! >)! Q36G3)&! )\)B$>)I! >#

6G#0J)! $#2! )'! D=)! 6G#D=)! >3J0)! )2'! 2($#&()! 4P=0)! 2)6%04)! 4)! >#! $&(6(4)0')*! K='&)B)0'! 43'I! )0!6%00#322#0'!>#!4#')!)'!>)!')B$2!4)!4($#&'I!>P(6#&'!4)!')B$2!)0'&)!4)=\!>3J0)2!)'!>)!0%BE&)!4

ip!&((6&3&)!)0'3W&)B)0'!>)2!4)=\!$&)B3W&)2!6%>%00)2*!$)='!4(")2!D=#'&)!6%>%00)2!4)!')B$(&

6G3QQ&)2! 4(63B#=\! p! =0! 6G3QQ&)! #$&W2! >#! 13&J=>)I! &)>#'31)B)0'! $)'3'2! jy+@@k*! X3! 0%=2! %E2)&1%0'! $)=! j !y! +Nk*!L0Q30!4#02! >#!6%>%00)!13')22)I! 0%=2! 6%02'#'%02! D=P3>! 2P#J3'! 4)! 0%BE&)2! )0'3)&2! 1#&3#

3)&!&)>#'31)B)0'!J&#04!B#32!4%0'!>#!$&(634)&03W&)!6%>%00)I!3>!2P#J3'!4P)0'6)0'#30)*!K1)6!'%='!6)>#I!0%=2!#>>%02!$%=1%3&!4(Q303&!0%2!&WJ>)

O%'&)!Q36G3)&!1#!4%06!6%BB)06)&!$#&!=0)!>3J0)!4P)0'8')!6%0')0#0'!v! ")!0%BE&)!4)!>3J0)!j70')J)&k!

H!>PG)=&)!4=!$&)B3)&!$#2!j]%=E>)k! "#!4#')! "#!Q&(D=)06)!4)2!$#2!jS-')k*!

2!4)!')B ")!43132)=&!4)2!6%>%00) "#!1#>)=&!B303B=B!4=!&(J3B)!j7 ")!B=>'3$>36#')=&!TVKC!jS-')k*!

"P(6&3'=&)!2)!Q)&#!)02=3')!$#&!>3J0)I!6%BB)!2=3'!v! <)B$+I!<)B$?I!<)B$UI!<)B$,! !13')22)!jS-')k! V%>>=#0'2!jS-')k! TVKC!6%&&3J()!j70')J)&k!

T)2')!p!'&#3')&!>)!6#2!4)!>#!1%3)!X'#'=2*!/)>>)o63!6%0'3)0'!4)2!1#>)=&2)! 2'%6a)0'! 2=&! 4)=\! %6')'2*! /)$)04#0'I! 6%BB)$#&Q#3')B)0'! $%223E>)! 4)! 2'%6a)&! G=3'! 1#>)=&2! E%%>()00)2! 4#02! =0! %6')'*!"#! Q30! 4=! Q6%B$%2()!4)2!1#>)=&2!4)!>#!6%>%00)!X'#'=2!&)J&%=$()2!$#&!9*!

! 5N

Page 76: Cours VBA débutants.pdf

")!6%4)!4P(6&3'=&)!4=!Q36G3)&!1#!8'&)!v!Private Enum Masque Ligne1 = 1 Ligne2 = 2 Ligne3 = 4 Ligne4 = 8 Ligne5 = 16 Ligne6 = 32 Ligne7 = 64 Ligne8 = 128 End Enum Public Sub EcrireFichierBinaire() Dim NumFichier As Integer, compteur As Long Dim MinRegime As Integer, Status As Masque, NbLigne As Integer NumFichier = FreeFile Open Chemin & "bi

****écnaire.dat" For Binary Access Write As #NumFichier

'********** riture de l'entête************ 'nombre de lignes NbLigne = CInt(Range("data").Rows.Count) Put #NumFichier, , CInt(Range("data").Rows.Count) 'date de départ Put #NumFichier, , CDbl(Cells(3, 1).Value + Cells(3, 2).Value) 'Fréquence Put #NumFichie

seur Tempr, , CByte(1)

'Divi Put #N

érature umFichier, , CByte(10) 'Regime minimum MinRegime = Application.Works heetFunction.Min(Range("Data").Offset(, 6).Resize(, 1)) Put #NumFichier, , MinRegime 'Multiplicateur RPAM Put #NumFichier, , CByte(100) '**************fin écriture de l'entête************ '**************écriture des données************ For compteur = 3 To NbLigne + 2 'températures *10

Value * 10) Put #NumFichier, , CInt(Cells(compteur, 3).r, , CInt(Cells(compteur, 4).V Put #NumFichie alue * 10)

Put #NumFichier, , CInt(ier, , CInt(

Cells(compteur, 5).Value * 10) Put #NumFich Cells(compteur, 6).Value * 10) 'Delta regime

mFichier, , CByte Put #Nu (Cells(compteur, 7).Value - MinRegime) 'le status sera traité après 'polluants Put #NumFichier, , CByte(Cells(compteur, 9).Value) 'RPAM / 100 Put #NumFichier, , CInt(Cells(compteur, 10).Value \ 100) Next compteur 'début du traitement de la voie status, regroupement par 8 valeurs

! 5.

Page 77: Cours VBA débutants.pdf

For compteur = 3 To NbLigne + 2 Step 8 With Cells(compteur, 8)

s If .Value Then Status = Statu Or Ligne1 If .Offset(1).Value Then Status = Status Or Ligne2 If .Offset(2).Value Then Status = Status Or Ligne3 If .Offset(3).Value Then Status = Status Or Ligne4 If .Offset(4).Value Then Status = Status Or Ligne5 If .Offset(5).Value Then Status

us= Status Or Ligne6

If .Offset(6).Value Then Stat = Status Or Ligne7 If .Offset(7).Value Then Status = Status Or Ligne8 End With Put #NumFichier, , CByte(Status) Status = 0 Next compteur Close #NumFichier End Sub

L'!>)!6%4)!4)!>)6'=&)!v!Private Enum Masque Ligne1 = 1 Ligne2 = 2 Ligne3 = 4 Ligne4 = 8 Ligne5 = 16 Ligne6 = 32 Ligne7 = 64 Ligne8 = 128 End Enum Public Sub LireFichierBinaire() Dim NumFichier As Integer, compteur As Long, RecupInt As Integer, RecupByte As Byte Dim MinRegime As Integer, Status As Masque, NbLigne As Integer Dim Frequence As Byte, DivTemp As Byte, MultRPAM As Byte, DateDep As Date NumFichier = FreeFile Open Chemin & "binaire.dat" For Binary Access Read As #NumFichier '**************lecture de l'entête************ 'nombre de lignes Get #NumFichier, , NbLigne 'date de départ Get #NumFichier, , DateDep 'Fréquence

Frequence Get #NumFichier, , Températu 'Diviseur re

Get #NumFichier, , 'Regime minimum

DivTemp Get #NumFichier, , MinRegime 'Multiplicateur RPAM Get #NumFichier, , MultRPAM '**************fin lecture de l'entête************

! 55

Page 78: Cours VBA débutants.pdf

'**************lecture des données************** W 1) ith Worksheets("Feuil1").Cells(1,

For compteur = 0 To NbLigne - 1 'reconstruction du temps

.Offset(compteur, 0).Value = DateValue(DateDep) .Offset(compteur, 1).Value = DateAdd("s", compteur * Frequence, Ti (DatemeValue Dep)) 'récupé des temp es

.Offset(c ur, 2).V RecupInt / DivTemp

.Offset(c ur, 3).V RecupInt / DivTemp

.Offset(c ur, 4).V RecupInt / DivTemp

.Offset(c ur, 5).V RecupInt / DivTemp 'récupéra de la vi Get #NumF r, , Rec

'on ignor tus pour tant 'pollua Get #Nu r, , RecupByt

ration ératur Get #NumFichier, , RecupInt ompte alue = Get #NumFichier, , RecupInt ompte alue = Get #NumFichier, , RecupInt ompte alue = Get #NumFichier, , RecupInt ompte alue = tion tesse ichie upByte .Offset(compteur, 6).Value = MinRegime + RecupByte e sta l'ins nts mFichie e .Offset(compteur, 8).Value = RecupByte 'RPAM Get #NumFichier, , RecupInt .Offset(compteur, 9).Value = CLng(RecupInt) * MultRPAM Next compteur

For compteur = 0 To NbLigne - 1 Step 8 Get #NumFichier, , RecupByte Status = RecupByte

.Offset(compteur, 7).Value = 1 Else If Status And Ligne1 Then

fset(compteur, 7).Value = 0 .Of If Status And Ligne2 Then .Offset(compteur + 1, 7).Value = 1

e .Offset(compteur + 1, 7).Value = 0 Els tus And Ligne3 Then .Offset(compteur + 2, 7).Value = 1 If StaElse .Offset(compteur + 2, 7).Value = 0 ur + 3, 7).Value = 1 If Status And Ligne4 Then .Offset(compte

lue = 0 Else .Offset(compteur + 3, 7).Va atus And Ligne5 If St Then .Offset(compteur + 4, 7).Value = 1 e .Offset(compteur + 4, 7).Value = 0 Els

If Status And Ligne6 Then .Offset(compteur + 5, 7).Value = 1 Else .Offset(compteur + 5, 7).Value = 0 If Status And Ligne7 Then .Offset(compteur + 6, 7).Value = 1 Else .Offset(compteur + 6, 7).Value = 0 If Status And Ligne8 Then .Offset(compteur + 7, 7).Value = 1 Else .Offset(compteur + 7, 7).Value = 0 Next compteur End With Close #NumFichier End Sub

"#! '#3>>)! 4=! Q36G3)&! E30#3&)! #3023! %E')0=! )'! 630D! Q%32! $>=2! $)'3')! D=)! 6)>>)! 4=! Q36G3)&! ')\')!$&(6(4)BB)0'!1=I!$%=&!=0!'&#3')B)0'!B303B=B*!

! 59

Page 79: Cours VBA débutants.pdf

Fonctions d'informations 2!1#&3#0'2!!/)2! Q%06'3%02! &)J&%=$)0'!$&3063$#>)B)0'! >)2! Q%06'3%02!4P34)0'3Q36#'3%0!4)! 2%=2! '-$)!4)

%=!4)!'-$)!4P=0)!)\$&)223%0I!4(6&3')2!4#02!>)!'#E>)#=!63o4)22%=2*!!m de la No

fonction rray :#&3#E>)! S%%>()0!

Argument Type renvoyé Commentaire

IsA :&#3!23!>#!1#&3#E>)!)2'!=0!'#E>)#=*!IsDate L\$&)223%0! S%%>()0! :&#3!23!>P)\$&)223%0!$)='!8'&)!30')&$&('()!6%BB)!

=0)!4#')!IsEmpty L\$&)223%0! S%%>()0! :&#3! 23! >P)\$&)223%0! &)01%3)! LB$'-! %=! 23! >#!

1#&3#E>)!0P#!$#2!('(!303'3#>32()!IsError 3%0! S%%>()0! :&#3!23!>P)\&)223%0!)2'!=0)!1#>)=&!4P)&&)=&!L\$&)22

IsM Q6=>'#'3Q!)2'!B#0D=#0'!!issing K&J=B)0'! S%%>()0! :&#3!23!>P#&J=B)0'!I %>()0! :&#3!23!>P)\$&)223%0!1#='!O=>>!sNull L\$&)223%0! S%

IsNumeric L\$&)223%0! S%%>()0! :&#3! 23! >P)\$&)223%0!$)='! 8'&)! 30')&$&('(! 6%BB)!=0!0%BE&)!

IsObject L\$&)223%0! S%%>()0! :&#3!23!>P)\$&)223%0!)2'!=0!%Ei)'!Typ T)01%3)!>)!0%B!4=!2%=2!'-$)!4)!>#!1#&3#E>)!eName :#&3#E>)! X'&30J!VarType :#&3#E>)! )j30'k T)01%3)!=0)!6% !>)!2%=2!'-$)!

4)!>#!1#&3#E>)!:E:#&<-$ 02'#0')!)0'3W&)!2)>%0

Fonctions de couleur")2!6% !>)!B%4)!TbS!jT)4!b&))0!S>= P)2'opo43&)!%x!6G#D=)!6%=34)0'3Q3()!$#&!=0 &)!4(Q303)!$#&!>P30')023'( !2)2!6%B$%)'!E>)=)2*!/ !$)='!$&)04& '!?NN*!F0!6=0):#>)=&!R !.NNU.!�!S>)=!

=>)=&2!2%0'!J(&()2!2)>%0 )kI!6 >)=&!)2'!

)!1#>)=&!)0'3W !&)>#'31)!4) 2#0')2!&%=J)2I!1)&')2!G#D=)!6%B$%2#0') )!=0)!1#>)=&!)0'&)!@!) #>6=>)!p!$#&'3&!4)!6)>#!

!1#>)=&!)0'3W&)!j4)!'-$)!"%0Jk!')>>)!D=)!v!!T%=J)!t!?N.!�!:)&'!t

F0!&)$&(2)0')!2%=1)0'!6)'')!1#>)=&!)0!G)\#4(63B#>!$=32D=)!4=!Q#3'!4)2!4(6#>#J)2!4)!?N.I!%0!$)='!1%3&!>)2!1#>)=&2!4)2!6%B$%2#0')2!i=2')!)0!>32#0'!>#!1#>)=&!G)\#*!!

QBColor T)01%3)!=0)!6%=>)=&!$&(4(Q303)!)0!Q%06'3%0!4)!>P#&J=B)0'!$#22(*!QBColor(color As Integer) As Long "P#&J=B)0'!color!4%3'!8'&)!6%B$&32!)0'&)!@!)'!+N*!

QB Long Hex0 0 01 8388608 8000002 32768 8000

1376 808000

32896 80806 C0C0C0

4 808080

0

23

5

3 8424 128 805 8388736 800080678

1263225842150

9 16711680 FF0000111

65280 FF0016776960 FFFF00

1 255 FF114

16711935 FF00FF65535 FFFF

1 16777215 FFFFFF !

! 5;

Page 80: Cours VBA débutants.pdf

RGB T)01%3)!=0)!1 %=>)=&! %0 #22()2!)0!#&J=B)0'*!RGB(red As en As geX3!=0!#&J=B 1#>)=&!?NN!

Fonct ter ti/)2!Q%06'3 2!Q% '3% ='&)2!$&%J&#BB)2!%=!>)!

2-2'WB)*! "#! $ >>)2 ') !A1)0'=)>>)B)0'!0%=2!>)2!4('#3>>)&%02!$#&!>#!2=3')!23!0%=2!)0!#1%02!E)2%30*!

Environ

#>)=&!4)!6 )0!Q 6'3%0!4)2!'&%32!6%B$%2#0')2!$Integer, gre Inte r, blue As Integer) As Long!)0'!4($#22)!>#! 3>!)2'!&#B)0(!p!6)'')!1#>)=&*!

ions d'in ac ons %02!&)J&%=$)0'! >) 06 02!4P30')&#6'3%0!#1)6!>P='3>32#')=&I!4P#>=$#&'! 4P)0'&)! ) ! 2%& 0'! 4=! 6#4&)! 4)! 6)! 6%=&2! )'! 0)! 2)&%0'! $#2! ('=43()2! 363*

T)01%3)!>#!1#>)=&!4P=0)!4)2!1#&3#E>)2!4P)013&%00)B)0'!4=!2-2'WB)*!!Environ(envstring) As Variant "P#&J=B)0'!)012'&30J!)2'!>)!0%B E&)!D=3!

&)$&(2)0')! >#! $%23'3%0! 4)! >#! 1#&3#E>)! 4#02! >#! '#E>)! 4P)013&%00)B)0'*! ")2! 1#&3#E>)2! $)=1)0'! 43QQ(&()2!4P=0!$%2')!p!>P#='&)I!23!=0)!1#&3#E>)!0P 0 0=>>)!2)&#!&)01%-()*!

d=)>D=)2!)\)B$>)2!4P#&J=B)0'! !K""gXLTXVTF[7"L! K ! /%BB%0V&%J&#B[3>)2!/FCVg<LTOKCL! /%BX$)6! [VÖOFÖ_FX<Ö/_L/c!_FCL]T7:L! _FCLVK<_! "FbFOXLT:LT!OgCSLTÖF[ÖVTF/LXXFTX! FX! V#'G!VK<_LM<! V XFTÖKT/_7<L/<gTL! VTF/LXXFTÖ7]LO<7[7LT!VTF/LXXFTÖ"L:L"! VTF/LXXFTÖXLXX7FOOKCL! X -2')BT%%'!<LC

gXLTVTF[7"L! Y3043&!

!4)!>#!1#&3#E>)!4(23&()*!7>!$)='!8'&)!(1)0'=)>>)B)0'!=0!0%B

)2'!$#2!'&%=1()I!=#66)$'(2!v

)!6G#f0)!4)!>%0J=)=&!

VV]K<K

TF/LXTL:7X7FO! V&%J&#B[3>)2!

-2')B]&31)! XV! <CV! gXLT]FCK7O!

gXLTOKCL!

InputBox KQQ36G)!=0)!E%f')!4)!2#323)!p!>P='3>32#')=&!)'!&)01%3)!>#!2#323)!(1)0'=)>>)*!

134)*!O%=2!=0)!#='&)!

InputBox(prompt}I!title~!}I!default~!}I!xpos~!}I!ypos~Z) As Variant Fx!prompt!)2'!>)!B)22#J)!#QQ36G(!4#02!>#!E%f')I!Title!2%0!'3'&)I!default! >#!1#>)=&!$#&!4(Q#='!4)!>#!

e%0)!4)!2#323)I!xpos!>#!$%23'3%0!)0!#E26322)!4P#QQ36G#J)!4)!>#!E%f')!)'!ypos!>#!$%23'3%0!)0!%&4%00()*!!O%')e!D=)!23!>P='3>32#')=&!6>3D=)!2=&!>)!E%='%0!#00=>)&I!>#!Q%06'3%0!&)01)&&#!=0)!6G#f0)!

0P3&%02!$#2!$>=2!>%30!4)!>P('=4)!4)!6)'')!Q%06'3%0!6#&!0%=2!1)&&%02!D=)!>)!B%4W>)!L\6)>!Q%=&03'!Q%06'3%0!70$='S%\!$>=2!30'(&)22#0')*!

MsgBox KQQ36G)!=0)!E%f')!4)!B)22#J)!p!>P='3>32#')=&*!

x(prompt}I!buttons~!}I!title~!Z) As VbMsgBoxResult !)2'!>)!B)22#J)!#QQ36G(!4#02!>#!E%f')I!Title!2%0!'3'&)*!"P#&J=B)0'!buttons!)2'!=0!B#2D=)!

E30#3&)!#66)$'#0'!>)2!(>(B)0'2!2=31#0'2!v!

MsgBoFx!prompt

Constante Valeur Description

vbOKOnly! @! KQQ36G)!>)!E%='%0!OK!=03D=)B)0'*!

vbOK n +! KQQ36G)!>)2!E%='%02!OK!)'!Annuler*!Ca cel!

vbAbortRetryIgnore! ?! KQQ36G)!>)!E%='%0!AbandonnerI!Réessayer!)'!Ignorer*!

vbYesNoCancel! U! KQQ36G)!>)2!E%='%02!OuiI!Non!)'!Annuler*!

vbYesNo! ,! KQQ36G)!>)2!E%='%02!Oui!)'!Non*!

vbRetryCancel! N! KQQ36G)!>)2!E%='%02!Réessayer!)'!Annuler*!

! 9@

Page 81: Cours VBA débutants.pdf

Constante Valeur Description

vbCritical! +.! KQQ36G)!>P36m0)!Message critique*!

vbQuestion! U?! KQQ36G)!>P36m0)!Requête d'avertissement*!

vbExclamation! ,9! KQQ36G)!>P36m0)!Message d'avertissement*!

vbInformation! .,! KQQ36G)!>P36m0)!Message d'information*!

vbDefaultButton1! @! ")!$&)B3)&!E%='%0!)2'!>)!E%='%0!$#&!4(Q#='*!

vbDefaultButton2! ?N.! ")!4)=\3WB)!E%='%0!)2'!>)!E%='%0!$#&!4(Q#='*!

vbDe ! N !E%='%0!)2'!>)!E%='%0!$faultButton3 +?! ")!'&%323WB) #&!4(Q#='*!

vbDefaultButton4! 5.9! ")!D=#'&3WB)!E%='%0!)2'!>)!E%='%0!$#&!4(Q#='*!

"#!&($%02) )!)0'3W&)!4)!>P(0=B(&!2)&#!=0)!6%02'#0' #'3%0!VbMsgBoxResult ')>>)!D=)!v!Constant Description

vbOK! 1 OK

vbCancel! 2 Annuler

vbAbort! 3 Abandonner

vbRetry! 4 Réessayer

vbIgnore! 5 Ignorer

e Valeur

vbYes! 6 Oui

vbNo! 7 Non

/)'')!Q%06'3%0!$)&B)'!4%06!4P#QQ36G)&!'%=2!'-$)2!4)!B)22#J)2!)'!4P%&3)0')&!>)!6%4)!)0!Q%06'3%0!4=!E%='%0!6>3D=(!>)!6#2!(6G(#0'*!Public Sub TestMsg() Dim Reponse As VbMsgBoxResult MsgBox "Il fait beau", vbInformation + vbOKOnly, "Boîte 1" If MsgBox("voulez vous continuer ?", vbQuestion + vbYesNo, "Boîte 2") = vbYes Then Reponse = MsgBox("Le lecteur n'est pas prêt", vbCritical + vbAbortRetryIgnore, "Boîte 3") If Reponse = vbRetry Then MsgBox "c'est fini", vbOKCancel + vbDefaultButton2, "Boîte 4" End If End If End Sub

!!!! !!!!!!!

! 9+

Page 82: Cours VBA débutants.pdf

Fonctions mathématiques

Fonctions standards <%=')2! >)2! Q%06'3%02! D=)! 0%=2! #>>%02! 1%3&I4)0'! 6%BB)! #&J=B)0'! =0)! )\$&)223%0! &)0

! 2%0'! 4)2! Q%06'3%02! B#'G(B#'3D=)2! 2'#04#&4! D=3!1%-#0'! =0)! 1#>)=&! 0=B(&3D=)! )'! D=3! &)01%3)0'! =0)!

peNumerique

#'')01#>)=&!0=B(&3D=)*!])!>#!Q%&B)!

NomFonctionjnumberk!As Ty

Nom de la fonction number Type renvoyé Commentaire

Abs '%=2!'-$)!O=B*! 74!'-$)!numbe=E>)!

r! T)01%3)!>#!1#>)=&!#E2%>=)!4)!>P#&J=B)0'*!Atn '-$)!O=B(&3D=)! ]% T)01%3)!>P#&6'#0J)0')!4)!>P#&J=B)0'!jT#43#0k!Cos K0J>)!)0!&#43#0! ]%=E>)! T)01%3)!>)!6%230=2!4)!>P#&J=B)0'!Exp z5@;I59?5+?9;U! ]%=E>)! T)01%3)!>P)\$%0#0'3)>>)!4)!>P#&J=B)0'!Log ]%=E>)!z@! ]%=E>)! T)01%3)!>)!>%J#&3'GB)!0($(&3)0!4)!>P#&J=B)0'!

Sgn ]%=E>)! :#&3#0'!j70'k! T)01%3)!>)!23J0)!4)!>P)\$&)223%0I!o+!23!0(J#'3QI!@!23!0=>!)'!+!23!$%23'3Q!

S T)01%3)!>)!X30=2!4)!>P#&J=B)0'!in K0J>)!)0!&#43#0! ]%=E>)!qr ]%=E>)!zR@! ]%=E>)!S T)01%3)!>#!&#630)!6#&&()!4)!>P#&J=B)0'!

Tan K0J>)!)0!T#43#0! ]%=E>)! T)01%3)!>#!'#0J)0')!4)!>P#&J=B)0'!

Fonctions spécifiques

Round Round(expression!},numdecimalplaces~) As Variant!T)01%3)!>#!1#>)=&!#&&%043)!#=!0%BE&)!4)!4(63B#>)2!2$(63Q3(!6%BB)!4)=\3WB)!$#&#BW'&)*!X3!6)>=3o

63!)2'!%B32!%=!1#='!@I!>)!0%BE&)!2)&#!#&&%043!p!>P)0'3)&!>)!$>=2!$&%6G)*!V#&!)\)B$>)!v!Public Sub TestRound() Debug.Print Round(7.253, 2) '7.25 Debug.Print Round(7.253, 1) '7.3 Debug.Print Round(7.253, 0) '7 Debug.Print Round(7.253) '7 Debug.Print Round(-7.253, 2) '- 7.25 Debug.Print Round(-7.253) '-7 End Sub

Tirage aléatoire, Randomize et Rnd Rnd(number) As Single "#!Q%06'3%0!&)01%3)!=0!0%BE&)!#>(#X3!>P#&J=B)0'!)2'!$%23'3Q!%=!%B32I!6P

'%3&)!6%B$&32!)0'&)!e(&%!)'!+!E#2(!2=&!>#!1#>)=&!4)!>P#&J=B)0'*!!)2'!>)!0%BE&)!#>(#'%3&)!2=31#0'!4#02!>#!>32')!D=3!)2'!&)01%-()I!23!)! #>(#'%3&)! J(0(&(! D=3! )2'! )01%-(! 230%0! >#! Q%06'3%0! &)01%3)!number! )2'! 0=>I! 6P)2'! >)! 4)&03)&! 0%BE&

'%=i%=&2!>)!B8B)!0%BE&)*!Public Sub TestRnd() Debug.Pr int Rnd(7.253) '0.7055475 Debug.Print Rnd(7.253) '0.533424 Debug.Print Rnd(0) '0.5

Debug.Print Rnd(-7.253)33424

'0.7983214 Debug.Print Rnd(-7.253) '0.7983214 End Sub

! 9?

Page 83: Cours VBA débutants.pdf

"P#$$)>! $&(#>#E>)! 4)! >P302'&=6'3%0! T#04%B3e)! 2#02! #&J=B)0'! 301%D=)! >)! J(0(&#')=&! 4)! 0%BE&)!$2)=4%!#>(#'%3&)*!

V%=&!J(0(&)&!=0)!1#>)=&!)0'3W&)!#>(#'%3&)!4#02!=0)!$>#J)!4%00()I!%0!='3>32)!>#!Q%&B=>)!v!Int((ValeurMax - ValeurMin + 1) * Rnd + ValeurMin)

]#0 1)&)e!$#&Q%32!>#!0%'#'3%0!v!Int((ValeurMax) * Rnd + 1)!

d=#04 1#='!+I!)'!>#!0%'#'3%0!Int

2!>)2!4)=\!6#2!>)2!$>=2!Q&(D=)0'I!1%=2!'&%=

!>)!>3B3')!E#22)!((ValeurMax + 1) * Rnd)!d=#04!>#!>3B3')!E#22)!1#='!@*!

Public Sub TestRnd() Randomize 'tirage de roulette (0 à 36) * Rnd) Debug.Print Int((36 + 1) 'tirage de dé à 6 faces 1) Debug.Print Int((6) * Rnd + 'tirage d'un jour entre Noël et le jour de l'an Debug.Print Int((31 - 25 + 1) * Rnd + 25) End Sub

Fonctions de chaînes )!'&#3')B)0'!4)2!6G#f0)2!)'!>)2!Q%06'3%02!4)!6%01)&23%0!4)!

6#&# 0)!)'!23\!Q%&B)2!2)>%0!>)2!6#2!D=3!2=31)0'!>#!0%B)06>#'=&)!

Q%&B)I! 0%'()!2!p! >P)\(6='3%0!D=)!

0)! Q%&B)!g036%4)! 0%'()! O%B[%06'3%0`*! h)!4#02!>#!4(Q303'3%0!4)2!Q%06'3%02*!

/)2!Q%06'3%02!&)J&%=$)0'!>)2!Q%06'3%02!46'W&)*!/G#D=)!Q%06'3%0!$)='!#1%3&!)0'&)!=

2=31#0')!v!"%&2D=)! >#! Q%06'3%0! &)01%3)! =0! 1#&3#0'I! 3>! )\32')! J(0(&#>)B)0'! =0)! 2)6%04)!

O%B[%06'3%0^!D=3!&)01%3)!=0)!6G#f0)*!/)2!Q%&B)2!2%0'!J(0(&#>)B)0'!$>=2!&#$34)! Q%06'3%0! 4)! 6#&#6'W&)2I! 3>! )\32')! J(0(&#>)B)0'! =0)!>)=&2! G%B%>%J=)2! 0%0! '-$()2*! "%&2D=P3>! 2P#J3'! 4)

Q%&B)! 43')! E30#3&)! 2%=2! >#! Q%&B)! ! O%B[%06'3%0S! )'! =0%')&#3!0%&B#>)B)0'!'%=')2!>)2!Q%&B)2!

Comparaison de chaînes "#!6%B$#&#32%0!4)!6G#f0)!4)!6#&#6'W&)2!)2'!0%&B#>)B)0'!E#2()!2=&!=0)!6%B$#&#32%0!43')!PE30#3&)P!

)2*!/)63!Q#3'!D=)!>#!6%B$#&#32%0!)2'!2)023E>)!p!#='&)! '-$)! 4)! 6%B$#&#32%0I! 43')! P')\')P!(6)223'#0'! =0)! %$(&#'3%0! 4)! 6%B$#&#32%0!#&#32%0! 4(23&()*! /)! $#&#BW'&)! 0P)2'! i#B#32!B%4=>)I!F$'3%0!/%B$#&)I!D=3!$&(632)!$%=&!

&2D=)!>P#&J=B)0'!)2'!%B32*!2!Q%06'3%02!4)!6G#f0)2!B#32!#=223!>)2!%$(&#')=&2!

$'3%0!/%B$#&)*!pare Binary

4($)04#0')!4)!>#!&)$&(2)0'#'3%0!0=B(&3D=)!4)2!6#&#6'W&>#! 6#22)! jC#i=26=>)wC30=26=>)k*! 7>! )\32')! 6)$)04#0'! =0!

)! 0302)023E3>32()! p! >#! 6#22)*! <%=')! >)2! Q%06'3%02! 4)! 6G#f0B$#'')04)0'! 4%06! =0! $#&#BW'&)! $&(632#0'! >)! '-$)! 4)! 6%

%E>3J#'%3&)!$=32D=P3>!)\32')!#=223!=0)!4(6>#&#'3%0!4)!031)#=!>P)02)BE>)!4)!6)2!Q%06'3%02!>)!B%4)!4)!6%B$#&#32%0!>%

#!$#2!#QQ)6')&!23B$>)B)0'!>)/)'')!302'&=6'3%0!0)!14)!6%B$#&#32%0*!")!6%4)!63o4)22%=2!3>>=2'&)!>P30Q>=)06)!4)!>P302'&=6'3%0!FOptio

n Com

Public Sub InfluenceOption() If "test" <> "Test" Then MsgBox "Mode Option Compare Binary" Else MsgBox "Mode Option Compare Text" End If End Sub

X3!i)!6G#0J)!>P302'&=6'3%0!$%=&!!Option Compare Text

hP%E'3)04&#32!>P#QQ36G#J)!4=!B)22#J)!6%&&)2$%04#0'*!

! 9U

Page 84: Cours VBA débutants.pdf

])! !Q#3&)!2)!$)='!>)2!6%B$#&#32%02!p!>P#34)!4P%$(&#')=&!$%=&!$&313>(J (*!

B#03W&)!J(0(&#>)I!%0!(13')!#='#0'!D=)3)&!>P='3>32#'3%0!4)!>#!Q%06'3%0!X'&/%B$!p!4)2!Q302!4)!>323E3>3'

Traitement des caractères

Asc & Chr ")2! 6#&#6'W&)2! %0'! =0)! &)$&(2)0'#'3%0! 0=B(&3D=)I! #$$)>()! 6%4)! 4)! 6#&#6'W&)*! V)04#0'! #22)e!

>%0J')B$2I!6)!6%4)!#!('(!6%4(!2=&!=0!%6')'I!4%06!6%B$&32!)0'&)!@!)'!?NNI!6P)2'!>)!6%4)!KOX7*!/%BB)!3>!)\32')! p! '&#1)&2! >)! B%04)! E3)0! $>=2! 4)! ?NN! 6#&#6'W&)2I! %0! #! 6&((! =0! 0%=1)#=! 6%4)! 2=&! 4)=\! %6')'2!#$$)>(!g036%4)*!

"#! Q%06'3%0!K26! &)01%3)! >)! 6%4)! 4)! 6#&#6'W&)! 4=! 6#&#6'W&)! $#22(! )0! #&J=B)0'I&)01%3)!>)!6#&#6'W&)!6%&&)2$%04#0'!#=!0%BE&)!$#22(!)0!#&J=B)0'*!

! >#! Q%06'3%0! /G&!

Asc(string As String) As Integer

!8'&)!=0)!6G#f0)!4)!$>=23)=&2!6#&#6'W&)2I!2)=>!>)!6%4)!4)!>#!$&)B3W&)!>)''&)!

Chaîne As String) As String

AscB(string As String) As Byte AscW(string As String) As Integer "P#&J=B)0'!2'&30J!$)='

2)&#!&)01%-(*!Chr(charcode As Long) As Variant Chr$(charcode As Long) As String ChrB(charcode As Byte) As Variant ChrB$(charcode As Byte) As String ChrW(charcode As Long) As Variant ChrW$(charcode As Long) As String

Private Function EnleveAccents(ByVal Dim compteur As Long, CarLu As String

To Len(Chaîn, ValRet As Integer

For compteur = 1 Mid(C

e) CarLu = haîne, compteur, 1) ValRet = Asc(CarL

elect Case ValReu)

S

t Case 192 To 197: ValRet = 65 Case 200 To 203: ValRet = 69

Case 204 To 207: ValRet = 73 Case 210 To 214: ValRet = 79 Case 218 To 22 Case 224, 226,

0: ValRet = 85 228: ValRet = 97 Case 232 To 235: ValRet = 101 Case 238, 239: ValRet = 105 Case 244, 246: ValRet = 111 Case 251, 252: ValRet = 117 End Select EnleveAccents = EnleveAccents & Chr(ValRet) Next End Function

/)'')!Q%06'3%0!)0>W1)!>)2!6#&#6'W&)2!#66)0'=(2!4)!>#!6G#f0)!$#22()!)0!$#&#BW'&)*!O*S!v!O%&B#>)B)0'I!%0!0)!B)'!D=P=0)! 302'&=6'3%0!4)!6%4)!$#&!>3J0)I! >)!6#&#6'W&)!4)!Q30!4)!>3J0)!

('#0'! >)! &)'%=&! 6G#&3%'*! /)$)04#0'I! :SK! 30')&$&W')! >)! 6#&#6'W&)! rvr! j4)=\! $%30'2k! 6%BB)! ('#0'! =0!2($#&#')=&! 4P302'&=6'3%0! >%&2D=P3>! )2'! $>#6(! 4#02! =0)! >3J0)! 2#02! )0! 8'&)! >)! 4)&03)&! 6#&#6'W&)*! /)'')!0%'#'3%0!D=%3D=)!1#>34)!)2'!J(0(&#>)B)0'!p!(13')&!$%=&!4)2!&#32%02!4)!>323E3>3'(!2#=Q!D=#04!>)!6%4)!)2'!2=QQ32#BB)0'!'&313#>!$%=&!0)!$#2!$&8')&!p!6%0Q=23%0*!!

]#02!>P)\)B$>)!63o4)22=2I!>#!0%'#'3%0!v!Case 192 To 197: ValRet = 65

AD=31#='!p!>#!0%'#'3%0!Case 192 To 197 ValRet = 65

! 9,

Page 85: Cours VBA débutants.pdf

Recherche & Extraction

StrComp "#! Q%06'3%0!X'&/%B$! 6%B$#&)! >)2! 4)=\! 6G#f0)2! $#22()2! )0! #&J=B)0'! 2)>%0! >)!B%4)! 2$(63Q3(! )'!

&)01%3)!=0!)0'3)&!&)$&(2)0'#0'!>)!&(2=>'#'!4)!>#!6%B$#&#32%0*!StrCompjstring1!K2!X'&30JI!string2 As String}I!compare As VbCompareMethod~k As Integer!"P#&J=B)0'!compare!$)='!$&)04&)! >)2!1#>)=&2!1ES30#&-/%B$#&)! j@k!%=!1E<)\'/%B$#&)!j+k*!XP3>!

)2'!%B32!6P)2'! >P302'&=6'3%0!F$'3%0!/%B$#&)!D=3! Q3\)! >)!B%4)I! 23! 6)>>)o63!0P)2'!$#2!4(6>#&()I!6P)2'!=0)!6%B$#&#32%0!E30#3&)!D=3! 2)&#! Q#3')*!")! &(2=>'#'! &)01%-(!1#=4&#!@! 23! >)2!4)=\! 6G#f0)2! 2%0'! 34)0'3D=)2!4#02!>)!B%4)!4)!6%B$#&#32%0!6G%323I!o+!23!2'&30J+y2'&30J?I!+!4#02!>)!6#2!6%0'&#3&)*!Public Sub TriBulle(ByRef strArray() As String, Comparaison As VbCompareMethod) Dim Termine As Boolean, Encours As Boolean Termine = Fal

Dim strTemp As String, cmpt As Long

se Do While Termine = False For cmpt = LBound(strArray) To UBound(strArray) - 1 If StrComp(strArray(cmpt), strArray(cmpt + 1), Comparaison) > 0 Then strTemp = strArray(cmpt) strArray(cmpt) = strArray(cmpt + 1) strArray(cmpt + 1) = strTemp Encours = True End If Next cmpt If Encours = False Then Exit Do

End If Encours = False Loop End Sub Public Sub TestCompare() Dim TabTest() As String TabTest = Split("Selon l'argument comparaison, le tri sera Sensible à la casse", " ")

Call TriBulle(TabTest, vbTextCompare) MsgBox Join(TabTest, " ") ) Call TriBulle(TabTest, vbBinaryCompare MsgBox Join(TabTest, " ") End Sub

! 9N

Page 86: Cours VBA débutants.pdf

Instr "#!Q%06'3%0!Instr!6G)&6G)!>#!$&(2)06)!4P=0)!6G#f0)!4#02!=0)!#='&)!6G#f0)!)'!&)01%3)!2#!$%23'3%0!>)

6#2!(6G(#0'*!!!

1 As StringI!string2 As String}I!compare As VbCompareMethod~k!As

#02!>#D=)>>)!%0!)QQ)6'=)!>#!*!

!0%0!p!

6G)&6G()*! "%&2D=)! >#!=Q!4#02!>)2!6#2!2=31#0'2!v!

>>I!>#!Q%06'3%0!&)01%3)!O=>>*!=0)!6G#f0)!134)I!>#!Q%06'3%0!&)01%3)!>#!1#>)=&!4)!start*!n NbOccurence(ByVal ChaîneCible As String, Recherchee As

InStrj}start As LongI!~stringLong

Fx!start!)2'!>#!$%23'3%0!%x!>#!&)6G)&6G)!6%BB)06)I!string1!>#!6G#f0)!46G()!)'!compare!>)!B%4)!4)!6%B$#&#32%0&)6G)&6G)I!string2!>#!6G#f0)!&)6G)&

"P#&J=B)0'!/%B$#&)!4(Q303'!>)!B%4)!4)!6%B$#&#32%0!)'!4%06!23!>#!&)6G)&6G)!)2'!2)023E>)!%=>#!6#22)*!"%&2D=)!>)!$#&#BW'&)!start!)2'!%B32I!3>!)2'!(J#>!p!+!j4(E='!4)!>#!6G#f0)k*!!

"#! $%23'3%0! &)01%-()! )2'! >#! $%23'3%0! 4=! $&)B3)&! 6#&#6'W&)! 4)! >#! 6G#f0)! &)&)6G)&6G)!(6G%=)!>#!Q%06'3%0!&)01%3)!@!2#

X3!string1!%=!string2!)2'!O=X3!string2!)2'!

Public FunctioString) ng As Lo Dim PosRech As Long PosRech = InStr(1, ChaîneCible, Recherchee, vbTextCompare) Do Until PosRech = 0 NbOccurence = NbOccurence + 1 PosRech = InStr(PosRech + Len(Recherchee) + 1, ChaîneCible, Recherchee, vbTextCompare) Loop End Fonction

7>!)\32')!=0)!Q%06'3%0!70X'&S!D=3!&)01%3)!>#!$%23'3%0!4)!>P%6')'!$>='m'!D=)!>#!$%23'3%0!4=!6#&#6'W&)*!

Left, Mid & Right T)01%3)!=0)!$#&'3)!4)!6G#f0)!)0!Q%06'3%0!4)!6&3'W&)2!4)!$%23'3%0*!"#!Q%06'3%0!")Q'!&)01%3)!>#!$#&'3)!

'3%0!C34!=0)!$#&'3)! 4(Q303)! $#&! >)2!

gk!As Variant

6#&#6'W&)2! 4)! 4&%3')! 2)&%0'! &)01%-(2I! length! >)! 0%BE&)! 4)!

ariant g~k!As Variant

h As Long~k!As String MidB$jstring As String, start As Long[, length As Long]k!As String

>#!6G#f0)!4%0'!>)2!6#&#6'W&)2!2)&%0'!&)01%-(2I!start!>#!$%23'3%0!4=!$&)B3)&!6#&#6'W&)!j%6')'! $%=&!MidBk! p! &)01%-)&I! length! >)! 0%BE&)! Q#6=>'#'3Q! 4)! 6#&#6'W&)2! %=! 4P%6')'2! j$%=&!MidB) 4)1#0'!8'&)!&)01%-(2*!

J#=6G)! 4P=0)! 6G#f0)I! >#! Q%06'3%0!T3JG'! >#! $#&'3)! 4&%3')! )'! >#! Q%06#&J=B)0'2!D=3!>=3!2%0'!$#22(2*!])!>#!Q%&B)!v!

Leftjstring As String, length As Longk!As Variant As Longk!As Variant LeftBjstring As String, length

Left$jstring As String, length As Longk!As String LeftB$jstring As String, length As Longk!As String Fx! string! )2'! >#! 6G#f0)! 4%0'! >)2! 6#&#6'W&)2! 4)! J#=6G)! 2)&%0'! &)01%-(2I! length! >)! 0%BE&)! 4)!

6#&#6'W&)2!%=!>)!0%BE&)!4P%6')'2!$%=&!>)2!1#&3#0')2!LeftB*!Rightjstring As String, length As LonRightBjstring As String, length As Longk!As Variant Right$jstring As String, length As Longk!As String

$jstring As String, length As Longk!As String RightBFx! string! )2'! >#! 6G#f0)! 4%0'! >)2!

6#&#6'W&)2!%=!>)!0%BE&)!4P%6')'2!$%=&!>)2!1#&3#0')2!RightB. As Long~k!As VMidjstring As String, start As Long}I!length

g As String, start As Long}I!length As LonMidBjstrinMid$jstring As String, start As Long}I!lengt

Fx!string!)2'!

! 9.

Page 87: Cours VBA débutants.pdf

O%=2!#1%02!1=!=0!)\)B$>)!6>#223D=)!4P='3>32#'3%0!4)!>#!Q%06'3%0!Mid!>%&2!4)!>P('=4)!4)!Asc!$%=&!>)!$#&6%=&2!4P=0)!6G#f0)!6#&#6'W&)!$#&!6#&#6'W&)*!Public Function MyReplace(ByVal Chaîne As String, ByVal Cherche As String, ByVal Remplace As String) As String Dim PosRech As Long PosRech = InStr(1, Chaîne, Cherche, vbTextCompare) Do Until PosRech = 0

Chaîne = Left(Chaîne, PosRech - 1) & Remplace & Right(Chaîne, Len(Chaîne) - PosRech - Len(Cherche) + 1) P

osRech = InStr(1, Chaîne, Cherche, vbTextCompare) Loop MyReplace = Chaîne End Function

Len T)01%3)!>#!>%0J=)=&!4)!>#!6G#f0)!4)!6#&#6'W&)2!$#22()!)0!#&J=B)0'I!%=!>#!'#3>>)!4)!>#!1#&3#E>)!23!

*!L\32')!2%=2!Q%&B)!")0S!$%=&!=0)!&($%02)!)0!%6')'2*!6)!

ng!0P)2'!$#2!=0)!6G#f0)

Lenjexpressionk!As LoLenBjexpressionk!As Long!

InStrRev [%06'3%00)!6%BB)!>#!Q%06'3%0!70X'&!B#32!)0!$#&'#0'!4)!>#!Q30!4)!>#!6G#f0)*!

gcheck As String,! stringmatch As String},! start As Long},! comparInstrRev(strin e As ong

)6G)&6G)! )'! stringmatch! >#! 6G#f0)!

)!6%BB)06)!p!>#!Q30!4)!>#!6G#f0)*!tring) As Variant

VbCompareMethod~~) As LFx! stringcheck! )2'! >#! 6G#f0)! 4#02! >#D=)>>)! )2'! )QQ)6'=()! >#! &

6G)&6G()*!!X3!position!)2'!%B32!%=!(J#>!p!o+I!>#!&)6G)&6G

Private Function ExtractParenthese(ByVal Formule As S Dim PosFerme As Long, PosOuvert As Long Dim cmpt As Long, TabReponse() As String PosFerme = InStr(1, Formule, ")", vbTextCompare) Do Until Pos

osOuveFerme = 0

P rt = InStrRev(Formule, "(", PosFerme, vbTextCompare) To cmpt) ReDim Preserve TabReponse(0 TabReponse(cmpt) = Mid(Formule, PosOuvert + 1, PosFerme - PosOuvert - 1) cmpt = cmpt + 1 Formule = Left(Formule, PosOuvert - 1) & IIf(PosFerme <

(Formule), Mid(Formule, PosFerme + 1), "") PosFerme = InStr(1,Len

Formule, ")", vbTextCompare) Loop If Len(Formule) > 0 Then ReDim Preserve TabReponse(0 To cmpt)

= Formule TabReponse(cmpt) End If

abReponse ExtractParenthese = T End Function

! 95

Page 88: Cours VBA débutants.pdf

Split "#!Q%06'3%0!X$>3'!2($#&)!=0)!6G#f0)!2)>%0!=0!2($#&#')=&!)'!&)01%3)!=0!'#E>)#=!j4)!E#2)!@k!4)2!2%=2!

6G#f

!&)01

2! >#!6G#f0)I! 3>!2)&#!&)01%-(!=0!'#E> ! )2'! %B32I! 6P)2'! >)! 6#&#6'W&)! )2$#6)! D=3! 2)&#! >)!2($#

!&)01%-()2*!Public Sub

0)2!6%&&)2$%04#0')2*!Split(expression!K2!X'&30J},!delimiter!K2!X'&30J},!limit As Long},compare As

VbCompareMethod~~~) As String() limit!>)!0%BE&)!4)!2%=2!6G#f0)2!pFx!expression!)2'!>#!6G#f0)!p!2($#&)&I!delimiter!>)!2($#&#')=&!)'!

%-)&*!X3! >)!2($#&#')=&!)2'!4)! >%0J=)=&!0=>>)!%=!2P3>!0P)2'!$#2!$&(2)0'!4#0

3>)#=! 4P=0! (>(B)0'! 6%0')0#0'! '%=')! >#! 6G#f0)*! XP&#')=&*!

'X3!limit!)2'!%B32I!'%=')2!>)2!2%=2!6G#f0)2!2)&%0TestSplit()

Dim s String, msg As String, cmpt As Long, TabSplit() As strTest AString strTest = "un, deux, trois" TabSplit = Split(strTest, ",") For cmpt = LBound(TabSplit) To UBound(TabSplit) msg = msg & "[élément " & cmpt & " = " & TabSplit(cmpt) & "] " Next cmpt Debug.Print msg '[élément 0 = un] [élément 1 = deux] [élément 2 = trois] msg = "" TabSplit = Split(strTest, ",", 2) For cmpt = LBound(TabSplit) To UBound(TabSplit) msg = msg & "[élément " & cmpt & " = " & TabSplit(cmpt) & "] " Next cmpt Debug.Print msg '[élément 0 = un] [élément 1 = deux, trois] msg = ""

abSplit = Split(strTe T st, ";") For cmpt = LBound(TabSplit) To UBound(TabSplit) msg = msg & "[élément " & cmpt & " = " & TabSplit(cmpt) & "] " Next cmpt Debug.Print msg '[élément 0 = un, deux, trois] msg = "" End Sub

Filter "#!Q%0 =0!'#E>)#=!4)!6G#f0)2!)'!&)01%3)!=0!'#E>)#=!6%0')0#0'!'%='!

>)2!(>(B)0 =#0'!>#!6G#f0)!2$(63Q3()*!

Method~~) As String() !43B)023%0*!6%0')0#0'!>#!6G#f0)!match!2)&%0'!&)01%-(2!230%0!6)!2)&#!'%=2!

>)2!( $#2!4)!6%&&)2$%04#06)I!=0!'#E>)#=!134)!2)&#!&)01%-(*!Pub

6'3%0![3>')&!6%B$#&)!=0)!6G#f0)!p!'2!6%B$&)0#0'!%=!)\6>

Filter(sourcearray As string(), match!As String}, include!As Boolean},compare As VbCompare

Sourcearray!4%3'!8'&)!=0!'#E>)#=!p!=0)X3!include!)2'!1&#3I!'%=2!>)2!(>(B)0'2!>(B)0'2!0)!>#!6%0')0#0'!$#2*!XP3>!0P-!#!lic Sub TestFilter()

Dim TabString() As String, TabReponse As Variant Dim Chaîne As String Chaîne = "C'est un test et comme tous les tests il peut échouer" TabString = Split(Chaîne, " ") TabReponse = Filter(TabString, "test", True, vbTextCompare) If UBound(TabReponse) > -1 Then MsgBox UBound(TabReponse) + 1 '2 End If End Sub

! 99

Page 89: Cours VBA débutants.pdf

Modification

LTrim, RTrim & Trim ")2!Q%06'3%02!<&3B!&)01%3)0'!=0)!6G#f0)!2#02!>)2!)2$#6)2!23'=(2!p!=0)!%=!#=\!4)=\!)\'&(B3'(2!4)!

6)>>)o63*!"#!Q%06'3%0!"<&3B!)0>W1)!>)2!)2$#6)2!4)!J#=6G)2I!T<&3B!6)=\!4)!4&%3')2!)'!<&3B!4)2!4)=\!6%'(2*!

Tr As String) As Variant Function LTrim$(String As String) As String

rim ingrim trin

im(String Aim$( ing

Function L im(String

Function RT (Str As String) As Variant Function RTFunction Tr

$(S g As String) As String s String) As Variant

Function Tr Str As String) As String

Replace

Replace(expre ion A String,! find As String,! replace As String},! start As Long},! count As

T)B$>#6)! =0)! %=! $>=23)=&2! %66=&&)06)2! 4P=0)! 6G#f0)! 6%0')0=)! 4#02! =0)! 6G#f0)! $#&! =0)! #='&)!

6G#f0)*!ss s

Long},compare As VbCompareMethod~~~) As String Fx! ex ! 6G#f0)! 4#02! >#D=)>>)! >)2! &)B$>#6)B)0'2! 2%0'! )QQ)6'=(2I! find! >#! 6G#f0)! p!

&)6G E&)!B#\

X3!s I!2P3>!)2'!2=$(&3)=&!p!+I!'%=2!>)2!6#&#6'W&)2!4%0'!>#!$%23'3%0!)2'!30Q(&3)=&)!p!2'#&'!2)& 0)!&)01%-()*!

X3!cou B32I!3>!1#='!o+!6P)2'opo43&)!D=)!'%=2!>)2!&)B$>#6)B)0'2!$%223E>)2!2)&%0'!)QQ)6'=(2*!Public S tReplace()

pression! )2'! >#)&6G)&I! replace! >#! 6G#f0)! 4)! &)B$>#6)B)0'I! start! >)! 6#&#6'W&)! 4)! 4($#&'! )'! count! >)! 0%B3B=B!4)!&)B$>#6)B)0'*!

tart!)2'!%B32I!3>!1#='!+%0'!)0>)1(2!4)!>#!6G#f

nt!)2'!%ub Tes

Dim TabString() As String, TabReponse As Variant Dim Chaîne As String Chaîne = "C'est un test et comme tous les tests il peut échouer" Debug.Print Replace(Chaîne, "test", "essai", 1, -1, vbText

'C'est un essai et comme tous les essais il peut échouer Compare)

Debug.Print Replace(Chaîne, "t 'C'est un essai et comme tous les tests il peut échouer

est", "essai", 1, 1, vbTextCompare) Debug.Print Replace(Chaîne, "test", "essai", 15, -1, vbTextCompare

essais il peut échouer )

'et comme tous les End Sub

LCase & Ucase /%01)&'3'! >#!6G#f0)!4#02! >#!6#22)!2$(63Q3()*!"/#2)!6%01)&'3&#! >#!6G#f0)!)0!B30=26=>)I!g/#2)!)0!

s Stringk!As Variant

B#i=26=>)*!LCasejstring As Stringk!As Variant LCase$jstring As Stringk!As String UCasejstring AUCase$jstring As Stringk!As String

! 9;

Page 90: Cours VBA débutants.pdf

StrConv /%01)&'3'!>#!6G#f0)!$#22()!)0!#&J=B)0'!2)>%0!>)!B%4)!2$(63Q3(*!StrConvjstring As String, conversion As vbStrConv,…k As String Fx!string!)2'!>#!6G#f0)!p!6%01)&'3&!)'!conversion!>)!B#2D=)!E30#3&)!4)!6%01)&23%0*!/)>=3o63!#66)$')!

>#!6%B$%23'3%0!4)2!1#>)=&2!2=31#0')2!v!

Constante Valeur Description

vbUpperCase 1 /%01)&'3'!>#!6G#f0)!)0!B#i=26=>)2!jLD1!g/#2)k!

vbLowerCase 2 /%01)&'3'!>#!6G#f0)!)0!B30=26=>)2*!jLD1!"/#2)k!

vbProperCase 3 /%01)&'3'!>#!$&)B3W&)!>)''&)!4)!6G#D=)!B%'!4)!>#!6G#f0)!)0!B#i=26=>)*!

vbUnicode 64 /%01)&'3'!>#!6G#f0)!)0!g036%4)!p!>P#34)!4)!>#!$#J)!4)!6%4)!$#&!4(Q#='!4=!2-2'WB)*!

vbFromUnicode 128 /%01)&'3'!>#!6G#f0)!g036%4)!4#02!>#!$#J)!4)!6%4)!$#&!4(Q#='!4=!2-2'WB)*!!

StrReverse T)01%3)!=0)!6G#f0)!4%0'!>)2!6#&#6'W&)2!2%0'!)0!%&4&)!301)&2)!4)!>#!6G#f0)!$#22()!)0!#&J=B)0'*!

Construction

Join /P)2'! >#! Q%06'3%0! 301)&2)! 4)! X$>3'I! )>>)! '&#02Q%&B)! =0! '#E>)#=! 4)! 6G#f0)2! )0! =0)! 6G#f0)I!

(1)0'=)>>)B)0'!#1)6!=0!2($#&#')=&*!Join(sourcearray As String()}I!delimiter As String~) As String Sourcearray!4%3'!8'&)!=0!'#E>)#=!p!=0)!43B)023%0*!X3!delimiter!)2'!%B32I!>)!6#&#6'W&)!)2$#6)!2)&#!

='3>32(I!23!6P)2'!=0)!6G#f0)!134)I!>)2!(>(B)0'2!4=!'#E>)#=!2)&%0'!6%06#'(0(2*!")!6%4)!2=31#0'!&)B$>#6)!>)2!13&J=>)2!$#&!4)2!'#E=>#'3%02!4#02!=0!Q36G3)&!')\')*!

Public Sub ConvertFichierTexte() Dim NumFichier As Integer, TabLigne() As String, Recup As String Dim cmpt As Long NumFichier = FreeFile Open Chemin & "texte.txt" For Binary Access Read As #NumFichier Recup = String(LOF(NumFichier), " ") Get #NumFichier, , Recup Close #NumFichier TabLigne = Split(Recup, vbCrLf) For cmpt = 0 To UBound(TabLigne) TabLigne(cmpt) = Join(Split(TabLigne(cmpt), ","), vbTab) Next cmpt Recup = Join(TabLigne, vbCrLf) NumFichier = FreeFile Open Chemin & "txtConv.txt" For Binary Access Write As #NumFichier Put #NumFichier, , Recup Close #NumFichier End Sub

Space "#!Q%06'3%0!X$#6)!&)01%3)!=0)!6G#f0)!6%B$%2()!4P)2$#6)2*!])!>#!Q%&B)!v!

! ;@

Page 91: Cours VBA débutants.pdf

Function Space(Number As Long) As Variant String )2!6%B$%2#0'!>#!6G#f0)*!

Function Space$(Number As Long) As Fx!number!&)$&(2)0')!>)!0%BE&)!4P)2$#6F0!='3>32)!J(0(&#>)B)0'!6)'')!Q%06'3%0!>%&2D=P%0!$&%6W4)!p!4)2!#$$)>2!2-2'WB)!D=3!0(6)223')!=0)!

6G#f0)!43')!P'#B$%0P!$%=&!>#!&($%02)*!"P)\)B$>)!2=31#0'!&(6=$W&)!>)!>%J30!4)!>P='3>32#')=&!)0!6%=&2*!

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Public Function UtilConnect() As String Dim Tampon As String, retour As Long Taille As Long , Taille = 255 Tampon = Space(Taille) retour = GetUserName(Tampon, Taille) UtilConnect = Left$(Tampon, Taille - 1) End Functi on

String X)023E>) &)01%3)! =0)! 6G#f0)! 6%B$%2()! 4P=0! 6#&#6'W&)!

$#22

Q%32!%x!character!2)&#!&($('(*!character!$)='!8'&)!=0!6%4)!4)!6*!7>!

B)0'! 34)0'3D=)! p! >#! Q%06'3%0! $&(6(4)0')I!(!)0!$#&# ' #&J=B)0'!6%&&)2$%04#0'*!Stringjnumber As LongI!characterk!As Variant String$jnumber As LongI!characterk!As String

BW &)!&($('(!>)!0%BE&)!4)!Q%32!4(Q303!$#&!>P

Fx!number!&)$&(2)0')!>)!0%BE&)!4)!6#&#6'W&)!6%B$&32!)0'&)!@!)'!?NNI!23!3>!)2'!2=$(&3)=&I!3>!2)&#!='3>32(!2%=2!>#!Q%&B)!character mod 25$)='!8'&)!#=223!=0)!6G#f0)!4%0'!2)=>!>)!$&)B3)&!6#&#6'W&)!2)&#!='3>32(*!!

! ;+

Page 92: Cours VBA débutants.pdf

Gestion des erreurs S3)0! D=)! >)2! 6%06)$'2! 2%3)0'! &)>#'31)B)0'! 23B$>)2I! >#! J)2'3%0! 4)2! )&&)=&2! 1#! 2P#1(&)&! 6%BB)! >#!

$#&'3)! >#E%00)!D=#>3' &)06)2*!

L0! 4)!>P302'&=6'3%0!On Error*!!")!Q#3'!4P='3>32)6%&&)6')B)0'*!:%=2!4)1&)e!$#&Q%32!6%0Q3J=&)&!1%'&)!)013&%00)B)0'!4)!4(1)>%$$)B)0'*!V%=&!6)>#I!#>>)e!4#02

!$>=2!6%B$>)\)!D=)!0%=2!1)&&%02!4#02!6)!6%=&2*!"P(6&3'=&)!4P=0!6%4)!4)!J)2'3%0!4P)&&)=&2!4)!(!0P)2'!$#2!=0)!'É6G)!#32()!6%0'&#3&)B)0'!#=\!#$$#

:SKI!>#!J)2'3%0!4)2!)&&)=&2!&(6=$(&#E>)2!2)!Q#3'!$#&!>)!E3#32!&! 6)'')! 302'&=6'3%0! 0P)2'! $#2! 0(6)22#3&)B)0'! 2=QQ32#0'! $%=&! D=)! >#! &(6=$(&#'3%0! 2)! Q#22)!

!>)!B)0=!rF='3>2!s!F$'3%02r!4)!>P(43')=&!4)!6%4)I!2(>)6'3%00)e!>P%0J>)'!rb(0(&#>r!!$=32!2(>)6'3%00)e!>P%$'3%0!rK&&8'!2=&!>)2!)&&)=&2!0%0!J(&()2r*!

!7>!)\32')!J&%22%!B%4%!4)=\!Q#q%02!4)!J(&)&!>)2!)&&)=&2!!B8B)!23!%0!$)='!)0132#J)&!4#02!6)&'#302

(0#&33!$>=2!4)!1#&3#0')2!

I!>)!'&#3')B)0'!)0!$>#6)!)'!>)!'&#3')B)0'!6)0'&#>32(*!!B#03$=>)!#=! '&#1)&2!4)! >#!

)26&3$'3%0! !/G#f0)!4(6&31#0'!>P)&&)=&! O=BE)&! !O=B(&%!4)!>P)&&)=&! X%=&6)! !/G#f0)!34)0'3Q3#0'!>P(B)'')=&!4)!>P)&&)=&!

L'!4)=\!B('G%4)2! />)#&! !T(303'3#>32)!>P%Ei)'!L&&FEi)6'! T#32)! !"W1)!=0)!)&&)=&!&(6=$(&#E>)!

")2!$&%$&3('(2!2%0'!J(0(&#>)B)0'!1#>%&32()2!$#&!:32=#>!S#236I!6)$)04#0'!1%=2!$%=1)e!8'&)!1%=2oB8B)!J(0(&#')=&!4P=0)!)&&)=&!J&É6)!p!>#!B('G%4)!T#32)*!V&)0%02!>P)\)B$>)!2=31#0'!v!Private Const PI = 3.14159265

26"P)&&)=&! &(6=$(&#E>)!)2'! &)$&(2)0'()!$#&! >P%Ei)'!:SK!L&&FEi)6'I!D=P%0

06'3%0!L&&*!/)'!%Ei)'!)\$%2)!$>=23)=&2!$&%$&3('(2I!4%0'!v!Q% ]

Private Function CalcCylindree(ByVal Alesage As Single, ByVal Course As Single, ByVal NbCylindre As Byte) As Single If Sgn(Alesage) = -1 Or Sgn(Course) = -1 Then Err.Raise 5, "CalcCylindree", "Les valeurs d'alésage et de course doivent être strictement positives" ElseIf NbCylindre = 0 Then Err.Raise 5, "CalcCylindree", "Le Nombre de cylindre ne peut pas être nul" End If CalcCylindree = (PI * Course * Alesage / 2) / 4 / 10 * NbCylindre End Function

! ;?

Page 93: Cours VBA débutants.pdf

]#02!6)'')! Q%06'3%0I! i)!1#32!J(0!$)='! (134)BB)0'! 2)! 4)B#04)&! D=)>! )2'! >P

0(&)&!=0)!)&&)=&!23!=0!4)2!#&J=B)0'2!0P)2'!$#2!2'&36')B)0'!$%23'3Q*!30'(&8'! 4P=0! ')>! 6%4)I! $=32D=P)0! >P%66=&&)06)! i)! $%=&&#32!

(!p!B)!3>!>)!2%=G#3')*!!

=3! $#&! 6%01)0'3%0! )2'! rK$$)>! 4)! $&%6(4=&)! %=! #&J=B)0'!>#!2%=&6)I!

F'&#3')&!>)!$&%E>WB)!4#02!>)!6%&$2!4)!>#!Q%06'3%0*!/)$)04#0'!)0!$&%6(4#0'!#3023I!i)!>#322)!>#!$%223E3>3'6)>=3!D=3!$&%J&#BB)!>#!$&%6(4=&)!#$$)>#0')!4)!J(&)&!>P)&&)=&!6%B

]#02! 6)! 6#2I! i)! J(0W&)! >P)&&)=&! N! D,306%&&)6'r *!hP='3>32)!>)2!#&J=B)0'2!4)!>#!B('G%4)!T#32)!$%=&!$)&2%00#>32)&!>#!4)26&3$'3%0!)'!

B#32!i)!$%=&&#32!(6&3&)!#=223!v!!Err.Raise 5

/%BB)! N! )2'! =0! 0=B(&%! 4P)&&)=&! $&(4(Q303)I! >#! 1#>)=&! 4)! >#! 4)26&3$'3%0! 2)&#3'! >)! B)22#J)! $#&!4(Q#='!4)!>P)&&)=&I!)'!>#!2%=&6)!2)&#3'!r:SKV&%i)6'r!D=3!)2'!>#!1#>)=&!$#&!4(Q#='!4)!>#!2%=&6)!D=#04!=0)&&)=&!2)!$&%

)!!

=3!$)='!

3)0! D=)! 6)0'&#>32(I! 3>! 0P)0! )2'! $#2!B%302! 3BB(43#'! $=32D=)! >#! >)1()! 4P=0)! )&&)=&!3%0! 4=! 6%4)! 4)! '&#3')B)0'! 4P)&&)=&2*! /)! '&#3')B)0'! ='3>32)! >)2!#>32#'3%0!4P=0!$%30'!2$(63Q3D=)!4=!6%4)!J&É6)!p!=0)!('3D=)'')*!

!)=\o$%30'2!j:k!

J#=6G)! 4#02!

On Error Goto Etiquette*!b(0(&#>)B)0'I!)!$&%6(4=&)*!F0!Q#3'!4%06!$&(6(4)&!>#!>3J0)!4)!>P('3D=)'')!

! 4)! $&%6(4=&)! jL\3'! X=E! %=!L\3'! [=06'3%0! 2)>%0! >)! 6#2k! $%=&! D=)! >)! 6%4)!0)B)0'!0%&B#>*!

4=3'!4#02!=0!B%4=>)!2'#04#&4*!7>!0P-!#!$#2!4P%E>3J#'3%0!p!='3>32)&!4)2!)&&)=&2!$&(4(Q303)2*:%=2!$%=1)e!'&W2!E3)0!='3>32)&!4)2!0=B(&%2!4P)&&)=&!$)&2%00#>32(!j$#&!6%01)0'3%0!z+@@@k!6)!D8'&)!='3>)!$%=&!>)!6%4)!4)!J)2'3%0!4P)&&)=&2*!

Traitement centralisé X%-%02! 6>#3&I! E

4(6>)06G)! #='%B#'3D=)B)0'! >P)\(6='>%6('3D=)'')2!4)!>3J0)2I!6P)2'opo43&)!>#!

/)>>)2o63!2=31)0'!>)2!&WJ>)2!2=31#0')2!v! L>>)2!2%0'!6%B$%2()2!4)!0P3B$%&')!D=)>>)!6%BE30#32%0!4)!6#&#6'W&)2!6%BB)0q#0'!$#&!=0)>)''&)!)'!2)!')&B30#0'!$#&!>)!23J0)!4

L>>)2!0)!432'30J=)0'!$#2!>)2!B#i=26=>)2!4)2!B30=26=>)2! L>>)2! 4%31)0'! 6%BB)06)&! #=! 031)#=! 4)! >#! $&)B3W&)! 6%>%00)! j>)! $>=2! p!>P(43')=&k!

"P302'&=6'3%0!4)!J)2'3%0!4P)&&)=&2!2)&#!#>%&2!4)!>#!Q%&B)!0!4P)&&)=&2!)0!Q30!4%0!$>#6)!>)!6%4)!4)!J)2'3%

4)! 2%&'3)4P=0)! 302'&=6'3%0!4P)&&)=&!0)!2P)\(6=')!$#2!)0!6#2!4)!Q%06'3%0

V%=&!D=)!>)2!)\$>36#'3%02!2%3)0'!$>=2!6>#3&)2I!$#&'%02!4)!>P)\)B$>)!2=31#0'!v!= 3.14159265 Private Const PI

lcCylindree(ByVal Alesage Private Function Ca

bCyliAs Single, ByVal Course As

Single, ByVal N ndre As Byte) As Single

Alesa If Sgn( Err.

ge) < 1 Or Sgn(Course) < 1 Then Raise 5 ', "Cylindree", "Les valeurs d'alésage et de course doivent être strictement positives" ElseIf NbCylindre = 0 Then Err.Raise 5 ', "Cylindree", "Le Nombre de cylindre ne peut pas être nul" End If CalcCylindree = (PI * Course * Alesage ^ 2) / 4 / 1000 * NbCylindre End Function Private Function CalcRapVol(ByVal Cylindree As Single, ByVal VolChambre As Single) As Single CalcRapVol = (Cylindree + VolChambre) / VolChambre End Function

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,!:%=2!'&%=1)&)e!>#!>32')!4)2!)&&)=&2!&(6=$(&#E>)2!4#02!>P#34)!)0!>3J0)!

! ;U

Page 94: Cours VBA débutants.pdf

Public Sub CalculMoteur() Dim ngle Ales As Single, Course As Single, NCyl As Integer, VolumeC As SiDim Cylindree As Single, RapportVolu As Single On Error GoTo TraiteErreur Ales = Application.InputBox("Entrer la valeur d'alésage en mm", "Saisie", Type:=1) Course = Application.InputBox("Entrer la valeur de la course en mm", "Saisie", Type:=1) NCyl = Application.InputBox("Entrer le nombre de cylindre", "Saisie", Type:=1) VolumeC = Application.InputBox("Entrer le volume de la chambre de combustion en cm^3", "Saisie", Type:=1) Cylindree = CalcCylindree(Ales, Course, NCyl) RapportVolu = CalcRapVol(Cylindree, VolumeC) MsgBox Cylindree & vbNewLine & RapportVolu Exit Sub TraiteErreur: If Err.Number = 5 Then If NCyl = 0 Then NCyl = Application.InputBox("Le nombre de cylindre doit être positif", "Erreur", 1, Type:=1) ElseIf Sgn(Ales) < 1

Ales = 0 Then Then

If Ales = Application.InputBox("L'alésage doit être strictement positif", "Erreur", 1, Type:=1) Else Ales = -1 * Ales End If Else If Course = 0 Then

e = Application.InputBox Cours ("La course doit être strictement positive", "Erreur", 1, Type:=1) Else

ourse = C -1 * Course End If End If Resume End If End Sub

&)! P/FE2)&1%02! >#!$&%6(4=/)>>)o63! 23J03Q

#>6=>C%')=&P*!O%=2!#6'31%02! >#! &(6=$(&#'3%0!4P)&&)=&!#1)6! >#!$&)B3W&)!3)! 4%06! D=)! 23! =0)! )&&)=&! 2)! $&%4=3'! 4#02! >)! 6%4)I! >)! 6=&2)=&! 4P)\(6='3%0!

&#3')L&&)=&P! )'! >)! 6%4)! 4)! '&#3')B)0'! 2)&#! )\(6='(*! X3! >)! 6%4)! 2)! 4(&%=>)! 2#02!)&#!

! )&&)=&! 2)! $&%4=3'I! >#! $&%$&3('(!'!1#!8'&)!43QQ(&)0')!4)!@*!

2!#>%&2!')2')&! >)!0=B(&%!4)!>P)&&)=&*!X3!6)>=3o63!)2'!(J#>!p!NI!6P)2'!D=)!0%=2!#1%02!>)1(!>P)\6

3J0)!D=3!#!4(6>)06G()!>P)&&)=&!Resume Next! !T)'%=&0)!p!>#!>3J0)!2=31#0'!6)>>)!D=3!#!>)1()!>P)&&)=&!

302'&=6'3%0*!#'')304&#! >#! >3J0)! P<)06%BE&)I!>#!$&%6(4=&)!2)!')&B30)&#!2=&!>P302'&=6'3%0!L\3'!X=E!j)'!0%0!2=&!L04!X=Ek!)'!>)!6%4)!0)!2$#2!'&#3'(*!

#30')0#0'! >)! 6%4)! 4)! '&#3')B)0'! 4)2! )&&)=&2*! X3! =0)T)J#&4%02!BO=BE)&!4)!L&&FEi)6

O%=2!#>>%0)$'3%0!4)!>#!Q%06'3%0! P/#>6/->304&))PI!6P)2'opo43&)!D=P=0!4)2!'&%32!#&J=B)0'2!0P)2'!$#2!2'&36')B)0'!

$%23'3Q*! ! O%=2! #>>%02! 4%06! #$$>3D=)&! >#! 2'&#'(J3)! 2=31#0')I! 23! >P#&J=B)0'! Q#=\! )2'! 0(J#'3QI! i)! 1#32! >)!B=>'3$>3)&!$#&! o+I! 2P3>! )2'! 0=>I!0%=2!#>>%02! &)4)B#04)&! >#! 2#323)!4P=0)!1#>)=&!$%=&!6)'! #&J=B)0'*!V=32!0%=2!#>>%02!')0')&!4)!&(!)\(6=')&!>#!>3J0)!D=3!#!>)1(!>P)&&)=&*!!

V%=&!#'')304&)!6)'')!>3J0)I!0%=2!='3>32)&%02!>P302'&=6'3%0!T)2=B)*!!"P302'&=6'3%0!Resume! 2)&'! p! &)'%=&0)&!4#02! >)! 6%4)!D=3! #!4(6>)06G(! >P)&&)=&*!F0! >P='3>32)! 2%=2! >#!

Q%&B)!v!Resume! !T)'%=&0)!p!>#!>

! ;,

Page 95: Cours VBA débutants.pdf

Resume Etiquette! !:#!p!>#!>3J0)!4)!>P('3D=)'')*!A13')e!4P='3>32)e!T)2=B)!L'3D=)'')!D=3!$)='!&#$34)B)0'!6%B$>3D=)&!>#!>)6'=&)!4)!1%'&)!6%4)*!O*S!v!"P302'&=6'3%0!T)2=B)!&(303'3#>32)!>P%Ei)'!L&&FEi)6'I!6%BB)!23!%0!Q#32#3'!L&&*/>)#&*!K'')0'3%0I!T)2=B)!#'')30'!>#!>3J0)!D=3!#!4(6>)06G()!>P)&&)=&!4#02!>#!$&%6(4=&)!D=3!6%0'3)0'!>)!6%4)!)2'3%0!4P)&&)=&*!]#02!0%'&)!6#2I!

Cylindree = CalcCylindree(Ales, Course, NCyl) 4)!J

X=$$%2%02!B#30')0#0'!D=P#=!>3)=!4P=0!#&J=B)0'!Q#=\I!3>!-!)0!#3'!4)=\I!D=)!1#o'o3>!2)!$#22)&|!")!6%4)!1#!)0'&)&!4#02!>)!6%4)!4)!J)2'3%0!4P)&&)=&!=0)!$&)B3W&)!Q%32!)'!'&#3')&!>#!$&)B3W&)!)&&)=&!

4#02! >P%&4&)!4)2!6%043'3%02I!$=32! >P302'&=6'3%0!T)2=B)!1#! &)B)''&)! >)!6=&2)=&!4P)\(6='3%0!2=&! >#! >3J0)!4P#$$)>!4)! >#! Q%06'3%0! P/#>6/->304&))P*!g0)!)&&)=&!1#!4)!0%=1)#=! 2)!$&%4=3&)!$=32D=)!0

)B)0'!4P)&&)=&!0)!6%&&3J)!D=P=0!#&J=B)0'!p!>#!Q%32*!/)'')!0%=1)>>)!)&&)=&!1#!&)01%'&)! 6%4)!4)!

'&#3' %-)&!>)!6%4)!4#02!%04!#&J=B)0'*!O%'&)!J)2'3%0!4P)&&)=&!)2'!4%06!E3)0!(6&3')*!

)! '&#3')B)0'! 4)! >P)&&)=&! )\$>363')B)0'! >)1()! $#&! >#! Q%06'3%0!! 2)!

4)! 4($#22)B)0'! 4)! 6#$#63'(! $=32D=)!D=3!0)!$)='!$#2!)\6(4)&!?NN*!/)'')!)&&)=&!)2'! >P)&&)=&!.*!")!

$%=&!6)>#!%'&)!6%4)!

>)!'&Fx! 4=! B%302! >P)2'o3>! $%=&! >#3')B)0'!4P)&&)=&!$%=&!'&#3')&!>)!2)6

P/#>6/->304&))P*! 7B#J30%02! D=)!0%'&)! %$(&#')=&! &81)=&! )0'&)! U@@! 6%BB)!0%BE&)!4)! $32'%0*! 7>! 0)$#22)&#!&3)0!p!>P(6&#0!)'!&3)0!0)!2)&#!6#>6=>(*!

! Q#3'I! 6)'')! )&&)=&! 4)! 2#323)! 1#! 4(6>)06G)&! =0)! )&&)=&!L0>P#&J=B)0'! POE/->304&)P!)2'!4)! '-$)!S-')!6%4)!4P)&&)=&!1#!#>%&2!8'&)!)\(6='(I!B#32!')>!D=P3>!)2'!(6&3'I!3>!0)!'&#3')!D=)!>P)&&)=&!N!)'!6P)2'!D=P)0!#$$#&)06)!3>!0)!2)!$#22)!&3)0*!V%=&!$#&)&!p!6)'')!(1)0'=#>3'(!0%=2!#>>%02!4%06!B%43Q3)&!04P)&&)=&!')>!D=)!v!TraiteErreur: Select Case Err.Number Case 5 If NCyl = 0 Then NCyl = Application.InputBox("Le nom

ur", 1, Type:=1) bre de cylindre doit

être positif", "Erre ElseIf Sgn(Ales) < 1 Then If Ales = 0 Then

Ales = Application.InputBox( "L'alésage doit être strictement positif", "Erreur", 1, Type:=1) Else Ales = -1 * Ales

End If Else If Course =

Course 0 Then

= Application.InputBox("La course doit être strictement positive", "Erreur", 1, Type:=1) Else Course = -1 * Course End If End If Case 6 NCyl = Application.InputBox("Le nombre de cylindre doit être compris entre 1 et 255", "Erreur", 1, Type:=1) End Select Resume

O%=2!1%3>p!4%06!#1)6!=0!6%4)!4)!J)2'3%0!4P)&&)=&!$&8'!p!'%='*!L'!E3)0!0%0I!$#2!)06%&)*!7B#JB#30')0#0'!D=)!6)!43#E>)!4P='3>32#')=&! )0'&)!@!6%BB)!1#>)=&

30%02!!4)!1%>=B)*!"#! Q%06'3%0!4)!6#>6=>!4)! >#!

)0'&)!4#02!>#!Q%06'3%0!P/#>6T#$:%>P*!")!6#>6=>!)!431323%0!$#&!e(&%*!/)'')!Q%06'3%0!0)!$%22W4)!

%=&'#0'!>P)\(6='3%0!0)!1#!$#2!2P#&&8')&*!! 6%06)$'! p! #$$&(G)04)&! 6%&&)6')B)0'*! ](2! >%&2! D=P3>! -! #! =0! J)2'3%00#3&)!

)=&2! 1%0'! &)B%0')&! >)! 6%=&#0'I! 6%BB)! >)2! 2#=B%02I! 2#=Q! D=)! 4#02! >)! 6#2! 4)2!

6->304&()!1#!E3)0!2)!$#22)&I!$=32!>)!6=&2)=&!4P)\(6='3%0!&&)=&!$=32D=P3>!-!#=&#!=04)!6)'')!Q%06'3%0!1#!>)1)&!=0)!)

&!)'!$$#2!4)!J)2'3%00#3&)!4P)&&)=! >)! 4)=\3WB)/P)2'! >#

4P)&&)=&! #6'3QI! >)2! )&&)&&)=&2!6P)2'!>#!$3>)!4)2!#$$)>2*!

! ;N

Page 96: Cours VBA débutants.pdf

")!B(6#032B)!)2'!>)!2=31#0'*!"P)&&)=&!1#!4P#E%&4!8'&)!'&#3'()!#=!031)#=!4)!>#!$&%6(4=&)!%x!)>>)!2)!)!J)2'3%00#3&)!4P)&&)=&!4#02!6)>>)o63I!3>!1#!&)B%0')&!>P)&&)=&!#=!J)2'3%00#3&)!4)!>#!

!

!#1)e!$&(1=!6)'')!&)B%0'()I!$#2!4)!$&%E>WB)*!C#32!23! 3>!2P)2'!$&%4=3'!=0)!)&&)=&!!$&(1=)I!1%=2!#>>)e!4(6>)06G)&!=0!'&#3')B)0'!D=3!0P)2'!$&%E#E>)B)0'!$#2!#4#$'(!)0!

$&%4=3'*!XP3>!0P-!#!$#2!4$&%6(4=&)! #$$)>#0')! )'! #3023! 4)! 2=3')! i=2D=Pp! '&%=1)&! =0! J)2'3%00#3&)! #6'3Q*! /)!B(6#032B)! 0P)2'! $#23030'(&)22#0'!B#32!3>!)2'!)\'&8B)B)0'!$(&3>>)=\*!

L0!)QQ)'I!23!1%=2e!$#2D=)!1%=2!0P#13)

$>=2!4)!&)04&)!$>=2!43QQ363>)!>#!4(')6'3%0!4)!>P)&&)=&*!O%=2!#=&3%02!'&%32!$%223E3>3'(2!4#02!0%'&)!)\)B$>)I!4(2#6'31)&!>)!J)2'3%00#3&)!#$&W2!>)!6#>6=>!4)!>#!

6->304&()I! '&#3')&! >#!431323%0!$#&!e(&%!#=!031)#=!4)! >#! Q%06'3%0!4)!6#>6=>!4=! &#$$%&'!1%>=B3D=)!%=! >#!'&#3')&!#=!031)#=!4=!J)2'3%00#3&)!4)!>#!$&%6(4=&)*!

V%=&!4(2#6'31)&!>)!J)2'3%00#3&)!4P)&&)=&I!%0!='3>32)!>P302'&=6'3%0!F0!L&&%&!b%'%!@*!/)!D=3!4%00)&#32!=0!6%4)!')>!D=)!

Public Sub CalculMoteur() Dim Ales As Single, Course As Single, NCyl As Integer, VolumeC As Single Dim Cylindree As Single, RapportVolu As Single On Error GoTo TraiteErreur Ales = Application.InputBox("Entrer la valeur d'alésage en mm", "Saisie", Type:=1) Course = Application.InputBox("Entrer la valeur de la course en mm", "Saisie", Type:=1) NCyl = Application.InputBox("Entrer le nombre de cylindre", "Saisie", Type:=1) VolumeC = Application.InputBox("Entrer le volume de la chambre de combustion en cm^3", "Saisie", Type:=1) Cylindree = CalcCylindree(Ales, Course, NCyl) On Error GoTo 0 RapportVolu = CalcRapVol(Cylindree, VolumeC) MsgBox Cylindree & vbNewLine & RapportVolu Exit Sub TraiteErreur: . . . . .

X30%0!>#!B%43Q36#'3%0!4=!J)2'3%00#3&)!4)!>#!$&%6(4=&)!2)&#3'!v!TraiteErreur: Select Case Err.Number Case 5 If NCyl = 0 Then NCyl = Application.InputBox("Le nombre de cylindre doit être positif", "Erreur", 1, Type:=1) ElseIf Sgn(Ales) < 1 Then If Ales = 0 Then Ales = Application.InputBox("L'alésage doit être strictement positif", "Erreur", 1, Type:=1) Else Ales = -1 * Ales End If Else If Course = 0 Then Course = Application.InputBox("La course doit être strictement positive", "Erreur", 1, Type:=1) Else

Course = -1 * Course End If

End If Case 6 NCyl = Application.InputBox("Le nombre de cylindre doit être compris entre 1 et 255", "Erreur", 1, Type:=1)

! ;.

Page 97: Cours VBA débutants.pdf

Case 11 VolumeC = Application.InputBox("Entrer un volume supérieur à 0 pour la chambre de combustion en cm^3", "Saisie", Type:=1) End Select Resume 7>!0P)2'!$#2!'%=i%=&2!Q#63>)!4)!2#1%3&!D=)>!6G%3\

')&! '%!$&)04&)*!L0!'G(%&3)I!>%&2D=P%0!6%BB)06)!p!(6&3&)!=')2! >)2! )&&)=&2! 2#=Q! >%&2D=P%0! Q#3'! 4=! '&#3')B)0'!

#02! =0! J)2'3%00#3&)! 23'=(! #22)e! >%30! 4#02! >#! $3>)! 4)2!!#1%3&!4)2!)QQ)'2!4)!E%&4!0%0!0(J>3J)#E>)*!"P302'&=6'3%0!T)2=B)!0)!&)01)&&#!$#2!>)!6=&2)=&!

4P)\

!#1#0'!>)!4(6>)06G)B)0'!4)!>P)&&)=&I!)'!=0!4)=\3WB)!$#&6%=&2!4)!>#!$3>)!4)2!#$$)>2!(0(&#>)B)0'! $%=&! 6)>#! D=)!

#!2%=&6)!4)!>P)&&)=&!)'!#02!>#!$&%6(4=&)!

$>)! 6)$)04#0'I! >)! '&#3')B)0'! 4)! >#! 431323%0! $#&! @! 4#02! >)! 6%4)! 4)! >#! $&%6(4=&)!

%6(4=&)!0!$&%J&#BB)*!<%='!p!6%=$I!

>#! 1#>)=&! 4=! 1%>=B)! 4)! >#! 6G#BE&)! 4)! 6%BE=2'3%0! 2=&! 2%0! E#06*!)0'(I!3>!2#3'!D=)!'%='!'&#i)'!D=3!6&%32)!>#!B#6G30)!p!6#Q(!$)='!2P#1(&)&!

1=!$%=&!>)!$#&6%=&3&*!7>!4(634)!4%06!4)!6>3D=)&!2=&!>)!!4)!>P#>(2#J)*!L'!>#!D=)>>)!0)!2)&#!$#2!2#!2=&$&32)!4)!

&)!4)!6->304&)2*!d=)!2)!$#22)o'o3>!4%06!|!!4)! >P%Ei)'!K$$>36#'3%0! &)01%3)! >#!1#>)=&! 2#323)! 23!1%=2!6>3D=)e! 2=&! PFcP! )'!

&!'!

!>#!Q%&B)!v!

)!2=31#0')*!"#!>3J0)!2=31#0')!1#!4%06!)04=)!)2'!

'*! b(0(&#>)B)0'! %0! '&#3')! 4%06! >P)&&)=&! 4#02! >)! E>%6! 7Q! D=3! 2=3'! >#! >3J0)!(2#6'31)!>)!J)2'3%00#3&)!$%=&!>P)&&)=&!)0!>3J0)*!

#3&)!J(0(&#>I!%0!4(2#6'31)!p!>P#34)!4)!>P302'&=6'3%0!v!0 '31)!>)!J)2'3%00#3&)!)0!6%=&2!)0!&)$&(632#0'!>P('3D=)'')!#1)6!v!

On Error Goto Etiquette

4=! 6%4)! 4)! J)2'3%0! 4P)&&)=&I! %0! 6G)&6G)! p! '&#3B(43#'*!/)$)04#0'! >#! &)B%0'()! 4)2! )&&)=&2! 43B

#$$)>2!$)='(6='3%0!#=!031)#=!4)!>#!>3J0)!)0!)&&)=&!B#32!#=!031)#=!4)!>P#$$)>!#-#0'!4(6>)06G(!6)>>)o63*!X3!>%&2!

4)2!#$$)>2!4)!Q%06'3%0!1%=2!#1)e!='3>32(!4)2!1#&3#E>)2!J>%E#>)2!%=!4)2!1#&3#E>)2!2'#'3D=)2I!>)=&2!1#>)=&2!%0'!$=!8'&)!6G#0J()2#=&#! =0! 6%0')\')! 43QQ(&)0'! )'! $&%E#E>)B)0'! =0! &(2=>'#'! 43QQ(&)0'*! /P)2'! J&2D=P%0!(6&3'!4=!6%4)!4)!J)2'3%0!4P)&&)=&I!%0!)22#-)!4)!>P(6&3&)!#22)e!$&W2!4)!>>%

D=P%0!(6&3'!4)2!$)'3'2!J)2'3%00#3&)2!4#02!>)2!$&%6(4=&)2!#$$)>()2!$>='m'!D=P=0!J&#04!4$&3063$#>)*!

]#02! 0%'&)! )\)B#$$)>#0')!0)!$%2)!$#2!4)!$&%E>WB)I!)'!0%=2!#1%02!)0Q30!(6&3'!=0!6%4)!&%E=2')!%x!>)2!)&&)=&2!2%0'!J(&()2!6%&&)6')B)0'*!

L'!$%=&'#0'!6)!0P)2'!$#2!1&#3B)0'!>)!6#2I!6#&!23!0%=2!#1%02!E3)0!'&#3'(2!>)2!)&&)=&2I!0%'&)!$&)2'!E%J=()*!7B#J30%02!D=)!0%'&)!='3>32#')=&!432'&#3'!6%BB)06)!p!)\(6=')&!2%3>! 2)! &)04! 6%B$')! D=P3>! #! %=E>3(!

)\$(&3B/%BB)!6P)2'!=0!='3>32#')=&!0)'')B)0'!$>=2!>%0J!D=)!>)!')B$2!0%&B#>)B)0'!$&(

W'&)E%='%0!PK00=>)&P!D=#04!%0!>=3!4)B#04)!>)!43#B%3&!D=)!>)!$&%J&#BB)!1#!>=3!4)B#04)&!>)!0%BE1"#!B('G%4)! 70$='S%\

[#>2)! 23! 1%=2! 6>3D=)e! 2=&! PK00=>)&P*! L0! 6>3D=#0'! 2=&! PK00=>)&PI! >)! $&%J&#BB)! 1#! ')0')&! 4P#QQ)6')&! >#!1#>)=&![#>2)!p!>#!1#&3#E>)!PK>)2P*!7>!-!#!>p!=0)!306%B$#'3E3>3'(!4)!'-$)I!6)!D=3!1#!>)1)&!=0)!)&&)=&!4)!'-$)!.I! 6)>>)o63!1#!4(6>)06G)&! >)! 6%4)!4)!J)2'3%0!4P)&&)=&I! )'! >)! '&#3')B)0'!4)! >P)&&)=&!0=B(&%!.!$&%1%D=)!>P#QQ36G#J)!4P=0)!E%f')!4)!2#323)!$%=&!>)!0%BE&)!4)!6->304&)*!

]#02!6)'!)\)B$>)I!>)!E=J!)2'!&)>#'31)B)0'!(134)0'I!B#32!6)!0P)2'!$#2!'%=i%=&2!>)!6#2!)'!$#&Q%32!3>!)2'!#22)e!#&4=!4)!&)'&%=1)&!>)!E=J!>%&2D=)!>)!J)2'3%00#3&)!)2'!#6'31(*!:%=2!#1)e!'%=i%=&2!>#!$%223E3>3'(!4)!&)$#22)&!>P(43')=&!)0!B%4)!PK&&8'!2=&!'%=')!>)2!)&&)=&2P!$%=&!>)!&)'&%=1)&!$>=2!Q#63>)B)0'*!

Traitement immédiat ")! '&#3')B)0'! 3BB(43#'! 6%0232')! p! ')2')&! >#! $&(2)06)! 4P=0)! )&&)=&! i=2')! #$&W2! >#! >3J0)! 4)! 6%4)!

2)02()! >#! $&%1%D=)&*! 7>! 2P#$$>3D=)! $>='m'! D=#04! =0)! )&&)=&! '&W2! $&(1323E>)! )'! Q#63>)! p! '&#3')3BB(43#')B)0'!2)!'&%=1)!4#02!>)!6%4)I!%=!D=#04!%0!6G)&6G)!p!$&%1%D=)&!=0)!)&&)=&!6%BB)!(>(B)0=0)!&($%02)*!"P302'&=6'3%0!)2'!4)4P

On Error Resume Next !/)!D=3!$%=&&#3'!2)!>3&)!6%BB)I!)0!6#2!4P)&&)=&!)\(6=')!>#!>3J0

8'&)!=0!')2'!2=&!>#!$&%$&3('(!O=BE)&!4PL&&FEi)6'!2%3'!$#&!=0)!(J#>3'(!23!>)!'-$)!4)!>P)&&)=&!#''2'!4)!1#>)=&!0%0!0=>>)!23!$>=23)=&2!)&&)=&2!2%0'!$%223E>)2!)\#6')B)0'!6%00=I!2%3'!i=2')!2%=2!Q%&B)!4)!')

)'! D=)! >)! '-$)! )2'! 3043QQ(&)0306&3B30()I!%0!&(303'3#>32)!>P%Ei)'!L&&FEi)6'!)'!%0!4

XP3>!0P-!#!$#2!4)!J)2'3%00On Error Goto

X30%0!%0!&(#6

! ;5

Page 98: Cours VBA débutants.pdf

/%BB)0q%02!$#&!=0!)\)B$>)!G-$)&!6>#223D=)*!X3!1%=2!2%=G#3')e!)0&)J32'&)&!=0!6>#22)=&!#1)6!=0!0%B!4P=0! Q36G3)&!4(ip! )\32'#0'I!1%=2!#>>)e!%E')03&!=0!B)22#J)!4P#1)&'322)B)0'!4PL\6)>*!:%=2!$%=1)e!

2!

As String)

(1)0'=)>>)B)0'! 2=$$&3B)&! >P#QQ36G#J)! 4)! 6)! B)22#J)! 6%BB)! 0%=2! >)! 1)&&%02! $>=2! >%30I! B#32! 1%=$%=1)e!#=223!'&#3')&!6)>#!$#&!>)!6%4)*!

"#!2%>='3%0!PL\6)>P!2P(6&3&#3'!v!1(ByVal NomFichier Public Sub EcraserFichier

Application.DisplayAlerts = False

hisWorkbook.SaveAs NomFichier T End Sub

O%=2!-!&)13)04&%02!$>=2!)0!4('#3>2!4#02!>P('=4)!4)!>P%Ei)'!K$$>36#'3%0I!B#32!p!B%0!2)02!6)'')!Q#q%0!0P)2'!$#2!'%=i%=&2!=0)!E%00)!Q#q%0!4)!$&%6(4)&I!)06%&)!D=)!4#02!6)'!)\)B$>)!$&(632!6)>#!0)!$%2)!$#2!4)!J&%2!$&%E>WB)2*!Publi NomFichier As String) c Sub EcraserFichier2(ByVal If Len(Dir(NomFichier, vbNormal)) > 0 Then Kill NomFichier ThisWorkbook.SaveAs NomFichier End Sub

/)'')! ! >)! ')2'! 2=&! >#! Q%06'3%0!]3&! $)='! 8'&)! Q#=22(!2)>%0!6) )!)&&)=&!$%=&&#3'!D=#04!B8B)!2)!$&%4=3&)*!Pub

2%>='3%0! )2'! &)>#'31)B)0'! (>(J#0')*! /)$)04#0'!D=)!6%0'3)0'!>P#&J=B)0'!PO%B[36G3)&P!)'!=0

lic Sub EcraserFichier3(ByVal NomFichier As String) On Error Resume Next Kill NomFichier If Err.Number > 0 The n Err.Clear ThisWorkbook.SaveAs NomFichier End Sub

/)'')! 2%>='3%0! ='3>32)! >)! '&#3')B)0'! 3BB(43#'*! <)>>)! D=P)>>)! )2'! (6&36'!#=!6#2!%x!c3>>!0)!'&%=1)!$#2!>)!Q36G3)&!6%&&)2$

')I! )>>)! )\(6=')! >)! c3>>! $=32!%04#0'*!V%=&!B#!$#&'I!iP(13')!

P#='&)2! )&&)=&2! D=)! >P)&&)=&! NU! j[36G3)&!='3>32#')=&! 0P)2'! $#2! >)2! 4&%3'2! 4P(6&3'=&)!

)&'%3&)! 63E>)*!"P#$$)>!4)! >#! Q%06'3%0!c3>>!1#!)0J)04&)&!=0)!)&&)=&!4)! '-$)!5@! jV)&B3223%0!&)Q=

")! '&#3')B)0'! )0! >3J0)! $)='! #=223! 8'&)! ='3>32(! 6%BB)! (>(B)0'! 4)! &($%02)*! 7B#J30%02! D=)! 0%=2!2%=G#3'3%02!2#1%3&!23!=0!6>#22)=&!6%0'3)0'!=0)!Q)=3>>)!0%BB()!P]#'#P*!X#02!>)!'&#3')B)0'!4P)&&)=&2I!0%=2!4)1&3%02!(6&3&)!v!Private Function FeuilleExiste(ByVal NomFeuille As String, ByRef Classeur

&(303'3#>32)!>P%Ei)'!L&&FEi)6)! J)0&)! 4)! '&#3')B)0'! 6#&! 0%=2! 2%BB)2! 4#02! =0! 6#2! %=! 4'&%=1#E>)k! $)='! 2)! $&%4=3&)*! X=$$%2%02! $#&! )\)B$>)! D=)! >P30

4#02! >)! &($2()k*! V=32D=)! >)! ')2'! 4)! >#! >3J0)! 2=31#0')! 2)&#! 1&#3I! >P%Ei)'! L&&FEi)6'! 2)&#! &(303'3#>32(*! /%BB)!

>P='3>32#')=&! 0P#=&#! $#2! >)2! 4&%3'2I! >#! >3J0)! 4)B#04#0'! >P)0&)J32'&)B)0'! 1#! (6G%=()! #=223I! B#32!>P='3>32#')=&!0)!>)!2#=&#!$#2!$=32D=)!i)!0P#3!$#2!&#B)0(!>)!J)2'3%00#3&)!4P)&&)=&!)0!B%4)!0%&B#>*!

As Workbook) As Boolean Dim EnumFeuille As Worksheet For Each EnumFeuille In Classeur.Worksheets If StrComp(EnumFeuille, NomFeuille, vbTextCompare) = 0 Then FeuilleExiste = True Exit Sub End If Next EnumFeuille End Function

! ;9

Page 99: Cours VBA débutants.pdf

!X3!>)!6>#22)=&!6%0'3)0'!?@@!Q)=3>>)2(

I!>)!'&#3')B)0'!#=&#!=0!6%Ç'!0%0!0(J>3J)#E>)!)0!')&B)!4)!')B$2!4P)\ 6='3%0*!h)!$)=\!#>%&2!='3>32)&!>)!'&#3')B)0'!4P)&&)=&2!)'!(6&3&)!v!Private Function FeuilleExiste(ByVal NomFeuille As String, ByRef Classeur

olean As Workbook) As Bo Dim EnumFeuille As Worksheet On Error Resume Next

et EnumFeuille = Classeur.Worksheets( S NomFeuille) If Er

r.Number = 0 Then FeuilleExiste = True Else Err.Clear End Fonction

:%=2! '&%=1)&)e! 6)&'#302! P$=&32')2P! D=3! 1%=2! 43&#3)0'! D=)! 6)'')! Q#q%0! 4)! $&%J&#BB)&! 0P)2'! $#2!! >pI! >P30')&6)$'3%0! 4P)&&)=&2! >%&2D=P)>>)! )2'! E3)0!

=&)! 4=! 6%4)! 4)! J)2'3%0!%=&0)&!>)!

3&)!2)!$)='*!!!

mmation sans échec

$&%$&)*! 7>! 0P-! #! #=6=0! #&J=B)0'! 2(&3)=\! p! 6)! $=&32B)p!Q#3'!6%&&)6')*!J(&()!)2'!=0)!$&%J&#BB#'3%0!'%='!

Erreurs successives !"#! J)2'3%0! 4)2! )&&)=&2! 2=66)2231)2! )2'! 2%=1)0'! 0(J>3J()! >%&2! 4)! >P(6&3'

#J3'!4)!B(6#032B)2!&)>#'31)B)0'!6%B$>)\)2I!%0!)22#-)!2%=1)0'!4)!6%0'4P)&&)=&*!/%BB)!3>!2P$&%E>WB)!#='#0'!D=)!Q#

Progra )!$&%J&#BB#'3%0*!"#!$&%J&#BB#'3%0!43')!2#02!(6G)6!6%0232')!p!)! O)\'! 2#02! '&#3')&! 0(6)22#3&)B)0'! >)2! )&&)=&2! (1)0'=)>>)2*! V#&!

7>!2P#J3'!J(0(&#>)B)0'!4P=0)!Q#=')!4L&&%&! T)2=B#6'31)&! >P302'&=6'3%0! F0!

)\)B$>)!v!Public Sub Sans Echec() On Error Resume Next

Dim compteur As Long For compteur = 1 To 10 MsgBox ThisWorkbook.Worksheets(compteur).Name Next compteur ThisWorkbook.Worksheets(compteur).Delete End Sub

/)! 6%4)! 0)! >W1)&#! i#B#32! 4P)&&)=&I! #QQ36G)&#! #='#0'! 4)! Q%32! >)! B)22#J)! D=P3>! -! #! &()>>)B)0'! 4)!Q)=3>>)2! )'! 2=$$&3B)&#! >#! %0e3WB)! Q)=3>>)! 23! )>>)! )\32')*! /)! '-$)! 4)! $&%J&#BB#'3%0! 0)! $&(2)0')! $#2!4P30'(&8'!&()>I!$#&!6%0'&)!3>!B#2D=)&#!4)2!(1)0'=)>2!E=J2!J&#1)2!2=&!4)2!6%4)2!=0!$)=!$>=2!6%B$>)\)2*!

! ;;

Page 100: Cours VBA débutants.pdf

Validation et activation ")!6%4)!D=3!1#!2=31&)!0P#!$#2!4P#='&)!E='!D=)!4P)\$>3D=)&!>)!$&3063$)!4)2!)&&)=&2!2=66)2231)2*!7>!)2'!

$#&'36=>3W&)B)0'!B#>!(6&3'I!0)!1%=2!)0!302$3&)e!$#2!$%=&!(6&3&)!4)2!Q%06'3%02!4)!&)6G)&6G)*!Public Sub Main() Call FindDate(Now) Selection.Interior.BackColor = vbRed End Sub Public Sub FindDate(ByVal UneDate As Date) Dim MaCell As Range, Plage As Range On Error GoTo Erreur For Each MaCell In ActiveSheet.UsedRange.Cells If IsDate(MaCell.Value) And DateDiff("d", UneDate, MaCell.Value) > 0 Then Set Plage = Application.Union(MaCell, Plage) End If Next MaCell Plage.Select Exit Sub Erreur: If Err.Number = 91 Then Err.Clear ActiveSheet.UsedRange.Find(UneDate).Select End If End Sub

d=)!1#o'o3>!2)!$#22)&!2P3>!0P-!#!#=6=0)!4#')!$%2'(&3)=&)!%=!(J#>)!p!>#!4#')!$#22()!)0!#&J=B)0'!|!V&(632%02!4P#E%&4!D=)>D=)2!')&B)2*!]W2!>%&2!D=P%0!)0'&)!4#02!=0!6%4)!6%=1)&'!$#&!>P302'&=6'3%0!F0!

L&&%&!b%'%!L'3D=)'')I!%0!43'!D=)!>)!J)2'3%00#3&)!4P)&&)=&2!)2'!1#>34(*!"%&2D=P=0)!)&&)=&!2)!$&%4=3'!)'!D=)!>)!6=&2)=&!4P)\(6='3%0!)0'&)!4#02!>)!6%4)!4)!J)2'3%0!4P)&&)=&2I!%0!43'!D=)!>)!J)2'3%00#3&)!)2'!#6'3Q*!L0Q30!23!%0!&)$#22)!$#&!=0)!>3J0)!F0!L&&%&!b%'%!@I!%0!43'!D=)!>)!J)2'3%00#3&)!)2'!301#>34(*!

]%06! %E2)&1%02! >#! Q%06'3%0! P[304]#')P*! X#! $&)B3W&)! 302'&=6'3%0! 1#>34)! >)! J)2'3%00#3&)! 4P)&&)=&2*!X=$$%2%02!D=)!>#!Q)=3>>)!0)!6%0'3)00)!$#2!4)!4#')!$%2'(&3)=&)!p!>#!4#')!$#22()!)0!#&J=B)0'*!"P#$$)>!4)!>P302'&=6'3%0! V>#J)*X)>)6'! 1#! >)1)&! =0)! )&&)=&! ;+! $=32D=)! V>#J)! 1#=4&#! O%'G30J*! ")! J)2'3%00#3&)!4P)&&)=&2! 1#! 4%06! 2P#6'31)&*! g0! J)2'3%00#3&)! #6'3Q! 0)! $)='! $#2! 8'&)! 4)! 0%=1)#=! #6'31(! $=32D=P%0!%E'3)04&#3'! #>%&2! =0)! )\(6='3%0! 30Q303)*! ]W2! >%&2! 0%'&)! 6%4)! 1#! >)1)&! =0)! )&&)=&! 0%0! 30')&6)$'()*!C%43Q3%02!!0%'&)!$&%6(4=&)!C#30I!')>>)!D=)!v!Public Sub Main() On Error GoTo Erreur Call FindDate(Now) Selection.Interior.ColorIndex = 3 Exit Sub Erreur: If Err.Number = 91 Then Call MsgBox("Aucune date égale ou postérieure au : " & DateValue(Now)) End If End Sub

V%=&!>)2!B8B)2!&#32%02!D=)!$&(6(4)BB)0'I!0%'&)!Q%06'3%0!P[304]#')P!1#!>)1)&!=0)!)&&)=&!#>%&2!D=)!2%0! J)2'3%00#3&)! )2'! 4(ip! #6'3Q*! /%BB)! 0%=2! >P#1%02! 1=I! '%=')! )&&)=&! &(6=$(&#E>)! 1#! 6G)&6G)&! =0!J)2'3%00#3&)!1#>34(!B#32!30#6'3Q!)0!&)B%0'#0'!>#!$3>)!4)2!#$$)>2*!O%'&)!0%=1)>>)!$&%6(4=&)!C#30!#!=0!J)2'3%00#3&)! D=3! &($%04! p! 6)2! 6%043'3%02*! 7>! 1#! 4%06! 2P#6'31)&! $%=&! '&#3')&! >#! 4)=\3WB)! )&&)=&! 4)! >#!Q%06'3%0!P[304]#')PI!6)!D=3!4(6>)06G)&#!>P#QQ36G#J)!4)!>#!E%f')!4)!B)22#J)*!

! +@@

Page 101: Cours VBA débutants.pdf

/)63! 3B$>3D=)!D=)!23!1%=2!4)1)e!#1%3&!=0!6%4)!4%0'! >)!J)2'3%00#3&)!4P)&&)=&2!)2'! 2=26)$'3E>)!4)!>)1)&! =0)! )&&)=&I! 1%=2! 4)1)e! $>#6)&! 6)! 6%4)! 4#02! =0)! $&%6(4=&)! #$$)>()! )'! (6&3&)! =0! J)2'3%00#3&)!4P)&&)=&!4#02!>#!$&%6(4=&)!#$$)>#0')*!

! +@+

Page 102: Cours VBA débutants.pdf

Modèle objet $#&!&#$$%&'!#=\!E#2)2!4=!>#0J#J)!

D=)!0%=2!#1%02!1=!4#02!>#!$&)B3W&)!$#&'3)*!")2!D=)>D=)2!43QQ36=>'(2!4)!>#!B#03$=>#'3%0!4)!6)!B%4W>)!13)00)0'!4)!'&%32!2%=&6)2!v!

g0)!B#=1#32)!6%B$&(G)023%0!4)!>#!B#03$=>#'3%0!4)2!%Ei)'2! g0)!B#=1#32)!&)$&(2)0'#'3%0!4)!>P#&6G3')6'=&)!G3(&#&6G3D=)!4PL\6)>! d=)>D=)2!#BE3J=Å'(2!4#02!>)!B%4W>)*!

O%=2! #>>%02! 4%06! E3)0! 4('#3>>)&! 6)2! #2$)6'2! #Q30! D=)! 1%=2! $=3223)e! B#03$=>)&! >)! B%4W>)! %Ei)'!L\6)>!6%BB)!b)&%03B%!2%0!'%B#G#Ya*!

"%&2!4)!>P('=4)!4)2!%Ei)'2I!>#!>32')!4)2!$&%$&3('(2!)'!B('G%4)2!D=)!0%=2!1)&&%02!2)&#!>3B3'()!p!=0)!$&%J&#BB#'3%0!4)!E#2)!L\6)>*!X#6G)e!D=P3>!)\32')!4#02!6G#D=)!%Ei)'!4P#='&)2!$&%$&3('(2!)'!B('G%4)2!D=)!0%=2!0)!1)&&%02!$#2!4#02!6)!6%=&2!B#32!D=3!$)=1)0'!1%=2!8'&)!='3>)2*!

O%=2!#>>%02!p!$#&'3&!4)!B#30')0#0'!'&#1#3>>)&!2=&!>)!B%4W>)!%Ei)'!4PL\6)>*!/%0'&#3&)B)0'!p!6)!D=)!>P%0!6&%3'!J(0(&#>)B)0'I!6)'')!$#&'3)!0)!$&(2)0')!D=)!$)=!4)!43QQ36=>'(2!

! +@?

Page 103: Cours VBA débutants.pdf

Présentation ")! B%4W>)! %Ei)'! L\6)>! )2'! =0! B%02'&)! (0%&B)! >%&2D=P%0! >)! 6%0234W&)! 4#02! 2%0! )02)BE>)*! "#!

4%6=B)0'#'3%0!>)!&)$&(2)0')!2%=2!>#!Q%&B)!6%01)0'3%00)>>)!2=31#0')!v!

!L06%&)!Q#='!3>!#1%3&!E3)0!p!>P)2$&3'!D=P3>!0)!2P#J3'!>p!D=)!4P=0!$&)B3)&!031)#=!4)!G3(&#&6G3)*!!

! +@U

Page 104: Cours VBA débutants.pdf

"#!23B$>)!6%>>)6'3%0!`%&aXG))'2!2)!4(6%B$%2)!')>>)!D=)!v!

!

! +@,

Page 105: Cours VBA débutants.pdf

7>!0P)2'!$#2!D=)2'3%0! 363!4)!4('#3>>)&! >P)02)BE>)!4)! 6)!B%4W>)!%Ei)'*!O%=2!#>>%02!0%=2!6#0'%00)&!4#02! >P 2! ='3>32(2! 4#02! 4)2!B#6&%2! 6>#223D=)2*! ")!B%4W>)! %Ei)'! 1=! 4#02! 6)!6%=&

('=4)! 4)2! $&3063$#=\! %Ei)'2)&#!v!2!

!

! +@N

Page 106: Cours VBA débutants.pdf

Fondamentaux O%=2! #>>%02!1%3&! %=! &)1%3&! 4#02! 6)! 6G#$3'&)! >)2! Q%04#B)0'#=\!4)! >#!B#03$=>#'3%0!4)2!%Ei)'2! )0!

:32=#>!S#236I!$=32!>#!6%02'&=6'3%0!4=!B%4W>)!%Ei)'!4PL\6)>!)'!>)2!$3WJ)2!p!(13')&*!

Glossaire h)!1#32!4P#E%&4!4(Q303&!D=)>D=)2!')&B)2!$%=&!D=)!>)2!)\$>36#'3%02!D=3!2=31)0'!2%3)0'!$>=2!6>#3&)2*!Objet : b&%=$)!4)! 6%4)! )'! 4)!4%00()2! &(#J322#0'! 6%BB)!=0)! )0'3'(*!"#!$>=$#&'! 4)2!%Ei)'2!D=)!

0%=2!#>>%02!1%3&!4#02!>)!B%4W>)!L\6)>!%0'!=0)!&)$&(2)0'#'3%0!J&#$G3D=)!j4#02!>)!2)02!132=)>k!6)!D=3!>)2!&)042!$>=2!Q#63>)!p!#$$&(G)04)&*!K3023I!>)!6>#22)=&I!>#!Q)=3>>)I!>#!j%=!>)2k!6)>>=>)j2k!%=!>)!J&#$G3D=)!2%0'!4)2!%Ei)'2!)0!'#0'!D=)!')>2*!

Méthode : ]#02!>#!'G(%&3)!%Ei)'I!'%=2!>)2!B)BE&)2!4P=0!%Ei)'!2%0'!4)2!B('G%4)2*!]#02!>)!i#&J%0!6%=&#0'I!>)2!B('G%4)2!2%0'!>)2!Q%06'3%02!%=!>)2!$&%6(4=&)2!4P=0!%Ei)'!30Q>=#0'!2=&!6)>=3o63*!"%&2D=P)>>)2!0P30Q>=)0'!$#2!2=&!>=3!%0!>)2!#$$)>>)!2%=1)0'!Q%06'3%02!6)!D=3!0)!23B$>3Q3)!$#2!>)2!6G%2)2*!

Propriété : C('G%4)!$#&'36=>3W&)!&)01%-#0'!%=!4(Q30322#0' >)2!6G#B$2!j>)2!6#&#6'(&32'3D=)2k!4P=0!%Ei)'*!")2!$&%$&3('(2!2P='3>32)0'!4%06!6%BB)!>)2!1#&3#E>)2I!6P)2'opo43&)!D=P%0!>3'!%=!D=P%0!#QQ)6')!>)=&2!1#>)=&2*!/)&'#30)2!$&%$&3('(2I!43')2!)0!P>)6'=&)!2)=>)P!0P#='%&32)0'!$#2!>P#QQ)6'#'3%0!4)!1#>)=&2*!

Évènement : g0!(1W0)B)0'!)2'!=0!P23J0#>P!(B32!$#&!=0!%Ei)'!J(0(&#>)B)0'!>%&2!4P=0)!30')&#6'3%0!%=! 4P=0! 6G#0J)B)0'! 4P('#'! 4)! 6)>=3o63*! /)! 23J0#>! $)='! 8'&)! 30')&6)$'(! p! >P)\'(&3)=&! 4)! >P%Ei)'! $#&! 4)2!$&%6(4=&)2! #-#0'! =0)! 23J0#'=&)! 4(Q303)! $#&! >P(1W0)B)0'*! F0! #$$)>>)! #>%&2! 6)2! $&%6(4=&)2! 4)2!J)2'3%00#3&)2!4P(1W0)B)0'2*!

Interface : L0!:SKI!6P)2'!>P)02)BE>)!4)2!B)BE&)2!$=E>362!4P=0!%Ei)'*!F0!)0')04!$#&!B)BE&)I!>)2!B('G%4)2I!$&%$&3('(2!)'!(1W0)B)0'2!4P=0!%Ei)'*!

Collections :!X'&36'%! 2)02=I!=0)!6%>>)6'3%0!)2'!=0! i)=!4P(>(B)0'2! 304)\(2!4)! '%=2! '-$)2*!]#02! >)!B%4W>)!%Ei)'!4PL\6)>I!>)2!6%>>)6'3%02!&)01%3)0'!=03D=)B)0'!4)2!%Ei)'2!4)!B8B)!'-$)!p!>P)\6)$'3%0!4)!>#!6%>>)6'3%0!XG))'2*

Qualification : ])!2%0!1&#3!0%BI!6G#f0)!4)!D=#>3Q36#'3%0*!L0!i#&J%0!$=&!2=6&)I!>#!D=#>3Q36#'3%0!)2'!>P34)0'3Q36#'3%0!=03D=)!4)!>#!&(Q(&)06)!6P)2'opo43&)! >)!$#&6%=&2!G3(&#&6G3D=)!4#02! >)!B%4W>)!%Ei)'!$%=&!4(23J0)&!=0!%Ei)'!%=!=0!B)BE&)!=03D=)*!

Les aides dans l'éditeur

Explorateur d'objet "P)\$>%&#')=&! 4P%Ei)'2! &)B$>#6)! >)! 6G3)0! )0! '#0'! D=)!B)3>>)=&! #B3! 4=! 4(1)>%$$)=&!:SK*!:=! >#!

4)02

m0)2!2=31#0')2!v!

3'(!4=!B%4W>)!%Ei)'I!3>!2)&#3'!$&)2D=)!3B$%223E>)!4P#1%3&!=0)!1323%0!23B$>)!4)2!30')&Q#6)2!4)!6G#D=)!%Ei)'*!"P)\$>%&#')=&! 4P%Ei)'2! 1%=2! $)&B)'! 6)'')!B#03$=>#'3%0*! 7>! )2'! #66)223E>)! 4)$=32! >P(43')=&!:SKI!2%3'!)0!6G%32322#0'!>)!B)0=!rKQQ36G#J)!s!L\$>%&#')=&!4P%Ei)'2rI!2%3'!)0!#$$=-#0'!2=&!>#!'%=6G)![?*!

"P)\$>%&#')=&!4P%Ei)'!='3>32)!>)2!36!S3E>3%'GWD=)!!C%4=>)!!/>#22)!!A0=B(&#'3%0!!<-$)!='3>32#')=&!C('G%4)!!C('G%4)!$#&!4(Q#='!!V&%$&3('(!!V&%$&3('(!$#&!4(Q#='!!A1W0)B)0'!!!/%02'#0')!!]#02! >#! 4(Q303'3%0! 4=!B)BE&)I! >)2! $#&#BW'&)2! Q#6=>'#'3Q2! 2%0'! )0'%=&(2! 4)! 6&%6G)'2*! "%&2D=)! >)!

'-$)!)2'!%B32!3>!2P#J3'!4P=0!:#&3#0'*!

! +@.

Page 107: Cours VBA débutants.pdf

!O%=2!0P#>>%02!$#2!1%3&! 363!6%BB)0'!B#03$=>)&! >P)\$>%&#')=&!6#&!6P)2'!#22)e! '&313#>I! i)!1%=2! 3013')!

131)B)0'! p! 1%=2! )\)&6)e! =0! $)=! 4)22=2! 6#&! =0)! Q%32! D=P%0! >P#! E3)0! $&32! )0!B#30! 6P)2'! )\'&8B)B)0'!$&#'3D=)*!O%')e!D=)!23!1%=2!2=&>3J0)e!=0!(>(B)0'!4#02!>P)\$>%&#')=&!4)!4P%Ei)'!)'!D=)!1%=2!#$$=-)e!2=&![7I!>P#34)!6%&&)2$%04#0')!2P#QQ36G)&#*!

! +@5

Page 108: Cours VBA débutants.pdf

IntelliSense 70')>>3X)02)!)2'!=0!B(6#032B)!4P#34)!#=!4(1)>%$$)B)0'!D=3!2)!E#2)!2=&!>)!6%0')\')!4)!6)!D=)!1%=2!

8')2!)0!'&#30!4)!6%4)&!$%=&!1%=2!Q%=&03&!=0)!#34)*!"#!#!D=#>3Q36#'3%0I!$>=2!6%00=)!2%

$>=2!6%00=)!4)!6)2!#34)2I!$#&6)!D=)!>#!$>=2!1323E>)!)'!>P#34)!p!> =2!>)!0%B!4)!2#323)!#='%B#'3D=)*!!

7B#J30%02!D=)!1%=2!1%=>3)e!6G#0J)&!>#!6%=>)=&!4)!Q%04!4)!>#!6)>>=>)!0%BB()!63E>)!4=!6>#22)=&!4)!>#! B#6&%*! K=! Q=&! )'! p! B)2=&)! D=)! 1%=2! #>>)e! $#&6%=&3&! >#! G3(&#&6G3)! 4)2! %Ei)'2! 4#02! >)! 6G)B30! 4)!D=#>3Q36#'3%0I! 70')>>3X)02)! 1#! 1%=2! #QQ36G)&! >#! >32')! 4)2! B)BE&)2! 4)! 6G#D=)! %Ei)'*! /)>#! 1#! 4%00)&!D=)>D=)!6G%2)!6%BB)!v!

!

!

!L'! #3023! 4)! 2=3')*! V%=&! 2(>)6'3%00)&! =0! (>(B)0'! 4#02! >#! >32')! 1%=2! $%=1)e! ='3>32)&! >)2! '%=6G)2!

Q>W6G)2! 4=! 6>#13)&! %=! >#! 2%=&32I! $%=&! 1#>34)&! >#! 2(>)6'3%0! 1%=2! $%=1)e! #$$=-)&! 2='! r<#Er! %=! 4%=E>)!6>3D=)&!4)22=2*!

/)'')! #34)! 2)B3! #='%B#'3D=)! ='3>32)! $>=23)=&2! Q%06'3%00#>3'(2! #=\D=)>>)2! 1%=2! $%=1)e! #66(4)&!#=223!)0!Q#32#0'!=0!6>36!4&%3'!2=&!=0!B%'I!p!2#1%3&!v!

"#!>32')!4)2!B)BE&)2!D=#04!3>!2P#J3'!4P=0!%Ei)'!"#!>32')!4)2!$#&#BW'&)2!D=#04!3>!2P#J3'!4P=0)!B('G%4)*!70')>>3X)02)! 1%=2! $)&B)'! #=223! 4)! 6%B$>(')&! =0! B%'! )0! '#$#0'! 2)2! $&)B3W&)2! >)''&)2! $=32! )0!

6G%32322#0'!>)!B)0=!6%0')\'=)>!r/%B$>(')&!=0!B%'r*!

! +@9

Page 109: Cours VBA débutants.pdf

Manipulation d'objets S3)0!D=)!0%=2!)0!#-%02!4(ip!$#&>(!$&(6(4)BB)0'I!0%=2!#>>%02!&)1%3&!)0!4('#3>!>#!B#03$=>#'3%0!4)2!

%Ei)'2*!

Durée de vie & Portée =!Q%06'3%00)B)0'!4)2!%Ei)'2*!]32%02!$%=&!Q#3&)!23B$>)!D=P=0!

3(k!)'!4('&=3'!j>p!%0!43'!Q30#>32(k*!")!B%B)0'!)0'&)!2!0)!$%=1)e!='3>32)&!=0!%Ei)'!D=)!$)04#0'!2#!

2'opo43&)! 4P=0! )04&%3'! %x! 3>! )2'! 1323E>)! 2)>%0! D=P3>! 2%3'!

SK!v!2%3'!4#02! >#!4(6>#&#'3%0!4)! >#!1#&3#E>)I! 2%3'!4#02!=0)! 302'&=6'3%0!4)!

)=\!B('G%4)2!0)!2%0'!$#2! '%='!p!Q#3'!(D=31#>)0')2!)'!%0! ')04!$>='m'!p! 302'#063)&!4#02!=0)!

h)!0)!1#32!$#2!)0'&)&!4#02!>)2!4('#3>2!4i)'!4%3'!'%=i%=&2!8'&)!6&((!j)0!i#&J%0!%0!43'!302'#06%E

2)2!4)=\!(1W0)B)0'2!)2'!>#!4=&()!4)!13)!4P=0!%Ei)'*!:%=4=&()! 4)! 13)! )'! =03D=)B)0'! 4#02! 2#! $%&'()! 6P)V=E>36!%=!V&31(*!

3W&)2!)0!:F0!6&()!=0!%Ei)'!4)!4)=\!B#0K!>P#34)!4=!B%'!6>(!O)YI!+k!

6%4)*!")2!4302'&=6'3%0!2$(63Q3D=)*!K='&)B)0'!43'!v!Sub TestObjet() Dim MaCollection As Collection Set MaCollection = New Collection MaCollection.Add "élément1" MaCollection.Add "élément2" End Sub

:#='!B3)=\!D=)!Sub TestObjet() Dim MaCollect ion As New Collection MaCollection.Add "é lément1" MaCollection.Add "élément2"

ub End S?k!K!>P#34)!4)!>#!Q%06'3%0!/&)#')FEi)6'*!

>P#$$

/)>>)o63!2=3'!>)!B%4W>)!2=31#0'!v!Function CreateObject(Class As String, [ServerName As String]) Fx! >P#&J=B)0'! Class! )2'! Q%&B(! $#&! >)! 6%=$>)! appname.objecttype! %x! appname! )2'! >)! 0%B! 4)!>36#'3%0!D=3!6&()!>P%Ei)'!)'!objecttype!>)!'-$)!4)!>P%Ei)'!6&((*!V#&!)\)B$>)!v!

Dim rs As Object Set rs = Crea teObject("ADODB.Recordset") ]#02! >P#E2%>=I! 7>! 0P-! #! $#2! 4)! 43QQ(&)06)! p! ='3>32)&! O)Y! %=! /&)#

0')\')!4)!>#!$&%J&#BB#'3%0!3>!$)='!-!#1%3&!=0!&32D=)*!')FEi)6'*! /)$)04#0'! 4#02! >)!

4)2!%Ei)'2!D=)!1%'&)!6%4)!6&()!43&)6')B)0'*!"#!$>=$#&'!4)2!L\6)>!sont créés par Excel!)'!1%=2!0)!4)1)e!

6%L0!)QQ)'I!1%=2!0)!4)1)e!302'#063)&!D=)!

%Ei)'2!D=)!1%=2!#>>)e!B#03$=>)&!4#02!>)!B%4W>)!%Ei)'!4P$#2!>)2!302'#063)&*!V%=&D=%3!6)>#!|!

! +@;

Page 110: Cours VBA débutants.pdf

"%&2D )0'!=0)!302'#06)!4)!>P#$$>36#'3%0!L\6)>!)0!6%=&2!)'!=0! !p!=0!D=)>6%0D=)!B%B)0'!1%=2!

=)!1%=2!B#03$=>)e!L\6)>!$#&!4=!6%4)!:SKI!3>!)\32')!Q%&6(B6>#22)=&!)0!6%=&2I!6)>=3!D=3!6%0'3)0'!1%'&)!6%4)*!X3

302'#063)e! >P%Ei)'! #$$>36#'3%0I! 1%=2! #>>)e! 6&()&! une! deuxième instance! 4PL\6)>*! V%=&! 1%=2! )0!6%01#306&)I!3>!2=QQ3'!4P)\(6=')&!>)!6%4)!2=31#0'!v!Sub TestObjet() Dim xlApp As Excel.Application 'récupère l'instance en cours d'Excel Set xlApp = Application 'lance une deuxième fois Excel Set xlApp = New Application xlApp.Visible = True End Sub

/%BB)! L\6)>! 2=3'! =0! B%4W>)! G3(&#&6G3D=)I! 3>! 0)! 1#! $#2! 1%=2! >#322)e! 302'#063)&! =0! 4)2! %Ei)'2!)0Q#0'2!4)! >P%Ei)'! #$$>36#'3%0I!$=32D=)!$#&! )\)B$>)! 3>! 0)!$)='!$#2! )\32')&!=0)! Q)=3>>)!D=3!0)! 2%3'!$#2!B)BE&)!4P=0!6>#22)=&*!K3023!$%=&!6&()&!=0)!Q)=3>>)I!%0!='3>32)!=0)!B('G%4)!4)!>P%Ei)'!`%&aE%%a!')>>)!D=)!v!Dim Feuille As Worksheet

Set Feuille = ThisWorkbook.Sheets.Add() /)!6%4)!#i%=')!E3)0!=0)!0%=1)>>)!Q)=3>>)!#=!6>#22)=&I!B#32!6P)2'!L\6)>!D=3!6P)2'!6G#&J(!4P302'#063)&!

>P%Ei)'*!X3!1%=2!)22#-)e!4)!Q#3&)!v!Set Feuille = New Worksheet

:%=2!#>>)e!>)1)&!=0)!)&&)=&I!6#&!6)'')!Q)=3>>)!0)!$)='!$#2!8'&)!6&(()!)0!4)G%&2!4P=0!6>#22)=&*!/)$)04#0'!%0!$%=&&#3'!Q#3&)!v!

Sub TestObjet() Dim Feuille As Object Set Feuille = CreateObject("Excel.Sheet") Feuille.Application.Visible = True End Sub

L'! >p! 3>!0P-!#=&#!$#2!4P)&&)=&I!B#32!1%=2!#>>)e!6&()&!=0!0%=1)#=!6>#22)=&!6%0')0#0'!=0)!Q)=3>>)!)'!0%0!23B$>)B)0'!=0)!Q)=3>>)*!"P)\$>36#'3%0!4=!$%=&D=%3!)2'!=0!$)=!')6G03D=)I!4%06!3>!Q#='!2=&'%='!1%=2!&#$$)>)&!4)!$&313>(J3)&!>P='3>32#'3%0!4=!B%'!6>(!O)Y*!

V%=&! 4('&=3&)! =0! %Ei)'I! 3>! 2=QQ3'! 4)! >)!B)''&)! p! O%'G30J*! :%=2! 0)! $%=1)e! $#2! 4('&=3&)! =0! %Ei)'!32!1%=2!$%=1)e!&(303'3#>32)&!=0)!1#&3#E>)!%Ei)'!$%30'#0'!2=&!=0!4)!6)2!%Ei)'2*!D=PL\6)>!#!302'#063(I!B#

Sub TestObjet() Dim xlApp As Excel.Application, MaColl As Collection

ion Set MaColl = New Collect MaColl.Add "élément1"

ion 'détruit l'objet collect Set MaColl = Nothing Set xlApp = Application 'réinitialise la variable xlApp Set xlApp = Nothing 'écriture interdite, impossible de détruire une instance créé par Excel 'Set Application = Nothing End Sub

!)2'!=0!$)=!6%B$>)\)I!B#32!4#02!>)!B%4W/)'!#2$)6'!4)2!6G%2)2 >)!%Ei)'!L\6)>!)'!)0!='3>32#0'!:SKI!! 3>! )\32')! $&)2D=)! '%=i%=&2!=0)!B('G%4)!!1%=2!0P#1)e!$#2!p!J(&)&!>P302'#063#'3%0!03!

%0!4)2!%Ei)'2!L\6)>*!

1%=2! 0P#=&)e! D=#23B)0'! i#B#32! p! 302'#063)&! >)2! %Ei)'2!L\6)>I6)>!$&)042!>)!B(6#032B)!)0!6G#&J)*!K='&)B)0'!43'IK44!%x!L\

>#!Q30#>32#'3

! ++@

Page 111: Cours VBA débutants.pdf

Qualification & Manipulation des membres "#!D=#>3Q36#'3%0I!6P)2'!4%06!>)!6G)B30!)\#6'!4P=0!B)BE&)!2$(63Q3D=)!4P=0!%Ei)'!4(Q303*!"#!$&)B3W&)!

)&&)=&!p!0)!$#2!6%BB)''&)!)2'!4)!6%0Q%04&)!>)!D=#>3Q36#')=&!)'!>)!'-$)*!V#&!)\)B$>)!23!0%=2!(6&31%02!v! Dim Police As Excel.Font Set Police = ThisWorkbook.Worksheets(1).Range("A1").Font

")!'-$)!4)!>#!1#&3#E>)!PV%>36)P!)2'!L\6)>*[%0'!j%=![%0'!6#&!L\6)>!$)='!8'&)!%B32!4#02!>#!4(6>#&#'3%0k!#>%&2! D=)! >)! D=#>3Q36#')=&I! 6P)2'opo43&)! >#! 4(23J0#'3%0! 4P=0! %Ei)'! [%0'! 4(Q303! )2'!<G32`%&aE%%a*`%&a2G))'2j+k*T#0J)jrK+rk*!

F0!='3>32)!>P%$(&#')=&!*!j$%30'k!$%=&!>#!D=#>3Q36#'3%0I!2%=2!>#!Q%&B)!FEi)'*C)BE&)*!A134)BB)0'I!23!>)!B)BE&)! &)01%3)! =0! %Ei)'I! %0! $)='! (6&3&)!FEi)'*C)BE&)*C)BE&)! )'! #3023! 4)! 2=3')*!b(0(&#>)B)0'I!>P70')>>3X)02)!1%=2!Q%=&03'!>)2!(>(B)0'2!4)!>P30')&Q#6)!4)!>P%Ei)'!)0!6%=&2!B#32!1%=2!6%02'#')&)e!D=)!4#02!6)&'#302!6#2I!#>%&2!D=)!>)!B)BE&)!)0!6%=&2!&)01%3)!E3)0!=0!%Ei)'I!3>!0P-!$#2!4P#QQ36G#J)!4)!>P70')>>3X)02)*!

V#&! )\)B$>)! 23! 1%=2! '#$)e! K6'31)`%&aE%%a*! 70')>>3X)02)! 1#! #QQ36G)&! >)2! B)BE&)2! 4)! >P%Ei)'!`%&aE%%aI!$#&!6%0'&)I!23!1%=2!'#$)e!K6'31)XG))'*!T3)0!0)!1#!2P#QQ36G)&*!7>!0)!2P#J3'!$#2!4P=0!E=J!B#32!4P=0!$G(0%BW0)!4Ç!p!>#!4(Q303'3%0!4)!>#!B('G%4)*!V%=&!6%B$&)04&)!6)>#I!#6'31)&!>P)\$>%&#')=&!4P%Ei)'2!)0!#$$=-#0'!2=&![?I!2(>)6'3%00)e!>#!6>#22)!K$$>36#'3%0!$=32!>)!B)BE&)!K6'31)`%&aE%%a*!"#!4(Q303'3%0!4=!B)BE&)!)2'!v!

V&%$)&'- ActiveWorkbook K2 WorkbookX(>)6'3%00)e!B#30')0#0'!>)!B)BE&)!K6'31)XG))'I!)'!1%=2!1)&&)e!>#!4(Q303'3%0!v!V&%$)&'-!ActiveSheet!K2!FEi)6'!/%BB)!>)!'-$)!&)01%-(!)2'!FEi)6'!)'!D=)!6)!'-$)!0P#!$#2!4)!B)BE&)2I!70')>>3X)02)!0P#QQ36G)!&3)0*!

/)!$G(0%BW0)!4)! &=$'=&)!)2'! #22)e! Q&(D=)0'! >%&2D=P%0! &)01%3)!=0!B)BE&)!4P=0)!6%>>)6'3%0*!X3!1%=2!6%00#322)e! >)! '-$)! 2%=2oi#6)0'! &)01%-(I! 1%=2! $%=1)e! ='3>32)&! =0)! 1#&3#E>)! %Ei)'! '-$()! 6%&&)6')B)0'!$%=&!&('#E>3&!>P70')>>3X)02)*!V#&!)\)B$>)!v!Sub TestQualif() Dim Police As Font, Feuille As Worksheet Set Feuille = ActiveSheet Set Police = Feuille.Range("A1").Font End Sub

K'')0'3%0! '%=')Q%32I! 6)! 6%4)! )2'! $%')0'3)>>)B)0'! 2%=&6)! 4P)&&)=&2*! X3! >#! $&%$&3('(! K6'31)XG))'!&)01

Sub

%3)!=0)!&(Q(&)06)!4)!'-$)!FEi)6'I!6P)2'!$#&6)!D=)!>#!Q)=3>>)!#6'31)!0P)2'!$#2!Q%&6(B)0'!=0)!Q)=3>>)!4)!6#>6=>!B#32!$)='!8'&)!#=223!=0)!Q)=3>>)!J&#$G3D=)!%=!=0)!Q)=3>>)!B#6&%*!

<%=2!>)2!B)BE&)2!0)!&)01%3)0'!$#2!4)2!%Ei)'2I!0P%=E>3)e!$#2!D=)!>)2!$&%$&3('(2!2)!JW&)0'!6%BB)!4)2! 1#&3#E>)2I! 6P)2'opo43&)! D=P%0! &(6=$W&)! %=! #QQ)6')! 4)2! 1#>)=&2I! #>%&2! D=)! >)2! B('G%4)2! 2)! JW&)0'!6%BB)!4)2!Q%06'3%02*!/)&'#30)2!B('G%4)2!&)01%3)0'!=0!&(2=>'#'I!4#02!6)!6#2!>#!&WJ>)!4)2!$#&)0'GW2)2!2P#$$>3D=)!#1)6!%=!2#02!>P='3>32#'3%0!4)!/#>>*!

TestQualif() Dim Police As Font, Couleur As Long, Valeur As String Dim Commentaire As Comment, Plage As Range Valeur = "Test" 'affecte un objet Range à la variable objet Set Plage = Range("A1") 'affecte un objet Font à la variable objet Set Police = Plage.Font 'Lit la valeur d'une propriété Couleur = Plage.Interior.Color 'Affecte une valeur à une propriété Plage.Value = Valeur 'Exécute une méthode et récupère la référence renvoyée Set Commentaire = Plage.AddComment("commentaire") 'Exécute une méthode et ne récupère pas la valeur renvoyée False) Call Commentaire.Text("c'est un ", 1, 's'écr it aussi 'Commentaire.Text "c'est un ", 1, False End Sub

! +++

Page 112: Cours VBA débutants.pdf

/)!6%4)!)\) #!2#02!$&%E>WB)*!/)$)04#0'!23!%0!&)J#&4)!>#!4)=\3WB)!302'&=6'3%0! Set Plage = Range("A1")

B$>)!Q%06'3%00)&

F0!1%3'! '!T#0J)!0P)2'!$#2!D=#>3Q3(*!/%BB)0'!)\$>3D=)&!#>%&2!D=)!6)>#!Q%06'3%00)*!L0!

$&3063$)!4)!Q%06'3%00)B)0'!4=!26%$)!)2'!#22)e!6%B$>)\)!p!#$$&(G)04)& %02!0%=2!$#2!>P('=43)&!363*!/)$)04#0'!1%=2!$%=1)e!>)!132=#>32)&!Q#63>)B)0'!4#02!>P)\$>%&#')=&! E =2!#$$=-)e!2=&![?I!)'!D=)!1%=2!&)J#&4)e!>P#QQ36G#J)!$#&!4(Q#='!4=!1%>)'!4)2!6>#22)2I!1%=2!#>>)e!1%3&!=0)!)0'&()!B#&D=()!rJ>%E#>)2r*!

E3)0!D=)!>P%Ei)Q#3'I! >)2! >#0J#J)2!:32=#>!S#236! ='3>32)0'! =0! $&3063$)I! #$$)>(! X6%$)I! D=3! $)&B)'! 4P='3>32)&! 6)&'#302!

%Ei)'2!%=!Q%06'3%02!2#02!D=#>3Q36#'3%0*!")!I!#=223!0P#>>4P% i)'2*!X3!1%

!")2!B)BE&)2!4)!6)'')!)0'&()!2%0'!>)2!B)BE&)2!4=!26%$)!:SKI!6P)2'opo43&)!>)2!B)BE&)2!D=3!0P%0'!

$#2!E)2%30!4P8'&)!D=#>3Q3(2!$%=&!8'&)!='3>32(2*!X3!0%=2!6G)&6G%02!>)!B)BE&)!T#0J)I!0%=2!'&%=1%02!v!

! ++?

Page 113: Cours VBA débutants.pdf

!/%BB)!1%=2!>)!1%-)eI!6)'')!$&%$&

J3('(!)2'!)0!>)6'=&)!2)=>)I!6P)2'opo43&)!D=)!1%=2!0)!$%=1)e!$#2!-!)!&)$&(2)0')!=0)!%=!$>=23)=&2!6)>>=>)2!6%BB)!0%=2!>)!1)&&%02!

! 031)#=! 4)! >P#$$>36#'3%0I! $=32D=)! =0)! $>#J)! 4)!#QQ)6')&!=0!%Ei)'!T#0J)*!g0!%Ei)'!T#0E3)0'm'! )0! 4('#3>*! L0! 2%3'I! 6)>#! 0P#! $#2! 4P)\32')06)! #=6)>>=>)2!#$$#&'3)0'!Q%&6(B)0'!p!=0)!Q)=3>>)!4)!6#>6=>*!L0!Q#3'I!L\6)>!='3>32)!>)!6%06)$'!4P%Ei)'2!#6'3Q2!%=!2(>)6'3%00(2*!K3023! 23!1%=2! &)J#&4)e! >)2!$&)B3)&2!B)BE&)2!4(Q3032!4#02! PJ>%E#>)2PI! 1%=2! '&%=1)&)e! >)!6>#22)=&!#6'3QI!>#!Q)=3>>)!#6'31)I!>#!Q)08'&)!#6'31)I!)'6*!

"P%Ei)'! T#0J)! D=)! 1%=2! $%=1)e! #'')304&)! 2#02! D=#>3Q36#'3%0! 6%&&)2$%04! 4%06! p! =0)! $>#J)! 4)!6)>>=>)I!4)!>#!Q)=3>>)!#6'31)!4=!6>#22)=&!#6'3Q*!/)'')!0%'3%0!('#0'!$%=&!>)!B%302!4#0J)&)=2)I!3>!6%013)0'!4)!E3)0!6%B$&)04&)!6)!D=P)2'!=0)!&(Q(&)06)*!

Gérer les références ]#02!>#!$&%J&#BB#'3%0!L\6)>I!%0!'&#1#3>>)!2=&!4)2!%Ei)'2!)\32'#0'2*!"#!D=#>3Q36#'3%0!%=!>P='3>32#'3%0!

4)!1#&3#E>)!%Ei)'!0P#!$#2!4P#='&)!E='!D=)!1%=2!$)&B)''&)!4)!4(23J0)&!2$(63Q3D=)B)0'!=0!%Ei)'*!V)=!1%=2!3B$%&')!4)!2#1%3&!%x!)'!6%BB)0'!)2'!J(&)&!6)'!%Ei)'!)0!&(#>3'(I!3>!2=QQ3'!D=)!1%=2!2#6G3)e!>)!4(23J0)&*!V%=&!$%=1%3&!Q#3&)!6)>#I!1%= =>)&!4)2!&(Q(&)06)2!p!6)'!%Ei)'!D=3!0)!2%0'!&3)0!4P#='&)2!D=)!4)2!&)$&(2)0'#'3%02!4)!2 22)*!

L\6)>! B#30'3)0'! ! 0%BE &)0 $%&#3& D=)! >)! 6>#22)=&! #6'3Q! %=! >#!Q)=3>>)!#6'31)I! 2)=>)B 63!$)= J)& &2!4=! ' ! >P#6'3%0!4PL\6)>I!4)!1%'&)!6%4)!%=!4)!>P='3>32#')= =&!6)> '!J B)0'!0) '3>32)&!2#=Q!23!1%=2!#1)e!la certitude!D=)!$)04#0 4)!1%'& 0I! (23J0)&% '!>)2!E%02!%Ei)'2*!!

K6'31)`304%Y! K6'31)`%&aE%%a! X)>)6'3%0!

")2! B)BE&)2! 2=31#0'2! >%&2D=P3>2! 2%0'! ='3>32(2! 2#02! D=#>3Q36#')=&! &)01%3)0'! p! >P%Ei)'! #6'3Q! )'!$&(2)0')0'!4%06!>)2!B8B)2!306%01(03)0'2*!

/)>>2! /%>=B02! O#B)2! T#0J)! T%Y2!

2!#>>)e!B#03$%0!#4&)=0! 6)&'#30 &)! 4)! &(Q( 6)2! ')B )2I! ')>>)!)0'!6)>>)2o 1)0'!6G#0 !#=!6%= )B$2!2%=2&*!/P)2'!$% #!D=P3>!Q#= (0(&#>) !$#2!>)2!='!>)!')B$2! )!)\(6='3% )>>)2!4 0'!Q%&6(B)0

/)2!&(Q(&)06)2!')B$%&#3&)2!4#02!L\6)>!2P#$$)>>)0'!v! K6'31)/)>>! K6'31)/G#&'! K6'31)XG))'!

! ++U

Page 114: Cours VBA débutants.pdf

:%=2! 0)! 4)1)e! $1

#2! $)&4&)! 4)! 1=)! D=)! 6)2! (>(B)0'2! 0P)\32')0'! $#2! %E>3J#'%3&)B)0'I! 23! >#! Q)=3>>)!#6'3

0'&)! 3>! )\32')! 4)=\! &(Q(&)06)2! Q3#E>)2I! K$$>36#'3%0! D=3! $%30')! 1)&2! >#! 2)223%0! L\6)>! 4#02!>#D=)>>)! p! ')0#0'! 1%'&)! 6%4)I! )'! <G32`%&aE%%a! D=3! 4(23J0)! >)! 6>#22)=&!6%0')0#0'!1%'

&(Q(&)06)!')B$%&#3&)!0)!B%43Q3)&#!$#2!>#!&(Q(&)06)!

)!)2'!=0)!Q)=3>>)!J&#$G3D=)!$#&!)\)B$>)I! >P#$$)>!4P=0!4)2!B)BE&)2!4)! >#! >32')!63o4)22=2!1#! >)1)&!=0)!)&&)=&!$=32D=P3>2!0P%0'!4P)\32')06)!D=)!23!K6'31)XG))'!)2'!=0)!Q)=3>>)!4)!6#>6=>*!

V#&! 6%('(! %=1)&'! >)! 6>#22)=&! 6%0&)!6%4)I!$=32D=)!6)>=3o63!)2'!Q%&6(B)0'!%=1)&'!$%=&!D=)!>)!6%4)!$=322)!2P)\(6=')&*!

X3!1%=2!4(Q30322)e!=0)!1#&3#E>)!%Ei)'!2=&!=0)!4)!6)2!&(Q(&)06)2! ')B$%&#3&)2I!1%'&)! &(Q(&)06)!)>>)!4)13)04&#!Q3\)*!K='&)B)0'!43'I!>#!B%43Q36#'3%0!4)!>#!4)!1%'&)!%Ei)'*!Dim MaFeuille As Worksheet If Not ActiveSheet Is Nothing Then

eet Set MaFeuille = ActiveSh MaFeuille.Next.Activate MsgBox MaFeuille.Name & vbNewLine & ActiveSheet.Name End If

O%=2!#>>%02!%E')03&!>P#QQ36G#J)!4)!v!

!K=!4(E='!4=!6%4)I!K6'31)XG))'!Q#3'!&(Q(&)06)!p!>#!Q)=3>>)!P[)=3>+P!4=!6>#22)=&!#6'3Q*!hP#QQ)6')!6)'')!

&(Q(&)06)!p!>#!1#&3#E>)!'MaFeuille'I!D=3!4=!6%=$I!$%30')!)>>)!#=223!2=&!>#!B8B)!Q)=3>>)*!hP#6'31)!>#!Q)=3>>)!2=31#0')!4=!6>#22)=&!p!>P#34)!4)!>P302'&=6'3%0!v! MaFeuille.Next.Activate

K6'31)XG))'! Q#3'! #>%&2! &(Q(&)06)! p! >#! 0%=1)>>)! Q)=3>>)! #6'31)I! 6P)2'opo43&)! P[)=3>?P1#&3# euille'!0P)2

*!/)$)04#0'!B#!'!$#2!B%43Q3()!$#&!>)!6G#0J)B)0'!4)!Q)=3>>)!#6'31)I!4W2!>%&2!%0!#!=0!#QQ36G#J)!=32D=)!>)2!4)=\!&(Q(&)06)2!2%0'!43QQ(&)0')2*!

E>)!'MaF4)2!4)=\!0%B2!43QQ(&)0'2!$

L'opérateur Is! v! /)'! %$(&#')=&! 4(Q303'! 23! 4)=\! 4(23J0#'3%02! Q%0'! &(Q(&)'+!72!FEi)'?!&)01%3)!1&#3!23!>)2!&(Q(&)06)2!2%0'!34)0'3D=)2I!Q#=

06)! p! =0! B8B)! %Ei)'*!"P)\$&)223%0!FEi) \!23!0%0*!

Architecture Excel <%='!6)>#!$)='!)06%&)!$#&#f'&)!=0!$)=!%E26=&!23!1%=2!0)!Q#3')2!$#2!>P#0#>%J3)!)0'&)!>)!B%4W>)!%Ei)'!

L\6)>! )'! >P#$$>36#'3%0!L\6)>! ')>>)! D=P)>>)! )2'! #&6G3')6'=&()*! "%&2D=)! 1%=2! >#06)e!L\6)>I! 1%=2! #1)e! >#!$%223E3>3'(! 4)! B#03$=>)&! $>=23)=&2! 6>#22)=&2I! 6G#6=0! $%=1#0'! 6%0')03&! $>=23)=&2! Q)=3>>)2! 4)! '-$)2!34)0'3D=)2! %=! 43QQ(&)0'2! jQ)=3>>)! 4)! 6#>6=>I! J&#$G3D=)kI! 6G#D=)! Q)=3>>)! 4)! 6#>6=>! 6%0')0#0'! +.555?+.!6)>>=>)2!&#0J()2!2%=2!>#!Q%&B)!.NNU.!>3J0)2!)'!?N.!6%>%00)2*!:%=2!$%=1)e!B#03$=>)&!6)2!6)>>=>)2!=0)!$#&!=0)!%= '30=)!%=!4326%0'30=)*!

")!B% 0)! )\#6')B)0'! 4)! >#!B8B)! Q#q%0*!:%=2! 0P#1)e! D=P=0! 2)=>! %Ei)'!V#&)

%aI!6G#6=0!&)01%-#0'!'%=')2!2)2!Q)=3>>)2!$#&!2#!6%>>)6'3%0!XG))'2*!)\$%2)0'! >)=&2!6)>>=>)2!$#&! >)!E3#32!4)!$&%$&3('(2!/)>>2I!T%Y2I!/%>=B02I!B#32!!4)!$>#J)!$#&!>P%Ei)'!T#0J)*!g0!%Ei)'!/)>>2!)\$%2)!#=223!4)2!%Ei)'2!S%&4)&2!

3%&!$%=&!>)!6%&$2!4)!>#!6)>>=>)I!)'6*!)!4)!Q)=3>>)2!J&#$G3D=)2!)'! >)=&!>%&2D=P3>2!2)&%0'!2%=2!>#!Q%&B)!4)!!=0!%Ei)'!`%&a2G))'*!

#32! 4322%63#'3%0! 4)! >P#&6G3')6'=&)! 4PL\6)>! )'! 4=!B%4W>)! %Ei)'!B#03$=>(I! 23! 1%=2! #1)e!p!>P)2$&3'!D=3!6%0'3)0'!D=%3!4#02!L\6)>I!1%=2!6%00#322)e!>)!B%4W>)!%Ei)'!L\6)>*!

!2%=2!>#!Q%&B)!4)!$>#J)!6%04W>)! %Ei)'!L\6)>! Q%06'3%0

0'I!K$$>36#'3%0*!/)>=3o63!1#!1%=2!&)01%-)&!$#&!>)!E3#32!4)!$&%$&3('(2!4)2!%Ei)'2!%=!4)2!6%>>)6'3%02!4P%Ei)'2! 6%00)\)2! D=P3>! 6%0'3)0'*!K3023! $#&! 2#! $&%$&3('(!`%&aE%%a2! 3>! 1%=2! 4%00)&#! #66W2! p! '%=2! >)2!6>#22)=&2!%=1)&'2I!>)2!%Ei)'2!`%&aE%")2!Q)=3>>)2!4)!6#>6=>2!223!>)!'&#1#3>!2%=2!Q%&B)#=

$%=&!>P)06#4&)B)0'I!=0!FEi)'!70')&")2!J&#$G3D=)2!2)&%0'!4)2!%Ei)'2!/G#&'2! >%&2D=P3>2!2%0'!2%=2!Q%&B

$#&)0'!2)&#!#>%&2!=0!6>#22)=&!j`%&aE%%ak!%=!4)2!%Ei)'2!/G#&'FEi)6'2!J&#$G3D=)2!306%

7>! 0P-! #! i#B&$%&(2!p!=0)!Q)=3>>)!4)!6#>6=>!)'!>)=&!$#&)0'!2)&#!#>%&2

6>#3&)B)0'!

! ++,

Page 115: Cours VBA débutants.pdf

]W2! >%&2I! D=#>3Q3)&! =0! %Ei)'! 4)13)0'! 4P=0)! 23B$>363'(! E3E>3D=)*! X3! i)! 1)=\! )06#4&)&! >#! $>#J)! 4)!6)>>=>)2!K+v/+@@!4)!>#!Q)=3>>)!4)!6#>6=>!0%BB()!P]%00()2P!4=!6>#22)=&!%=1)&'!/#>6=>*\>2I!3>!B)!2=QQ3&#!

Application.Workbooks("calcul.xls").Worksheets("Données").Range("A1:C100").4P(6&3&)!v!

BorderAround xlContinuous %32!6)!6>#22)=&IA134)BB)0'I!23!>)!6%4)!)2'!#B)0(!p!B#03$=>)&!$>=23)=&2!Q

B$>)!4)!4(6>#&)&!4)2!1#&3#E>)2!%Ei)'2!#4(D=#')2!6!%=!6)'')!Q)=3>>)!%=!6)'')!

$>#J)I!3>!)2'!$>=2!23 #&!>)!6%4)!2)&#!$>=2!Q#63>)!p!(6&3&)*!K3023!>)!6%4)!$&(6(4#0'!$%=&&#3'!8'&)!4)!>#!Q%&B)!v!

Dim M sheet aFeuille As Work Set MaFeuille = Application.Workbooks("calcul.xls").Worksheets("Données") MaFeuille.Range("A1:C100").BorderAround xlContinuous

h)! $%=&&#32! )02=3')! ='3>32)&! $#&'%='! >#! 1#&3#E>)! C#[)=3>>)! )0! >3)=! )'! $>#6)! 4=! D=#>3Q36#')=&!K$$>36#'3%0*`%&aE%%a2jr6#>6=>*\>2rk*`%&a2G))'2jr]%00()2rk*!

7>!)2'!E3)0!D=)2'3%0!363!4)!>P#&6G3')6'=&)!L\6)>!)'!0%0!4=!B%4)!4)!Q%06'3%00)B)0'*!]#02!2%0!B%4)!='3>32#')=&I!D=3!)2'!#=223!6)>=3!4)!>P)0&)J32'&)=&!4)!B#6&%!$#&!>#!Q%&6)!4)2!6G%2)2I!L\6)>!#J3'!)0!B%4)!2(>)6'3%0o!K6'3%0*!")!B8B)!6%4)!#=&#3'!#>%&2!=0)!Q%&B)!23B3>#3&)!p!v! Workbooks("calcul.xls").Activate Sheets("Données").Select Range("A1:C100").Select Selection.BorderAround xlContinuous

/P)2'!i=2')B)0'!6)'')!Q%&B)!D=P3>!Q#='!2P#$$>3D=)&!p!0)!$#2!&)$&%4=3&)!6#&!)>>)!$&%4=3'!=0!6%4)!>)0'!)'!$)=!>323E>)*!

")!4)=\3WB)!#2$)6'!#&6G3')6'=&#>!p!#$$&(G)04)&!)'!>#!B#03$=>#'3%0!4)2!6)>>=>)2!)'!4%4)!&(

06!>)!2-2'WB)!

%4)2!4)!0%'#'3%0!)'!4)=\!'-$)2!4)!&(Q(&)06)2*!")2!B%4)2!4)!0%'#'3%0!4($)04)0'!4)!>#!Q#q%0!4%0'!2%0'!34)0'3Q3()2!>)2!6%>%00)2*!"#!B%4)!rK+r!>)2!34)0'3Q3)!p!>P#34)!4)! >)''&)2I! >)! B%4)! r"+/+r! jT+/+r! )0! #0J>#32k! $#&! 4)2! 0%BE&)2*! ")2! &(Q(&)06)2! 2%0'! #E2%>=)2! %=!&)>#'31)2*! g0)! &(Q(&)06)! #E2%>=)! &)01%3)! =0)! $%23'3%0! 4)! 6)>>=>)! )0! Q%06'3%0! 4)! 2#! $%23'3%0! 4#02! >#!Q)=3>>)I!=0)!&(Q(&)06)!&)>#'31)!&)01%3)!=0)!$%23'3%0!)0!Q%06'3%0!4P=0)!#='&)!$%23'3%0*!g0)!#4&)22)!$)='!8'&)!#=223!$#&'3)>>)B)0'!&)>#'31)!)0!>3J0)!%=!)0!6%>%00)*!]#02!>)!'#E>)#=!2=31#0'I!0%=2!1%-%02!>P(6&3'=&)!4)!>P#4&)22)!rS?r!4#02!>#!6)>>=>)!rK+r!4#02!'%=2!>)2!B%4)2*!

Références A1 L1C1

Q(&)06)!4)2!Q)=3>>)2!4)!6#>6=>*!L\6)>!='3>32)!3043QQ(&)BB)0'!4)=\!B

Ligne Colonne KE2%>=)! KE2%>=)! R^S^?! R"?/?!KE2%>=)! T)>#'31)! RS^?! R"?/j+k!T)>#'31)! KE2%>=)! R^S?! R"j+k/?!T)>#'31)! T)>#'31)! RS?! R"j+k/j+k!

L0!:SKI! >)2! 0%'3%02! &)>#'31)2! )'! #E2%>=)2! )\32')0'! #=223! 4#02! >#! Q#q%0! 4)! $&%J&#BB)&! 6%BB)!0%=2!>)!1)&&%02!4#02!>P('=4)!4)!>P%Ei)'!T#0J)*!V#&!6%0'&)!i)!1%=2!6%02)3>>)!131)B)0'!4)!6G%323&!=0!'-$)!4)!0%'#'3%0!)'!4)!1%=2!-!')03&I!230%0!>)!6%4)!)2'!&#$34)B)0'!#22)e!$(03E>)!p!>3&)*!

! ++N

Page 116: Cours VBA débutants.pdf

Les pièges ")2! $3WJ)2! 4=!B%4W>)! %Ei)'! L\6)>! 0)! 2%0'! $#2! '&W2! 0%BE&)=\I! 3>! )2'! 30432$)02#E>)! 4)! E3)0! >)2!

6%00#f'&)*!

Référence implicite ")!$&)B3)&!)2'!>#!$%223E3>3'(!p!6#=2)!4=!26%$)!4)!6&()&!4)2!&(Q(&)06)2!3B$>363')2!$%=1#0'!>)1)&!4)2!

)&&)=&2*!V&)0%02!=0!6%4)!)\)B$>)*!Sub ImplicitRef() Dim MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") MaFeuille.Next.Activate MaFeuille.Range(Cells(1, 1), Cells(10, 5)).ClearContents End Sub

"#! 0%'#'3%0! T#0J)j/)>>2jkI/)>>2k! &)01%3)! =0)! $>#J)! 4)! 6)>>=>)! 6%0'30=)! )0'&)! >)2! 4)=\! 6)>>=>)2!4(Q303)2!6%BB)!#&J=B)0'*!K='&)B)0'!43'!v! Range(Cells(1, 1), Cells(10, 5))

T)01%3)! >#! $>#J)! rK+vL+@r*! V%=&'#0'! B%0! 6%4)! )\)B$>)! 1#! >)1)&! =0)! )&&)=&! +@@,! 3043D=#0'!>P3B$%223E3>3'(!4)!&(2%=4&)!>#!B('G%4)!T#0J)*!V%=&D=%3!6)>#!|!

!3Q3()2!p!

1), MaFeuille.Cells(10,

O%=2!4)1%02!0%=2!&#$$)>)&!4)!>P)\32')06)!4=!26%$)*!X3!>#!$&%$&3('(!T#0J)!='3>32()!)2'!6%&&)6')B)0'!D=#>3Q3()I! >)2!4)=\!$&%$&3('(2!/)>>2!0)! >)!2%0'!$#2*!/%BB)!>)!X6%$)!&)01%3)!4)2!$&%$&3('(2!/)>>2I!6)!2%0'!)>>)2!D=3!2%0'!$&32)2!)0!6%B$')*!/)>>)2o63!2%0'!4)2!&(Q(&)06)2!p!>#!Q)=3>>)!#6'31)I!#>%&2!D=)!T#0J)!Q#3'!&(Q(&)06)!p!=0)!#='&)!Q)=3>>)*!7>!0P)2'!(134)BB)0'!$#2!$%223E>)!4)!6%02'&=3&)!=0)!&(Q(&)06)!2=&!=0)Q)=3>>)!)0!='3>32#0'!4)2!&(Q(&)06)2!4P=0)!#='&)!Q)=3>>)*!")2!$&%$&3('(2!/)>>2!4%31)0'!4%06!8'&)!D=#>>P34)0'3D=)!6)!D=3!2)!0%')&#!v! MaFeuille.Range(MaFeuille.Cells(1,5)).ClearContents

F=!#>%&2! With MaFeuille .Range(.Cells(1, 1), .Cells(10, 5)).ClearContents End With

La propriété Sheets

>32#0'!6)'')!6%>>)6'3%0!)'!$&313>(J3)&!$>='m'!>)2!6%>>)6'3

")2!%Ei)'2!`%&aE%%a! j6>#22)=&k! )\$%2)0'!=0)!$&%$&3('(!XG))'2!D=3! &)01%3)!=0)!6%>>)6'3%0*!X3! >#!$>=$#&'!4)2!6%>>)6'3%02!4P%Ei)'2!4=!B%4W>)!L\6)>!&)01%3)0'!4)2!%Ei)'2!4)!B8B)!'-$)I!6)!0P)2'!$#2!>)!6#2!4)! 6)>>)o63*! ")2! Q)=3>>)2! 4P=0! 6>#22)=&! $)=1)0'! 8'&)! 4)! $>=23)=&2! '-$)2! 43QQ(&)0'2I! Q)=3>>)2! 4)! 6#>6=>I!J&#$G3D=)2I!B#6&%2*!:%=2!4)1)e!4%06!Q#3&)!#'')0'3%0!)0!='3

%02!/G#&'2!%=!`%&a2G))'2*!

Membre par défaut ])!0%BE&)=\!%Ei)'2!$%22W4)0'!=0!B)BE&)!$#&!4(Q#='I!J(0(&#>)B)0'!=0)!$&%$&3('(*!X3!1%'&)!6%4)!

)2'!#BE3J=I!>P30')&$&(')=&!$)='!6&%3&)!D=)!1%=2!Q#3')2!&(Q(&)06)!p!6)'')!$&%$&3('(!$#&!4(Q#='!$>='m'!D=Pp!>P%Ei)'*!T)J#&4%02!>)!6%4)!2=31#0'!v!Sub TestDefaut() Dim MaCellule As Variant MaCellule = ThisWorkbook.Worksheets(1).Range("A1") Debug.Print MaCellule & " " & TypeName(MaCellule) '21 Double End Sub

! ++.

Page 117: Cours VBA débutants.pdf

"#!1#&3#E>)!MaCellule!6%0'3)0'! >#!1#>)=&!4)!>#!6)>>=>)!K+*!L0!)QQ)'I!$%=&!>P30')&$&(')=&I!23! iP#1#32!1%=>=!&(6=$(&)&!>#!&(Q(&)06)!4)!>P%Ei)'!6)>>=>)I!iP#=&#32!(6&32!v! Set MaCellule = ThisWorkbook.Worksheets(1).Range("A1")

/%BB)!i)!0P#3!$#2!B32!X)'I!3>!>3'!>#!>3J0)!6%BB)!('#0' ThisWorkbook.Worksheets(1).Ra

!nge("A1").Value MaCellule =

)!:#V=32D= >=)!)2'!>#!$&%$&3('(!$#&!4(Q#='!4)!>P%Ei)'!T#0J)*!

Ap

es collections

plication "P%Ei)'!K$$>36#'3%0!&)$&(2)0')!4%06!=0)!302'#06)!4PL\6)>*!

Propriétés renvoyant d 06)2!3B$>363')2!

B)0'!0%=2!G#E3'=)&!p!0)!$#2!>)2!='3>32)&*!")2!$&%$&3('(2!/)>>2I!/G#&'2I!/%>=B02I!T%Y2I!XG))'2I!O#B)2!)'6*I!2%0'!4)2!&(Q(&)

#=!031)#=!4)!>P%Ei)'!K$$>36#'3%0*!O%=2!#>>%02!i=2')

CommandBars T)01%3)! >#!6%>>)6'3%0!4)2!B)

03$=>#'3%0!4)2!E#&&)0=2!)'!4)2!E#&&)2!4P%='3>2!4)! >P#$$>36#'3%0!L\6)>*!O%=2!0)! '&#3')&%02!2!4)!B)0=2**!$#2!363!4)!>#!B#

Dialogs #>%J2! 4)2! E%f')2! 4)! 43#>%J=)2! $&(4(Q303)2! 4#02! L\6)>*! V#&! )\T)01%3)! >#! 6%>>)6'3%0! ]3 )B$>)!

ion.Dialogs(xlDialogCellProtection).Show True, False >P302'&=6'3%0!4)!>#!>3J0)!v! Applicat

](6>)06G)&#!>P#QQ36G#J)!4)!>#!E%f')!

!"P='3>3 J=)2!30'(J&()2!0P)2'!$#2!'&313#>)I!0%=2!0)!0%=2!>P('=43)&%02!

$#2!$%=&!>P2#'3%0!6%&&)6')!4)2!E%f')2!4)!43#>%302'#0'*!

Windows T)01%3)! >#! 6%>>)6'3%0! 4)! '%=')2! >)2! Q)08'&)2! 4)! >P#$$>36#'3%0*!F0!B#03$=>)! &#&)B)0'! >)2! Q)08'&)2!

4#02! >)! 6%4)! :SK! $=32D=)! >P%0! 6G)&6G)! 2%=1)0'! p! 6%4)&! 2#02! 30')&#6'3%0! 132=)>>)*! F0! ='3>32)! $>=2!J(0(&#>)B)0'!>#!6%>>)6'3%0!`304%Y2!&)01%-()!$#&!>P%Ei)'!`%&aE%%a*!

! ++5

Page 118: Cours VBA débutants.pdf

Workbooks T)01%3)! >#! 6%>>)6'3%0!4)2!6>#22)=&2!%=1)&'2!4#02! >#! 2)223%0!L\6)>*!/)'')! 6%>>)6'3%0!$)&B)'! #=223!

4P%=1&3&!%=!4P#i%=')&!4)2!6>#22)=&2*!

Propriétés ")2!$&%$&3('(2!4)! >P%Ei)'!K$$>36#'3%0! 30Q>=)0'! 2=&! >#!6%0Q3J=&#'3%0!4PL\6)>*!V#&!6%01)0'3%0I!1%=2!

4)1)e!&)B)''&)!6)2!$&%$&3('(2!p!>#!1#>)=&!4P%&3J30)!#1#0'!>#!Q30!4)!>#!2)223%0*!

Calculation & CalculateBeforeSave (Boolean)"#!$&%$&3('(!/#>6=>#'3%0!4(Q303'!>)!B%4)!4)!6#>6=>!4PL\6)>*!L>>)!$)='!$&)04&)!>)2!1#>)=&2!v!

lationAutomatic!lC nSemiautomatic

xlCa ion&8'! p! E D=)&! >)! 6#>6=>! #= >=>)2! 4#02! 4)2!

6>#22)=&2!6%0')0#0'!E)#=6%=$!4)!Q%&B ##')S) X#1)!4(Q303'!23!>) %=&!>)2!6>#22)=&2!#=!B%B)0'!

4)!

xlCalcux alculatio

lculat Manual '%B#'3D=)! >%&2D=P%0! B%43Q3)! 4)2! 6)>F0! $)='! #1%3&! 30'( >%

=>)!23!%0!0P !$#2!E)2%30!4)!&(2=>'#'2!3BB(43#')B)0'!4#02!>)!6%4)*!!6#>6=>!4%3'!8'&)!!Q%&6(!$"#!$&%$&3('(!/#>6=> Q%&)

>)=&!2#=1)J#&4)*!

Caller T)01%3)!=0!34)0'3'! >P#$$)>! 4P=0)! Q%

Q36#')=& &!>P# 013)0 06'3%0! *! K$$>36#'3%0*/ Ei)'! T#0J)! 23! >P#$$)>! 13)0'! 4P=0)!6)>>=>)I!=0)!6G#f0)!%=!=0!34)0'3Q36#')=&!$%=&!4)2!BPublic Function Conv2Farenheit(ByVal Double

!$%=:SK

$$)>#0'*!F !='3>32)!J(0(&#>)B)0'!6)'')!$&%$&3('(!$%=&!2#1%3&!4l%x!#>>)&! &)01%3)! =0! %#6&%2!$&(4(Q303)2!%=!=0)!)&&)=&!4#02!>)2!#='&)2!6#2*!TempCelsius As Double) As

Dim Reponse

ange Then Conv2Fare = nse Else

MsgBox & F"

End Fonction

As Double Reponse = 1.8 * TempCelsius + 32 If TypeOf Application.Caller Is R nheit Repo Reponse " ° End If

")!6%4)!2=31#0'!&)01%3)!>#!6%01)&23%0!)0![#G&)0G)3'!4P=0)!')B$(&#'=&)!6%BB)!1#>)=&!4)!>#!6)>>=>)!23!=0)!6)>>=>)!)2'!>P#$$)>#0'!%=!2%=2!Q%&B)!4)!B)22#J)!230%0*!

"#!>%6='3%0!TypeOf Object Is Type!$)&B)'!4)!6%B$#&)&!>)!'-$)!4)!>P%Ei)'!p!=0!'-$)!)\32'#0'*!L>>)!&)01%3)!1&# !'-$)!$#22(*!3!23!>)!'-$)!4P%Ei)'!)2'!>)!B8B)!D=)!>)

CutCopyMode (Boolean) S3)0! D=P)0! #$$#&)06)! )>>)! 0)! 2)&1)! $#2! p! J&#04o6G%2)I! B)''&)! 6)'')! $&%$&3('(! p! [#>2)! $)&B)'!

4P#00=>)&! >)! B%4)! 6%$3)! )0! 6%=&2! #1#0'! >#! Q)&B)'=&)! 4=! 6>#22)=&! 6)! D=3! 2=$$&3B)! >P#QQ36G#J)! 4=!B)22#J)!4P#>)&')!

!

! ++9

Page 119: Cours VBA débutants.pdf

")!6%4 %&B)!v!Private Close(Cancel As Boolean)

)!)2'!J(0(&#>)B)0'!4)!>#!QSub Workbook_Before

If Application.CutCopyMode = xlCopy Or Application.CutCopyMode = xlCut Then

on. Applicati End If

CutCopyMode = False End Sub

DecimalSeparator (String) V)&B)'! 4)! $&(632)&! >)! 2($#&#')=&! 4(63B#>*! /)63! (13')! 4)! &)6)1%3&! 4)2! )&&)=&2! 4)! '-$)! >%&2D=P%0!

'&#1#3>>)!#1)6!4)2!Q36G3)&2!='3>32#0'!>)!2($#&#')=&!30')&0#'3%0#>*!F0!$)='!4%06!(6&3&)!=0!6%4)!')>!D=)!v!

If Application.International(xlDecimalSeparator) = "," Then ith Appli W cation

.DecimalSeparator = "." " " .ThousandsSeparator =

.UseSystemSeparators = False End With ChangeSep = True End If

ment … Traite 'rétablissement du séparateur d'origine If ChangeSep Then Application.DecimalSeparator = "," End If

DisplayAlerts (Boolean) X=$$&3B)! >)2! B)22#J)2! 4P#1)&'322)B)0'! 4PL\6)>! )'! #$$>3D=)! >P%$'3%0! $#&! 4(Q#='! >%&2D=)!

]32$>#-K>)&'2! 1#='! [#>2)*! :%=2! 0P#1)e! $#2! E)2%30! 4)! &('#E>3&! >#! $&%$&3('(! )0! Q30! 4)! 6%4)I! L\6)>! >#!&#BW0)!2-2'(B#'3D=)B)0'!p!>#!1#>)=&!:&#3!)0!Q30!4P)\(6='3%0*!!

")!6%4)!2=31#0'!4)B#04)!=0!0%B!4)!Q36G3)&!p!>P='3>32#')=&!)'!2#=1)J#&4)!>)!6>#22)=&!6%0')0#0'!>#!B#6&%!2%=2!2)!0%B!)0!(6&#2#0'!>P#063)0!Q36G3)&!2#02!#1)&'322)B)0'!>)!6#2!(6G(#0'*!Dim Fichier As String Application.DisplayAlerts = False Fichier = Application.GetSaveAsFilename If Fichier <> False Then ThisWorkbook.SaveAs Fichier

EnableCancelKey (XlEnableCancelKey) V)&B)'!4)!4(Q303&!>)!6%B$%&')B)0'!4)2!'%=6G)2!4P30')&&=$'3%0!4)!>P)\(6='3%0!4=!6%4)*!V)='!$&)04&)!>)2!1#>)=&2!

xlDisabled!xlErrorHandlerxlInterrupt

")!B%4)!Interrupt!>#322)!>#!$%223E3>3'(!4P30')&&%B$&)!>)!6%4)!#1)6!LX/KVL!%=!/<T"tVKgXLI!>)!B%4)!ErrorHandled!>W1)!>P)&&)=&!+9!jD=3!$)='!8'&)!30')&6)$'()k!)0!6#2!4P#$$=3!2=&!>)2!'%=6G)2I!>)!B%4)!Disabled!4(2#6'31)!>)2!'%=6G)2*!K'')0'3%0I!)0!6#2!4)!E%=6>)!30Q303I!3>!0P)2'!$>=2!$%223E>)!4P30')&&%B$&)!>)!6%4)!)0!B%4)!Disabled*!

EnableEvents (Boolean) V)&B)'! 4)! E>%D=)&! >)2! (1W0)B)0'2! )'! 4%06! 4)! 0)! $#2! )\(6=')&! >)! 6%4)! (1W0)B)0'3)>! 4)2! %Ei)'2!

L\6)>*! 7>! 6%013)0'! 4)! '%=i%=&2! &)B)''&)! 6)'')! 1#&3#E>)! p! :&#3! )0! Q30! 4P)\(6='3%0I! 230%0! $>=2! #=6=0!(1W0)B)0'!0)!2)&#!$&32!)0!6%B$')!4#02!>#!2)223%0!L\6)>*!

! ++;

Page 120: Cours VBA débutants.pdf

Interactive (Booléen) V)&B)'! &! %=! 4P30')&43&)! >)2! 30 6)>I! p!

>P)\6)$'3%0!4 !4)!43#>%J=)*!

International

4P#='%&32))2 )2

')&#6'3%02! )0'&)! >)2! $(&3$G(&3D=)2! 4)! 2#323)! )'! L\!E%f'

%&B)! K$$&#BW'&) #3')!&(6 2'!)0!>)6'=&)!

&#BW'&)2E>)2! $%=&! 304)\I! D=P3J0)k*!

nstante é taire

! V#&#BWV#00)# %Y2*!

urrencyBefore! olean! True! 23! >)! 2- %0('#3&)! $&(6W4)! >#! 1#>)False!2P

])! >#! Q >36#'3%0*70')&0#'3%0#>j704)\k! %x! 304)\! )2'! =0)! 1#>)=&! $&(4(Q303)! $)&B)''#0'! 4)!

$&(632)&!>)!$# !30')&0#'3%0#>!D=)!>P%0!2%=G =$(&)&*!/)'')!$&%$&3('(!) 2)=>)I!)>>)!0)!$)='!$#2!2)&13&!p!B%43Q3)&!=0!%=!$>=23)=&2!$# !4)!>#!B#6G30)*!

7>! )\32')! 4)! 0%BE&)=2)2! 1#>)=&2! $%223 %0! &)'&%=1)! 4#02! >P(0=B(&#'3%0!M>K$$>36#'3%070')&0#'3%0#>!j)'!4#02!>P#34)!)0!>

")2!$>=2!Q&(D=)BB)0'!='3>32()2!2%0'!v!

Co Valeur Type renvoy

Commen

XICountrySetting! ?! Long '&)! 4)! $#-2w&(J3%0! 2(>)6'3%00(! 4#02! >)!=!4)!6%0Q3J=&#'3%0!`304

xIC U5! Bo BE%>)! B =&I!3>!2=3'!>#!1#>)=&*!

xICurre ! ?N! String! E%>)!B%0('#3&)*!ncyCode X-B

xIC ?5! Long! O%BE&)! 4)! 4(63B#>)2! p! ='3>32)&! 4#02! >)2! Q%&B#'2!3&)2*!urrencyDigits! B%0('#

xI24HourClock! UU! Boolean $%=&! >)! Q%&B#'! ?,!G)= se! $%=&! >)!#'!+?!G)=&)2!

! True! &)2I! FalQ%&B

xI4Digi ,U! Boolean 3!>)2!#00()2!6%B$%&')0'!D=#'&)!6G3QQ&)2I!False!6%B$%&')0'!4)=\!6G3QQ&)

! True!2tYears! 23!)>>)2! 2*!

xIDat U?!

Long! )2!(>(B)0'2!4)!>#!4#')!v32oi%=&o#00()!=&oB%32o#00()!0()oB%32oi%=&!

F&4&)!4%

!@!R!BeOrder! +!R!i%?!R!#0

xIDateSeparator! +5! String! ')=&!4)!4#')!j/!k*!X($#&#

xIMe UN! Boolean $%=&! >)! 2-2'WB)! B('& ! $%=&! >)!4)!B)2=&)!#0J>#32*!

! True! 3D=)I! Falsetric! 2-2'WB)!XIDecimalSeparator! U! String =&!4(63B#>*!! #&#')X($

XIThousandsSeparator ,! String! %=!2($#&#')=&!4)!B3>>3)&2!Ü(&%!h)!0)!1#32!$#2!1%=2!B%0'&)&! 363!4P)\)B !$&%J&#BB#'3%0!30')&0# !2=&'%='!D=P3>!

)2'! p!B%0! 2)02! 30='3>)! 4P='3>32)&! =0)! $&%J&#B '()! )0! #0J>#32I! L\6)>! #0'! 4#02! >#!$>=$#&'!4)2!6#2!4)!>%6#>32)&!6%&&)6')B)0'*!

dating (Boole

$>)!6%B$>)'!4)$

'3%0#>IB#'3%0! #4# 2)! 6G#&J)

Sc Upreen an) ](2#6'31)!>#!B32)!p!i%=&!4P(6&#0!D=#04!) *!:%=2!4)1)e!>#!&('#E>3& !$&%6(4=&)*!

](2#6'31) %4)!4)!Q#q%0!'&W2!3B$ ')!#66(>(&#'3%0!)2'!1&#3)! 3!1%'&)!6%4)!0P#! $#2! 4P#6'3%0! 1323 >P(6&#0*! F0! >P='3>32 )0'! 2-2'(B#'3D=)B)>%0J=)2! %=! 23! 1%=2! #1)e! 4)! 0%BE&)=2)2!B32 P(6&#0I! 2#=Q! p! 1%=>% 32#')=&2!($3>)$'3D=)

SheetsInNewWorkbook (Long)

>>)!1#='![#>2) !)0!Q30!4)%&'#0')*!/)' B8B)!2

0'! $%=&! >)2! $&%6(4=&)2!3&! &) ! ='3>04&)! >)2

2*!!

&!#66(>W&)!>)!6E>)! p! )! J(0(&#>)B

)2! p! i%=&! 4

](Q303'! >)! 0%BE&)! 4)! Q)=3>>)2! 4)! 6#>6=>! 6%0')0=! $#&! 4(Q#='! 4#02! >)2! 0%=1)#=\! 6>#22)=&2*! /)>#!

$)&B)'!4)!6& #22)=&2!2$(63Q3D=)2!2#02!#1%3&!p!B#03$=>)&!>)2!Q)=3>>)2*!NbFeuilleDefaut = Application.SheetsInNewWorkbook

()&!4)2!6>

Application.SheetsInNewWorkbook = 5 Application.Workbooks.Add 'ce classeur contient 5 feuilles Application.SheetsInNewWorkbook = NbFeuilleDefaut

! +?@

Page 121: Cours VBA débutants.pdf

StatusBar (String) T)01% !>)!')\')!4)!>#!E#&&)!4P =3!#QQ)6')e!>#!1#>) )04!>)!

6%0'&m>)!4= (*!Sub Demo

3)!%=!4(Q303'!' G

( !>'#'*!X3!1%=2 =&![#>2)I!L\6)>!&)$&

Status()

As String

lse SvgSt = AatusText n.St

Eac aCe lu .C

)\')!#QQ36

Dim MaCell Range, compteur As Long, SvgStatusText As Application.StatusBar = Fa pplicatio atusBar

k. he For ll In ThisWorkboo ets("Feuil1").Co ells h M Works mns(1)Then co If eric(MaCell.Value) mpteur = compteur IsNum + 1

Application.StatusBar = "ligne " & MaCell.Row & " - Nombre valeur num " & compteur Next Application.StatusBar = SvgStatusText Application.StatusBar = False End Sub

WorksheetFunction (WorksheetFunction) /)'')!$&%$&3('(! &)01%3)! >P%Ei)'!`%&a2G))'[=06'3%0!D=3! 6%0'3)0'!=0!6)&'#30!0%BE&)!4)2! Q%06'3%02!

30'(J&()2!4PL\6)>*!!O%=2! 0P#>>%02! $#2! >)2! $#22)&! )0! 4('#3>2! 363! $=32D=P3>! -! )0! #! $&)2D=)! ?@@! 4#02! L\6)>! ?@@?*! ")2!

B('G%4)2!4)!>P%Ei)'!`%&a2G))'[=06'3%0!$%&')!>)!0%B!#0J>#32!4)2!Q%06'3%02!30'(J&()2!#=223!0P)2'o3>!$#2!Q#63>)!4)!Q#3&)!'%=i%=&2!>#!6%&&)2$%04#06)*!")!'#E>)#=!2=31#0'!4%00)!>#!>32')!4)2!Q%06'3%02!#3023!D=)!>)=&!(D=31#>)0'!#0J>#32!>%&2D=P3>!)2'!43QQ(&)0'*!

! +?+

Page 122: Cours VBA débutants.pdf

K6%2! K6%2G! KB%&>30!jX>0k!

K&&%043!jT%=04k!

K&&%043*70Q!jT%=04]%Y0k!

K&&%043*X=$!jT%=04g$k!

K26! K230! K230G!K'#0?! K'#0G! S#G'<)\'!

S4L6#&'<-$)!j]X'])1k!

S4L6#&'<-$)V!j]X'])1Vk!

S4"3&)!j]b)'k!

S4C#\!j]C#\k!

S4C30!j]C30k!

S4C%-)00)!j]K1)&#J)k!

S4OE!j]/%=0'k!

S4OE:#>!j]/%=0'Kk!

S4V&%4=3'!j]V&%4=6'k!

S4X%BB)!j]X=Bk!

S4:#&!j]:#&k!

S4:#&V!j]:#&Vk!

S)'#*701)&2)!jS)'#701k!

/)0'3>)!jV)&6)0'3>)k!

/)0'&()*T(4=3')!jX'#04#&43e)k!

/G)&6G)!jX)#&6Gk!

/G)&6G)&S!jX)#&6GSk!

/G%323&!j/G%%2)k!

/%)QQ363)0'*K2-B('&3)!jXa)Yk!

/%)QQ363)0'*/%&&(>#'3%0!j/%&&)>k!

/%)QQ363)0'*](')&B30#'3%0!jTXDk!

/%BE30! /%2G! /%1#&3#06)!j/%1#&k!

/&3'W&)*"%3*S30%B3#>)!j/&3'S30%Bk!

/&%322#06)!jb&%Y'Gk!

/'\'!j[3\)4k!

]E! ]E62!!

]]E!

])J&(2!j])J&))2k!

](')&C#'!jC])')&Bk!

]&%3')T)J!j"30L2'k!

L6#&'*C%-)0!jK1)])1k!

L6#&<-$)!jX'])1k!

L6#&<-$)V!jX'])1Vk!

L$=&#J)!j/>)#0k!

LD=31!jC#'6Gk!

L&&)=&*<-$)*M-!jX'L-\k!

L2'L&&!j72L&&k!

L2'L&&)=&!j72L&&%&k!

L2'"%J3D=)!j72"%J36#>k!

L2'OK!j72OKk!

L2'O%0<)\')!j72O%0<)\'k!

L2'O=B!j72O=BE)&k!

L2'<)\')!j72<)\'k!

L'!jK04k!

[#6'!

[32G)&! [32G)&*701)&2)!j[32G)&701k!

[&#06!j]%>>#&k!

[&(D=)06)!j[&)D=)06-k!

b&#04)*:#>)=&!j"#&J)k!

7B$#3&!jF44k!

704)\! 70')&1#>>)*/%0Q3#06)!j/%0Q34)06)k!

70'$)&!j70'T#')k!

701)&2)*"%3*[!j[701k!

701)&2)C#'!jC701)&2)k!

72$B'!

h%=&2U.@!j]#-2U.@k!

h%=&2)B!j`))a4#-k!

cG34)=\*701)&2)!j/G3701k!

c=&'%232!jc=&'k!

"0! "0b#BB#!jb#BB#"0k!

"%J! "%J+@! "%JT)J!j"%JL2'k!

"%3*S)'#!jS)'#]32'k!

"%3*S30%B3#>)!jS30%B]32'k!

"%3*S30%B3#>)*O(J!jO)JS30%B]32'k!

"%3*L\$%0)0'3)>>)!jL\$%0]32'k!

"%3*[!j[]32'k!

"%3*b#BB#!jb#BB#]32'k!

"%3*b#BB#*701)&2)!jb#BB#701k!

"%3*_-$)&J(%B('&3D=)!j_-$b)%B]32'k!

"%3*cG34)=\!j/G3]32'k!

"%3*"%JO%&B#>)! "%3*"%JO%&B#>)*701)&2)! "%3*O%&B#>)!

! +??

Page 123: Cours VBA débutants.pdf

j"%JO%&B]32'k! j"%J701k! jO%&B]32'k!"%3*O%&B#>)*701)&2)!

jO%&B701k!"%3*O%&B#>)*X'#04#&4!

jO%&BX]32'k!"%3*O%&B#>)*X'#04#&4*701)&2)!

jO%&BX701k!"%3*V%322%0!jV%322%0k!

"%3*X'=4)0'!j<]32'k!

"%3*X'=4)0'*701)&2)!j<701k!

"%3*`)3E=>>!j`)3E=>>k!

C#\! C(43#0)!jC)43#0k!

C30! C%4)! C%-)00)!jK1)&#J)k!

C%-)00)*b(%B('&3D=)!jb)%C)#0k!

C%-)00)*_#&B%03D=)!j_#&C)#0k!

C%-)00)*T(4=3')!j<&3BC)#0k!

OS!j/%=0'k!

OE*X3!j/%=0'7Qk!

OE*:34)!j/%=0'S>#0ak!

OE:#>!!

j/%=0'Kk!

O%BV&%$&)!jV&%$)&k!

OVB!jOV)&k!

F&4%00()*F&3J30)!j70')&6)$'k!

F=!jF&k!

V#3&!jL1)0k!

V)#&2%0!jV)#&2%0k!

V)0')!jX>%$)k!

V)&B='#'3%0!jV)&B='k!

V)'3')*:#>)=&!jXB#>>k!

VG%0('3D=)!jVG%0)'36k!

V3!!

V>#Q%04!j/)3>30Jk!

V>#06G)&!j[>%%&k!

V&(1323%0!j[%&)6#2'k!

V&306$)&!jV$B'k!

V&%E#E3>3'(!jV&%Ek!

V&%4=3'!jV&%4=6'k!

V&%4=3'C#'!jCC=>'k!

V=322#06)!jV%Y)&k!

d=#&'3>)!jd=#&'3>)k!

T#43#02! T#0J!jT#0ak!

T#0J*V%=&6)0'#J)!jV)&6)0'T#0ak!

T)6G)&6G)!j"%%a=$k!

T)6G)&6G)_!j_"%%a=$k!

T)6G)&6G):!j:"%%a=$k!

T)B$>#6)&!jT)$>#6)k!

T)B$>#6)&S!jT)$>#6)Sk!

T)$'!

T%B#30!jT%B#0k!

T<]! X30G!jk!

X%BB)!jX=Bk!

X%BB)*/#&&(2!jX=BXDk!

X%BB)*/#&&(2*L6#&'2!j])1XDk!

X%BB)*X3!jX=B7Qk!

X%BB)*M?Cá?!jX=BM?Cá?k!

X%BB)*M?Vá?!jX=BM?Vá?k!

X%BB)*MCá?!jX=BMCá?k!

X%BB)V&%4!jX=BV&%4=6'k!

X%=2*<%'#>!jX=E'%'#>k!

X=E2'3'=)!jX=E2'3'=')k!

X=$$&L2$#6)!j<&3Bk!

X-4!

<#0G! <#=\!jT#')k!

<)04#06)!j<&)04k!

<)2'*[!j[<)2'k!

<)2'*cG34)=\!j/G3<)2'k!

<)2'*X'=4)0'!j<<)2'k!

<)2'*Ü!jÜ<)2'k!

<)\')!j<)\'k!

<&#02$%2)!

<&3!j7&&k!

<&3C!jC7&&k!

<&%=1)!j[304k!

<&%=1)&S!j[304Sk!

gX]%>>#&! :#!jV1k!

:#0!jO$1k!

:#&! :#&*V!j:#&Vk!

:6!j[1k!

:4E! :$B!jVB'k!

! +?U

Page 124: Cours VBA débutants.pdf

"P='3>32#'3%0! 4)2! B('G%4)2! 4)! >P%Ei)'! `%&a2G))'[=06'3%0! 0P)2'! $#2! '%=i%=&2! (134)0')! 6#&! >)2!#&J=B)0'2! 2%0'! J(0(&#>)B)0'! Q#3E>)B)0'! '-$(2! )'! %0! 0P#! $#2! '%=i%=&2! >)! &(Q>)\)! 4P#>>)&! 1%3&! >)2!$#&#BW'&)2!#'')04=2!$#&!>#!Q%06'3%0!30'(J&()!6%&&)2$%04#0')*!V&)0%02!=0!)\)B$>)*!

:%=2!#1)e!E)2%30!4P='3>32)&!>#!Q%06'3%0!L\6)>!Ldg7:!jC#'6Gk!4#02!1%'&)!6%4)*!]#02!>P)\$>%&#')=&!4P%Ei)'I!>#!B('G%4)!C#'6G!)2'!4(Q303)!6%BB)!v!

Function Match(Arg1, Arg2, [Arg3]) As Double /%BB)!6)>#I!3>!0P)2'!$#2!(134)0'!4)!2#1%3&!p!D=%3!6%&&)2$%04)0'!>)2!'&%32!#&J=B)0'2*!V#&!6%0'&)I!23!

1%=2!&)J#&4)e!>P#34)!2=&!LD=31I!1%=2!'&%=1)&)e!>#!4(Q303'3%0!EQUIVjvaleur_cherchéeumatrice_rechercheu'-$)k!/)!D=3!)2'!0)'')B)0'!$>=2!6%B$&(G)023E>)*!h)!$)=\!4%06!='3>32)&!=0!6%4)!')>!D=)!v!

Dim Position As Long, MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") With MaFeuille On Error Resume Next Position = Application.WorksheetFunction.Match(20, .Range(.Cells(1, 1), .Cells(150, 1)), 0) If Err.Number = 1004 Then Err.Clear Else Err.Raise Err.Number, Err.Source, Err.Description On Error GoTo 0 End With

O%')e! D=)! i)! 4%32! '&#3')&! >P)&&)=&! 2P3>! 0P-! #! $#2! 4)! 6%&&)2$%04#06)! 6#&! 23! >)2! Q%06'3%02! 30'(J&()2!&)01%3)0'!4)2!1#>)=&2!4P)&&)=&I!>)=&2!G%B%>%J=)2!`%&a2G))'[=06'3%0!>W1)0'!4)2!)&&)=&2!&(6=$(&#E>)2*!

Méthodes

Calculate V)&B)'! 4)! Q%&6)&! >)! 6#>6=>*! "#! 2-0'#\)! K$$>36#'3%0*/#>6=>#')! )2'! $)=! ='3>32()*! F0! >P='3>32)!

$&3063$#>)B)0'! 2%=2! >#! Q%&B)! }`%&a2G))'~*/#>6=>#')*! X#6G)e! '%=')Q%32! D=)! >P%0! $)='! &)2'&)304&)! >)!6#>6=>!p!=0)!$>#J)!p!4)2!Q302!4)!$)&Q%&B#06)*!V#&!)\)B$>)!v!ThisWorkbook.Worksheets("Feuil1").Range("C1:C5").Calculate

O)!Q#3'!>)2!6#>6=>2!D=)!2=&!>#!$>#J)!/+v/N*!

ConvertFormula ])!>#!Q%&B)!v!Function ConvertFormula(Formula As String, FromReferenceStyle As XlReferenceStyle,

}ToReferenceStyle As XlReferenceStyle~,!}ToAbsolute As XlReferenceType~I!}RelativeTo As Range~) As String

V)&B)'!4)!6%01)&'3&!=0)!Q%&B=>)!4P=0!2-2'WB)!4)!&(Q(&)06)!p!=0!#='&)!)'!4P=0!B%4)!p!=0!#='&)*!/)'')!Q%06'3%0!$)='!2P#1(&)&!='3>)!4#02!6)&'#30!6#2I!6)$)04#0'!3>!-!#!2%=1)0'!4)2!Q#q%02!$>=2!23B$>)2!

4P#&&31)&!#=!B8B)!&(2=>'#'*!"P)\)B$>)!2=31#0'!6%01)&'3'!>P)02)BE>)!4)2!Q%&B=>)2!4)!6#>6=>!4)!>#!Q)=3>>)!)0!&(Q(&)06)!#E2%>=)*!

Sub ConvToAbsolute() Dim MaFeuille As Worksheet, FormuleRel As String, FormuleAbs As String Dim MaCell As Range Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") For Each MaCell In MaFeuille.UsedRange.SpecialCells(xlCellTypeFormulas) FormuleRel = MaCell.Formula MaCell.Formula = Application.ConvertFormula(FormuleRel, xlA1, xlR1C1, xlAbsolute) Next End Sub

! +?,

Page 125: Cours VBA débutants.pdf

Evaluate V)&B)'!4)!6%01)&'3&!=0)!6G#f0)!)0!2#!1#>)=&!%=!)0!>P%Ei)'!#=D=)>!)>>)!Q#3'!&(Q(&)06)*!O%=2!#>>%02!

&)J#&4)&!D=)>D=)2!='3>32#'3%02!4)!6)'')!B('G%4)*!! 70')&$&('#'3%0!4)!Q%&B=>)!4)!6#>6=>! !7B#J30%02!D=)!B#!6)>>=>)!K+!6%0'3)0'!>)!')\')!j+?�Ukt,I!

(6&3&)!!Range("A2").Value=Application.Evaluate(Range("A1").Value)

T)01)&&#!,@!)0!K?*!])!B8B)!%0!$%=&&#!(6&3&)!v!Resultat= Application.Evaluate("(12*3)+4")

"#!B('G%4)!$)&B)'!#=223!4P(1#>=)&!=0)!Q%&B=>)!&)2$)6'#0'!>#!2-0'#\)!L\6)>!j)0!#0J>#32k!u!%0!$)='!(6&3&)!Resultat= Application.Evaluate("Sum(A1:E5)")

! 70')&$&('#'3%0!4P=0)!#4&)22)! !X3!B#!6)>>=>)!K+!6%0'3)0'!S+vS?!i)!$)=\!(6&3&)!Application.Evaluate(Range("A1").Value).Font.Bold=True

7>!)2'!p!0%')&!D=)!>)!B%'!K$$>36#'3%0!)2'!Q#6=>'#'3Q!)'!%0!'&%=1)!$#&Q%32!>#!0%'#'3%0![A1].Font.Bold=True

d=3!)2'!2'&36')B)0'!(D=31#>)0')*!"#!B('G%4)!L1#>=#')! )2'! )\'&8B)B)0'! $=322#0')! $=32D=P)>>)! $)&B)'! 4P30')&$&(')&! 6%&&)6')B)0'! p!

$)=! $&W2! '%=')2! >)2! )\$&)223%02! 6%B$&(G)023E>)2! $#&! L\6)>*! L>>)! 0P)2'! '%=')Q%32! $#2! (134)0')! p! E3)0!B#03$=>)&I! #=223!4%3'!%0! >P)B$>%-)&!=03D=)B)0'!D=#04!6P)2'! >#! 2)=>)! 2%>='3%0!%=!D=)! 2%0!)B$>%3! )2'!2#02!&32D=)*!

GetOpenFilename & GetSaveAsFilename /)2! 4)=\! B('G%4)2! $)&B)'')0'! >P#QQ36G#J)! 4P=0)! E%f')! 4)! 43#>%J=)! 4)! 2(>)6'3%0! 4)! Q36G3)&2!

&)01%-#0'! >)! %=! >)2! 0%B2! 4)2! Q36G3)&2! 2(>)6'3%00(2*! /)2! B('G%4)2! 0P%=1&)0'! %=! 0)! 2#=1)0'! $#2!$G-23D=)B)0'! >)!Q36G3)&I!)>>)2!0)!&)01%3)0'!D=)!4)2!0%B2*!L>>)2!&)01%3)0'![#>2)!23! >P='3>32#')=&!6>3D=)!2=&!PK00=>)&P*!

Function GetOpenFilenamej}FileFilter As String~I! }FilterIndex As Integer~I! }Title As String~I!}ButtonText~I!}MultiSelect As Boolean~k!As String

Function GetSaveAsFilenamej}InitialFilename As String~I! }FileFilter As String~I! }FilterIndex As Integer~I!}Title As String~I!}ButtonText~k!As String!

"P#&J=B)0'!S=''%0<)\'!0P)2'!='3>32)!D=)!2%=2!C#630'%2G*!L0!B%4)!C=>'3X)>)6'I!>#!B('G%4)!b)'F$)0[3>)0#B)!&)01%3)!=0!'#E>)#=!4)!0%B2!B8B)!23!=0!2)=>!

0%B!)2'!2(>)6'3%00(I![#=\!23!#00=>)&!)2'!6>3D=(*!")!6%4)!2=31#0'!#QQ36G)!>#!E%f')!4)!43#>%J=)!L0&)J32'&)&!2%=2!v!

Dim NomFichier As String NomFichier = Application.GetSaveAsFilename(ThisWorkbook.FullName) If CBool(NomFichier) <> False Then ThisWorkbook.SaveAs NomFichier End If

")! 6%4)! 2=31#0'! $&%$%2)! =0)! E%f')! 4)! 43#>%J=)! %=1&3&! $)&B)''#0'! 4)! 2(>)6'3%00)&! $>=23)=&2!Q36G3)&2*!Public Sub testboîte() Dim NomFichier As Variant, Filtre As String, cmpt As Long Filtre = "Classeur (*.xls),*.xls, Fichiers texte (*.txt),*.txt, Tous les fichiers(*.*),*.*" NomFichier = Application.GetOpenFilename(Filtre, 2, "Ouvrir", , True) If IsArray(NomFichier) Then For cmpt = LBound(NomFichier) To UBound(NomFichier) If StrComp(Right(NomFichier(cmpt), 3), "txt", vbTextCompare) = 0 Then Application.Workbooks.OpenText NomFichier(cmpt)

! +?N

Page 126: Cours VBA débutants.pdf

ElseIf StrComp(Right(NomFichier(cmpt), 3), "xls", vbTextCompare) = 0 Then Application.Workbooks.Open NomFichier(cmpt) End If Next cmpt End If End Sub

InputBox 7>!0)!2P#J3'!$#2!363!4)!>#!Q%06'3%0!:SK!B#32!E3)0!4P=0)!B('G%4)!4)!>P%Ei)'!K$$>36#'3%0*!7>!6%013)0'!

4%06! 4)! Q#3&)! #'')0'3%0! p! >#! 0%'#'3%0I! 70$='S%\! 2#02! D=#>3Q36#')=&! 4(23J0)! :SK*70$='S%\I! )'! 6)'')!B('G%4)!4%3'!8'&)!#$$)>()!6%BB)!K$$>36#'3%0*70$='S%\*!

Function InputBoxjPrompt As StringI! }Title As String~I! }Default As Variant~I! }Left As Single~I!}Top As Single~I!}HelpFile As String~I!}HelpContextID As Long~I!}Type As Integer~k!As Variant!

C#32!$%=&D=%3!4%06!6&()&!=0)!B('G%4)!70$='S%\!#>%&2!D=)!>)!>#0J#J)!)0!Q%=&03'!4(ip!=0)!|!"#!Q%06'3%0!70$='S%\!4)!>P%Ei)'!:SK!$&(2)0')!D=)>D=)2!306%01(03)0'2*!

L>>)!&)01%3)!=0)!6G#f0)!134)!23!>P='3>32#')=&!6>3D=)!2=&!PK00=>)&P! L>>)!0)!1(&3Q3)!$#2!>)!'-$)!4)!>#!1#>)=&!2#323)! L>>)!0)!$)&B)'!$#2!4)!4(23J0)&!=0)!$>#J)!2=&!=0)!Q)=3>>)!4)!6#>6=>!

/P)2'!$%=&!&)B(43)&!p!6)>#!D=)!>P%Ei)'!K$$>36#'3%0!$&%$%2)!=0)!#='&)!B('G%4)!70$='S%\*!V%=&!'%=2!6)2!$&)B3)&2!#&J=B)0'2I! 3>! 2P#J3'!4)! >#!B8B)!2'&=6'=&)!D=)! >#! Q%06'3%0!70$='S%\I!6P)2'opo43&)! >)! ')\')!4P3013')I!>)!'3'&)I!>#!1#>)=&!$#&!4(Q#='I!>)2!6%%&4%00()2!4)!$%23'3%0!)'!>)2!34)0'3Q36#')=&2!4P#34)*!L0!$>=2I!%0!='3>32)!>P#&J=B)0'!<-$)!$&(632#0'!>)j2k!'-$)j2k!#66)$'(j2k*!/P)2'!=0!B#2D=)!E30#3&)!4(Q303'!6%BB)!v!

Valeur Type

@! g0)!Q%&B=>)*!

+! g0!0%BE&)*!

?! <)\')!j=0)!6G#f0)k*!

,! g0)!1#>)=&!>%J3D=)!j<&=)!%=![#>2)k*!

9! g0)!&(Q(&)06)!4)!6)>>=>)I!2%=2!>#!Q%&B)!4P=0!%Ei)'!T#0J)*!

+.! g0)!1#>)=&!4P)&&)=&I!')>>)!D=)!ÑOwK*!

.,! g0!'#E>)#=!4)!1#>)=&2*!

/)'')!B('G%4)!&)01)&&#![#=\!23!1%=2!6>3D=)e!2=&!PK00=>)&P*!!X3 P#1)&'322)B)0'!)'!>#!

E%f')!&)2')&#! Dim IntVal As Integer

!>#!2#323)!0)!&)2$)6')!$#2!>P#&J=B)0'!'-$)I!L\6)>!1%=2!)01)&&#!=0!B)22#J)!4#QQ36G()*!K'')0'3%0!D=#04!B8B)!#=\!)QQ)'2!4)!E%&42*!

ntVal = Application.InputBox(prompt:="chiffre", Type:=1) '!4)2!>)''&)2I!3>!#=&#!>P#QQ36G#J)!4=!B)22#J)!

I]#02!6)'!)\)B$>)I!23!>P='3>32#')=&!2#323

!C#32!2P3>!6>3D=)!2=&!PK00=>)&PI!70':#>!1#=4&#!@!6#&![#>2)!2)&#!6%01)&'3'!)0!e(&%!$#2!:SK*!")!'-$)!&(Q(&)06)!$)&B)'!p!>P='3>32#')=&!4)!2(>)6'3%00)&!=0)!e%0)!2=&!>#!Q)=3>>)*!

! +?.

Page 127: Cours VBA débutants.pdf

Intersect & Union /)2! 4)=\! B('G%4)2! $)&B)'')0'! 4)! &)J&%=$)&! >)2! %Ei)'2! T#0J)! $#22(2! )0! #&J=B)0'*! 70')&2)6'!

&)01)&&#!>P30')&2)6'3%0!4)2!$>#J)2I!6P)2'opo43&)!>P)02)BE>)!4)2!6)>>=>)2!#$$#&')0#0'2!p!'%=')2!>)2!$>#J)2I!%=!O%'G30J!23!#=6=0)!6)>>=>)!0)!6%&&)2$%04*!Private Sub Worksheet_Change(ByVal Target As Range) Dim PlageY As Range, PlageCible As Range Set PlageY = Me.Range("PlageY") Y, Target) Set PlageCible = Application.Intersect(Plage If Not PlageCible Is Nothing Then For Each PlageY In PlageCible.Cells PlageY.AddComment "modifiée le " & Now Next End If End Sub

/)!6%4)!#i%=')!=0!6%BB)0'#3&)!#=\!6)>>=>)2!B%43Q3()2!4)!>#!$>#J)!0%BB()!PV>#J)áP*!Me! v! d=#>3Q36#')=&! 4(23J0#0'! >P%Ei)'! D=3! >)! 6%0'3)0'*! ]#02! >)! B%4=>)! 4)! 6%4)! 4=! 6>#22)=&I!Me!

4(23J0)!>)!6>#22)=&I!4#02!>)!B%4=>)!4)!6%4)!4P=0)!Q)=3>>)I!Me!4(23J0)!>#!Q)=3>>)*!Me!0)!$)='!$#2!8'&)!)B$>%-(!4#02!=0!B%4=>)!2'#04#&4*!

g03%0! &)01)&&#! >P)02)BE>)! 4)2! $>#J)2*! "#! Q%06'3%0! 2=31#0')! &)01%3)! >P)02)BE>)! 4)2! 6)>>=>)2!6%0')0#0'!>#!1#>)=&!$#22()!)0!#&J=B)0'*!Private Function FindValue(ByVal Valeur As Variant) As Range Dim Adresse As String, tmpFind As Range With ThisWorkbook.Worksheets("Feuil1").UsedRange Set FindValue = .Find(What:=Valeur, LookIn:=xlValues, LookAt:=xlWhole) If FindValue Is Nothing Then Exit Function Adresse = FindValue.Address Set tmpFind = FindValue Do Set tmpFind = .FindNext(tmpFind) Set FindValue = Application.Union(FindValue, tmpFind) Loop While StrComp(tmpFind.Address, Adresse, vbTextCompare) = 0 End With End Fonction

Quit [)&B)!>#!2)223%0!L\6)>*!

! +?5

Page 128: Cours VBA débutants.pdf

Workbooks & Workbook "#!6%>>)6'3%0!`%&aE%%a2!6%0'3)0'!=0)!&(Q(&)06)!p!>P)02)BE>)!4)2!6>#22)=&2!%=1)&'!4)!>#!2)223%0!)0!

6%=&2I!>P%Ei)'!`%&aE%%a!4(23J0)!=0!6>#22)=&*!

Manipuler la collection Workbooks

Propriété Item (Workbook) ])!>#!Q%&B)!v!!Property Itemj704)\k!As Workbook 704)\!('#0'!=0!:#&3#0'!&)$&(2)0'#0'!>)!0=B(&%!4P%&4&)!%=!>)!0%B!4=!6>#22)=&*!")2!0=B(&%2!4P%&4&)!

('#0'!J(&(2!$#&!L\6)>!)'!$%=1#0'!1#&3)&!4P=0)!2)223%0!p!>P#='&)I!%0!0)!>)2!='3>32)!J(0(&#>)B)0'!$#2*!")!0%B!4=!6>#22)=&!)2'!=0!0%B!6%=&'!4)!>#!Q%&B)!rO%B[36G3)&*\>2r!23!>)!6>#22)=&!p!4(ip!('(!)0&)J32'&(I!=0!0%B!2#02!)\')023%0!23!0%0*!")!$>=2!23B$>)!&)2')!6)$)04#0'!4)!6#$'=&)&!>#!&(Q(&)06)!>%&2!4)!>P%=1)&'=&)!%=!4)!>#!6&(#'3%0!4=!6>#22)=&!6%BB)!0%=2!>)!1)&&%02!$>=2!>%30*!

Propriété Count (Long) T)01%3)!>)!0%BE&)!4)!6>#22)=&2!%=1)&'2!4#02!>#!2)223%0!L\6)>!)0!6%=&2*!")2!6>#22)=&2!0)!2%0'!$#2!

Q%&6(B)0'!1323E>)2*!

Méthode Add Ki%=')!=0!0%=1)#=!6>#22)=&*!])!>#!Q%&B)!v!Function Addj}Template~k!As Workbook Fx!Template!!)2'!=0!:#&3#0'!2=31#0'!>)2!&WJ>)2!2=31#0')2!v!!

X3! 6P)2'! =0)! 6G#f0)! 2$(63Q3#0'! =0!0%B!4)! Q36G3)&!L\6)>! )\32'#0'I! >)! 0%=1)#=! 6>#22)=&! )2'!6&((!2=&!>)!B%4W>)!4=!Q36G3)&!2$(63Q3(*!!

X3! 6)'! #&J=B)0'! )2'! =0)! 6%02'#0')! jxlWBATChartI! xlWBATExcel4IntlMacroSheetI!xlWBATExcel4MacroSheet!%=!xlWBATWorksheetkI!>)!0%=1)#=!6>#22)=&!6%0'3)0'!=0)!2)=>)!Q)=3>>)!4=!'-$)!2$(63Q3(*!

X3!Template! )2'! %B32I! L\6)>! 6&()! =0! 0%=1)#=! 6>#22)=&! #1)6! $>=23)=&2! Q)=3>>)2! 4)! 6#>6=>!4%0'!>)!0%BE&)!)2'!('#E>3!$#&!>#!$&%$&3('(!SheetsInNewWorkbook!4)!>P%Ei)'!K$$>36#'3%0*!

"#! B('G%4)! K44! &)01%3)! =0)! &(Q(&)06)! p! >P%Ei)'! `%&aE%%a! #i%='(I! 6P)2'! 6)'')! &(Q(&)06)! D=P3>!6%013)0'!4)!6#$'=&)&!$%=&!23B$>3Q3)&!>)!6%4)*!Sub test() Dim ClasseurGraphe As Workbook, ClasseurStandard As Workbook 'ajoute un classeur contenant une feuille graphique Set ClasseurGraphe = Application.Workbooks.Add(xlWBATChart) 'ajoute un classeur contenant des feuilles de calcul Set ClasseurStandard = Application.Workbooks.Add 'les deux variables sont maintenant des qualificateurs manipulables MsgBox ClasseurGraphe.Name End Sub

Méthode Close [)&B)! '%=2! >)2!6>#22)=&2!%=1)&'2*!g0!B)22#J)!4)B#04#0'! 2P3>! Q#='! 2#=1)J#&4)&! 2P#QQ36G)&#! >)!6#2!

(6G(#0'*!

! +?9

Page 129: Cours VBA débutants.pdf

Méthode Open F=1&)!=0!6>#22)=&!4%0'!>)!0%B!)2'!$#22(!6%BB)!$&)B3)&!#&J=B)0'*!")!0%B!4%3'!8'&)!=0!6G)B30!

>%0J!%=!=0!6G)B30!6%=&'!2P3>!2P#J3'!4P=0!6>#22)=&!23'=(!4#02!>)!&($)&'%3&)!6%=&#0'*!"#!B('G%4)!='3>32)!4)!0%BE&)=\!$#&#BW'&)2!Q#6=>'#'3Q2!6%BB)!>#!B32)!p!i%=&!4)2!>3)02I!>)!B%'!4)!$#22)!%=!>)!Q%&B#'!D=)!0%=2!0)!1)&&%02!$#2!363*!"p!)06%&)I!=0)!&(Q(&)06)!#=!6>#22)=&!%=1)&'!)2'!&)01%-(!$#&!>#!B('G%4)*!Dim ClasseurSource As Workbook, ClasseurCible As Workbook 'ouvre un classeur avec un chemin absolu Set ClasseurSource = Application.Workbooks.Open("d:\user\E221.xls") 'ouvre un classeur dans le répertoire en cours Set ClasseurCible = Application.Workbooks.Open("d:\user\Recap.xls")

Méthode OpenText V)&B)'!4P%=1&3&!=0! Q36G3)&! ')\')!2%=2! Q%&B)!4)!6>#22)=&!L\6)>I! >)2!4%00()2!('#0'!(1)0'=)>>)B)0'!

&)432'&3E=()2!)0!Q%06'3%0!4)2!#&J=B)0'2!$#22(2*!])!>#!Q%&B)!v!Sub OpenTextjFilename As String, [Origin As XlPlatform], [StartRow As Long], [DataType As

XlTextParsingType], [TextQualifier As XlTextQualifier = xlTextQualifierDoubleQuote], [ConsecutiveDelimiter As Boolean], [Tab As Boolean], [Semicolon As Boolean], [Comma As Boolean], [Space As Boolean], [Other As Boolean], [OtherChar As Char], [FieldInfo As xlColumnDataType], [TextVisualLayout], [DecimalSeparator], [ThousandsSeparator], [TrailingMinusNumbers], [Local]k!

V%=&! E3)0! #$$&(G)04)&! >)! Q%06'3%00)B)0'! 4)! 6)'')! $&%6(4=&)! 1%=2! 4)1)e! 6%B$&)04&)! >)!Q%06'3%00)B)0'!4)!>#!&)432'&3E='3%0!4#02!L\6)>*!

V#&!4(Q#='I!L\6)>!6%0234W&)!6%BB)!2#='!4)!>3J0)!>)2!6#&#6'W&)2!&)'%=&!6G#&3%'!)'!%=!2#='!4)!>3J0)*!XP3>! 0P)0! '&%=1)! $#2I! >)2! 4%00()2! 2)&%0'! &)432'&3E=()2! 2=&! =0)! >3J0)*! :%=2! 0)! $%=1)e! $#2! 3043D=)&!4P#='&)2! 6#&#6'W&)2!4)! 2#='!4)! >3J0)!43&)6')B)0'! p!L\6)>I! #='&)B)0'!43'I! 1%=2!4)1&)e! '&#3')&! $#&! 6%4)!>P%=1)&'=&)!4P=0!Q36G3)&!')\')!='3>32#0'!=0!2($#&#')=&!43QQ(&)0'*!

V%=&!>#!&($#&'3'3%0!4)2!4%00()2!4#02!>)2!6%>%00)2I!L\6)>!6%B$&)04!4)=\!B%4)2I!>#!&)432'&3E='3%0!)0! >#&J)=&! Q3\)! )'! >#! &)432'&3E='3%0! 4(>3B3'()*! "#! &)432'&3E='3%0! ! )0! >#&J)=&! Q3\)! 6%0232')! p! Q3\)&! =0)!2($#&#'3%0!$#&!>%'!4)!0!6#&#6'W&)2!2#02!')03&!6%B$')!4)!>#!$%23'3%0!4P=0!2($#&#')=&!4#02!>#!>3J0)*!]#02!>#!&)432'&3E='3%0! 4(>3B3'()I! %0! 4(Q303'! =0! %=! $>=23)=&2! 2($#&#')=&2! D=3! 4(Q30322)0'! >)! 4(6%=$#J)! )0!6%>%00)2*!!

A134)BB)0'I!1%=2!>W1)&)e!=0)!)&&)=&!23!>)!Q36G3)&!6%0'3)0'!$>=2!4)!.NNU.!>3J0)2!%=!23!>#!431323%0!)0!6%>%00)2!3B$>3D=)!$>=2!4)!?N.!6%>%00)2*!

/P)2'!>#!4(Q303'3%0!4)!6)!Q%06'3%00)B)0'!D=)!JW&)0'!>)2!#&J=B)0'2!4)!>#!B('G%4)!F$)0<)\'*!!"P#&J=B)0'!Filename!)2'!>)!2)=>!#&J=B)0'!%E>3J#'%3&)*!7>!4(23J0)!>)!Q36G3)&!p!%=1&3&*!X3!#=6=0!#='&)!

#&J=B)0'!0P)2'!$#22(I! >)! Q36G3)&!2)&#! &)432'&3E=(!)0! >3J0)2!23!=0!2($#&#')=&!6%&&)2$%04#0'!)\32')!)'!)0!6%>%00)2!2)>%0!>)!6#&#6'W&)!'#E=>#'3%0*!K='&)B)0'!43'I!23!>)!Q36G3)&!')\')!0)!6%0'3)0'!03!6#&#6'W&)!&)'%=&!6G#&3%'!03!6#&#6'W&)!'#E=>#'3%0I!L\6)>!)22#-)&#!4)!B)''&)!>#!'%'#>3'(!4=!6%0')0=!4#02!>#!6)>>=>)!K+*!X3!>)!6%0')0=!)2'!'&%$!J&#04I!3>!2)&#!#='%B#'3D=)B)0'!(6&8'(*!

"P#&J=B)0'!StartRow!4(Q303'!>)!0=B(&%!4)!>3J0)!%x!4)1&#!6%BB)06)&!>#!&)432'&3E='3%0!4#02!>)!6#2!%=! 1%=2! #1)e! =0)! )0'8')! D=)! 1%=2! 0)! 2%=G#3')e! $#2! &)432'&3E=)&*! XP3>! )2'! %B32I! >#! &)432'&3E='3%0!6%BB)06)&#!p!>#!>3J0)!+*!

"P#&J=B)0'! DataType! $&(632)! >)! B%4)! 4)! &)432'&3E='3%0! 2%=G#3'()I! xlDelimited! $%=&! =0)!&)432'&3E='3%0!4(>3B3'()I!xlFixedWidth!230%0*!

"P#&J=B)0'! TextQualifier! 4(Q303'! >)! D=#>3Q36#')=&! 4)! ')\')I! J(0(&#>)B)0'! >)! 6#&#6'W&)! J=3>>)B)'!4%=E>)!jrk*!!!

"P#&J=B)0'! ConsecutiveDelimiter! 1#! 4(Q303&! >)! 6%B$%&')B)0'! 4)! &)432'&3E='3%0! >%&2D=P3>! )\32')!$>=23)=&2!4(>3B3')=&2!6%02(6='3Q2*!X3!>P#&J=B)0'!)2'!1&#3I!>)2!4(>3B3')=&2!6%02(6='3Q2!2)&%0'!6%0234(&(2!6%BB)!=0!2)=>I!230%0I!3>!2)&#!>#322(!=0)!6)>>=>)!134)!$%=&!6G#D=)!4(>3B3')=&!#=!4)>p!4=!$&)B3)&*!

"#! >32')!4)2!#&J=B)0'2! 2=31#0'2!1#!4(Q303&! >)2!4(>3B3')=&2!$%=&! >#! &)432'&3E='3%0!)0!6%>%00)*!")2!4(>3B3')=&2!$&(4(Q3032!$%223E>)I!2%0'!4#02!>P%&4&)I!<#E=>#'3%0I!$%30'!13&J=>)I!13&J=>)I!)2$#6)*!

! +?;

Page 130: Cours VBA débutants.pdf

:%=2! $%=1)e! 4(Q303&! =0! #='&)! 2($#&#')=&! )0!B)''#0'! >P#&J=B)0'!Other! p! 1&#3! )'! )0! $&(632#0'! >)!6#&#6'W&)!4#02!>P#&J=B)0'!OtherChar*!X3!6)>=3o63!6%0'3)0'!$>=2!4P=0!6#&#6'W&)I!2)=>!>)!$&)B3)&!2)&#!$&32!)0!6%B$')*!

"P#&J=B)0'!FieldInfo!)2'!>)!$>=2!6%B$>)\)!p!B#03$=>)&*!7>!#'')04!=0!'#E>)#=!4)!'#E>)#=\!4)!4)=\!(>(B)0'2*!")2!4)=\!(>(B)0'2!2)!4(6%B$%2)0'!6%BB)!v!

+k!")!0=B(&%!4P%&4&)!4)! >#!6%>%00)!)0!B%4)!4(>3B3'(!%=! >#!$%23'3%0!4=!$&)B3)&!6#&#6'W&)!4)! >#!6%>%00)!4#02!>#!>3J0)!)0!B%4)!>#&J)=&!Q3\)!?k!")!0=B(&%!4)!Q%&B#'!4)!>#!6%>%00)*!/)>>)o63!)2'!2%3'!#=!Q%&B#'!J(0(&#>!j\>b)0)&#>[%&B#'k!D=3!>#322)! L\6)>! 30')&$&(')&! >)! '-$)I! 2%3'! #=! Q%&B#'! ')\')! j\><)\'[%&B#'kI! 2%3'! =0! Q%&B#'! 4)! 4#')!j\>C]á[%&B#'I! \>]Cá[%&B#'I! \>áC][%&B#'I! \>Cá][%&B#'I! \>]áC[%&B#'I!\>á]C[%&B#'kI!2%3'!=0!B#&D=)=&!4)!0%0!&)432'&3E='3%0!j\>Xa3$/%>=B0k*!!L0!B%4)!4(>3B3'(I!1%=2!0P8')2!$#2!%E>3J(!4)!$&(632)&! '%=')2! >)2! 6%>%00)2!$=32D=)!$#&!4(Q#='! >)2!

6%>%00)2!0%0!$&(632()2!2)&%0'!'&#3'()2!2=&!>#!E#2)!4=!Q%&B#'!J(0(&#>*!")2!(>(B)0'2!4=!'#E>)#=!0P%0'!$#2!E)2%30!4P8'&)!4#02!>)!B8B)!%&4&)!D=)!>)2!6%>%00)2*!

L )0'2*!")2!#='&)2!# !")!6%4)!2=31 !2)&#!&)432'&3E=()!

6%BBg0)!$&)B3W&)!6%>%00)!4)!G=3'!6#&#6'W&)2!4)!Q%&B#'!4#')!g0)!4)=\3WB)!6%>%00)!4)!4%=e)!6#&#6'W&)2!#=!Q%&B#'!')\')!g0)!'&%323WB)!6%>%00)!4)!630D!6#&#6'W&)2!#=!Q%&B#'!')\')!g0)!D=#'&3WB)!6%>%00)!4)!630D!6#&#6'W&)2!#=!Q%&B#'!2'#04#&4!g0)!630D=3WB)!6%>%00)!4)!D=#'&)!6#&#6'W&)2!#=!Q%&B#'!2'#04#&4!g0)!23\3WB)!6%>%00)!4)!'&)0')!23\!6#&#6'W&)2!#=!Q%&B#'!')\')!<%=2!>)2!6#&#6'W&)2!#=!4)>p!4=!2%3\#0')!43\3WB)!2)&%0'!3J0%&(2!

Workbooks.OpenText Filename:="D:\User\Tutos\Excel\demo1.txt",

0!B%4)!>#&J)=&!Q3\)I!1%=2!0)!$%=1)e!$#2!%B)''&)!4P(>(B&J=B)0'2!0)!$&(2)0')0'!$#2!4)!43QQ36=>'(2!$#&'36=>3W&)2*#0'!1#!%=1&3&!=0!Q36G3)&!')\')!)0!B%4)!>#&J)=&!Q3\)I!%=!6G#D=)!>3J0)

)!2=3'!v!

Origin:=xlMSDOS, StartRow:=1, DataType:=xlFixedWidth, _ FieldInfo:=Array(Array(0, xlDMYFormat), _ Array(8, xlTextFormat), _ Array(20, xlTextFormat), _ Array(25, xlGeneralFormat), _ Array(30, xlGeneralFormat), _ Array(34, xlTextFormat), _ Array(70, xlSkipColumn)), TrailingMinusNumbers:=True

")!6%4)!2=31#0'!%=1&3&#!=0!Q36G3)&! ')\')!)0!B%4)!4(>3B3'(!%=!>)2!4(>3B3')=&2!2)&%0'!2%3'! >)!$%30'!13&J=>)I!2%3'!>)!$%30'!4P30')&&%J#'3%0!)'!%x!>)2!4(>3B3')=&2!2=66)223Q2!2)&%0'!3J0%&(2*!

")2!4)=\!$&)B3W&)2!6%>%00)2!2)&%0'!4)!'-$)!4#')!)'!>#!D=#'%&e3WB)!6%>%00)!2)&#!3J0%&()*!"#!$&)B3W&)!>3J0)!0)!2)&#!$#2!&)432'&3E=()*!

Workbooks.OpenText Filename:="D:\User\Tutos\Excel\demo1.txt", Origin:=xlMSDOS, StartRow:=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=True, Comma:=False, Space:=False, Other:=True, OtherChar:="?", _ FieldInfo:=Array(Array(1, xlDMYFormat), _ Array(2, xlDMYFormat), _ Array(14, xlSkipColumn))

! +U@

Page 131: Cours VBA débutants.pdf

Propriétés de l'objet Workbook renvoyant une collection

BuiltinDocumentProperties T)01%3)!>#!6%>>)6'3%0!]%6=B)0'V&%$)&'3)2!D=3!6%0'3)0'!4)2!30Q%&B#'3%02!J(0(&#>)2!2=&!>)!6>#22)=&*!

/)&'#30)2! 4)! 2)2! 30Q%&B#'3%02! 2%0'! 30G(&)0')2! #=! 6>#22)=&I! 4P#='&)2! 4%31)0'! #1%3&! ('(! 2#323)*! XP='3>32)!J(0(&#>)B)0'!2%=2!>#!Q%&B)!v!Workbook.BuiltinDocumentProperties(PropName).Value

Fx!PropName! )2'! >)! 0%B! 4)! >#! $&%$&3('(! &)6G)&6G()*! 7>! )2'! #=223! $%223E>)! 4)! $#22)&! >P304)\! 4)!>P(>(B)0'!&)6G)&6G(I!B#32!1%=2!$&)0)e!>)!&32D=)!4P#1%3&!p!B%43Q3)&!1%'&)!6%4)!2)>%0!>#!1)&23%0!4PL\6)>!='3>32()*!

")2!0%B2!#4B3223E>)2!2%0'!v!<3'>)! X=Ei)6'! K='G%&!

c)-Y%&42! /%BB)0'2! <)B$>#')!"#2'!#='G%&! T)1323%0!0=BE)&! K$$>36#'3%0!0#B)!"#2'!$&30'!4#')! /&)#'3%0!4#')! "#2'!2#1)!'3B)!<%'#>!)43'30J!'3B)! O=BE)&!%Q!$#J)2! O=BE)&!%Q!Y%&42!O=BE)&!%Q!6G#&#6')&2! X)6=&3'-! /#')J%&-!

[%&B#'! C#0#J)&! /%B$#0-!O=BE)&!%Q!E-')2! O=BE)&!%Q!>30)2! O=BE)&!%Q!$#&#J&#$G2!O=BE)&!%Q!2>34)2! O=BE)&!%Q!0%')2! O=BE)&!%Q!G344)0!X>34)2!

O=BE)&!%Q!B=>'3B)43#!6>3$2!

_-$)&>30a!E#2)! O=BE)&!%Q!6G#&#6')&2!jY3'G!2$#6)2k!

")!6%4)!2=31#0'!&)01%3)!p!6G#D=)!)0&)J32'&)B)0'!=0)!E%f')!4)!B)22#J)2!#1)6!>P#=')=&I!>)!'3'&)!)'!>#!4#')!4)!2#=1)J#&4)*!Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Nom As String, Titre As String, DateSave As Date Dim msg As String msg = "Classeur " & ThisWorkbook.BuiltinDocumentProperties("Title").Value & vbCrLf msg = msg & "Auteur " & ThisWorkbook.BuiltinDocumentProperties("Author").Value & vbCrLf msg = msg & "Sauvé le " & ThisWorkbook.BuiltinDocumentProperties("Last save time").Value & vbCrLf MsgBox msg End Sub

7>!)\32')!=0)!6%>>)6'3%0!CustomDocumentProperties!D=3!$)&B)'!4)!J(&)&!4)2!$&%$&3('(2!4)!1%'&)!6G%3\*!

Charts T)01%3)!>#!6%>>)6'3%0!4)2!Q)=3>>)2!J&#$G3D=)2!4=!6>#22)=&*!")2!J&#$G3D=)2!306%&$%&(2!#=\!Q)=3>>)2!

4)!6#>6=>!0)!2%0'!$#2!B)BE&)2!4)!6)'')!6%>>)6'3%0*!

Names T)01%3)!>#!6%>>)6'3%0!4)2!0%B2!4=!6>#22)=&*!K''#&4%02!0%=2!=0!$)=!2=&!6)'')!0%'3%0!4)!0%B!4#02!

L\6)>*!")2!0%B2!4#02!L\6)>!2%0'!4)2!1#&3#E>)2!>%6#>)2!#''&3E=()2!J(0(&#>)B)0'!p!=0!6>#22)=&!j$#&Q%32!p!=0)!Q)=3>>)k!)'!2#=1)J#&4()2!#1)6!>=3*!g0!0%B!L\6)>!Q#3'!4%06!&(Q(&)06)!2%3'!p!=0)!6)>>=>)!%=!$>#J)!4)!6)>>=>)!j6#2!>)!$>=2!6%=&#0'k!B#32!$)='!#=223!Q#3&)!&(Q(&)06)!p!=0)!Q%&B=>)!%=!p!=0)!1#>)=&*!

! +U+

Page 132: Cours VBA débutants.pdf

"#! 6%>>)6'3%0!O#B)2! 2)!B#03$=>)! =0! $)=! 43QQ(&)BB)0'! 4)2! #='&)2! 6%>>)6'3%02*! V%=&! #i%=')&! =0!(>(B)0'!p!>#!6%>>)6'3%0I!%0!$)='!='3>32)&!>#!B('G%4)!K44*!/)>>)o63!)2'!4)!>#!Q%&B)!v!

Function Addj[Name], [RefersTo], [Visible], [MacroType], [ShortcutKey], [Category], [NameLocal], [RefersToLocal], [CategoryLocal], [RefersToR1C1], [RefersToR1C1Local]k!As Name!

:%=2!0%')&)e!4(ip!D=)I!Q#3'!&#&)I!'%=2!>)2!#&J=B)0'2!2%0'!Q#6=>'#'3Q2*!/)>#!0)!1)='!$#2!43&)!D=P#=6=0!0P)2'!%E>3J#'%3&)*!]#02! >)!6%06)$'!4)2!0%B2!L\6)>I!1%=2!$%=1)e!4(634)&!4)! '&#1#3>>)&!)0!1)&23%0!43')!>%6#>32()!%=!)0!1)&23%0!2'#04#&4*!K!B303B#I!=0!0%B!4%3'!4%06!#1%3&!=0!0%B!4(Q303!4#02! >P#&J=B)0'!Name!%=!4#02!>P#&J=B)0'!NameLocalI!)'!=0)!&(Q(&)06)!4(Q303!4#02!=0!4)2!#&J=B)0'2!RefersTo*!

:%=2!$%=1)e!6G%323&!4)!B#2D=)&!>)!0%B!)0!B)''#0'! >P#&J=B)0'!Visible!p![#=\*!h)!0)!4('#3>>)&#32!$#2!363!>)2!0%'3%02!4)!'-$)I!4)!B#6&%I!03!4)!6#'(J%&3)*!

K'')0'3%0I!$%=&!Q#3&)!&(Q(&)06)!p!=0)!$>#J)!4)!6)>>=>)!p!0)!$#2!%B)''&)!>)!23J0)!(J#>!)0!4(E='!4)!&(Q(&)06)*! Dim Maplage As Range 'le nom réfère à une plage de cellule ThisWorkbook.Names.Add NameLocal:="Plage", RefersToLocal:="=A1:B15" 'le nom réfère à une chaîne de caractère ThisWorkbook.Names.Add NameLocal:="Chaîne", RefersToLocal:="A1:B15" 'ajoute un nom par action sur la propriété Name de l'objet Range Set Maplage = ThisWorkbook.Worksheets("Feuil1").Range("A1:A10") Maplage.Name = "Nom1"

/)!6%4)!1%=2!B%0'&)!#=223!=0)!Q#q%0!3043&)6')!4P#i%=')&!=0!0%B!p!>#!6%>>)6'3%0!O#B)2!$#&!>)!E3#32!4P=0!%Ei)'!T#0J)*!

!V%=&!)\'&#3&)!=0!0%B!4)!>#!6%>>)6'3%0I!%0!='3>32)!>#!B('G%4)!7')B!)0!$#22#0'!6%BB)!#&J=B)0'!2%3'!>)! 0%B! )0! $&)B3)&! #&J=B)0'! 2%3'! >#! 1#>)=&! 4)! >#! &(Q(&)06)! )0! '&%323WB)! #&J=B)0'*! ]#02! >P)\)B$>)!2=31#0'I!>#!E%f')!4)!B)22#J)2!1#!#QQ36G)&!4)=\!Q%32!>)!B8B)!304)\*! ThisWorkbook.Names.Add "Exemple", 25 Dim MonNom As Name Set MonNom = ThisWorkbook.Names("exemple") MsgBox MonNom.Index Set MonNom = ThisWorkbook.Names(, , "=25") MsgBox MonNom.Index

O%')e! D=)! $%=&! >P#$$)>! $#&! >#! 1#>)=&! 4)! &(Q(&)06)I! i)! 2=32! %E>3J(! 4P='3>32)&! >#! 1#>)=&! 2'&36')! 4)2!&(Q(&)06)2!4)!0%B!L\6)>I!6P)2'opo43&)!=0)!6G#f0)!6%B$%2()!4=!23J0)!(J#>!2=313!4)!>#!&(Q(&)06)*!

V%=&!&(6=$(&)&!>#!1#>)=&!4P=0!0%BI!3>!2=QQ3'!4%06!4P#$$)>)&!=0)!4)2!$&%$&3('(2!T)Q)&2<%!4)!>P%Ei)'!O#B)!2(>)6'3%00(*!O%')e!D=)!23!>#!&(Q(&)06)!)2'!=0)!$>#J)!4)!6)>>=>)I!i)!$)=\!&)01%-)&!=0!%Ei)'!T#0J)!#1)6! >#! $&%$&3('(!T)Q)&2<%T#0J)! ! %=!B8B)! 43&)6')B)0'! $#22)&! >)! 0%B! 6%BB)! #&J=B)0'! 4)! >P%Ei)'!T#0J)*! Dim Maplage As Range 'le nom réfère à une plage de cellule ThisWorkbook.Names.Add NameLocal:="Plage", RefersToLocal:="=A1:B15" Set Maplage = ThisWorkbook.Names("Plage").RefersToRange Set Maplage = ThisWorkbook.Worksheets("Feuil1").Range("Plage")

K'')0'3%0! >%&2D=)! 1%=2! #QQ)6')e! 4)2! 1#>)=&2! p! 4)2! 0%B2I! >#! 1#>)=&! &)01%-()! $#&! >)2! $&%$&3('(2!T)Q)&2<%!2)&%0'!4)!>#!Q%&B)!6G#f0)!6%BB)0q#0'!$#&!(J#>*!:%=2!$%=1)e!='3>32)&!>#!B('G%4)!L1#>=#')!4)!>P%Ei)'!#$$>36#'3%0!$%=&!&)6%01)&'3&!>#!1#>)=&!4#02!>)!E%0!'-$)*!ThisWorkbook.Names.Add "Exemple", 25 'Lève une erreur de type MsgBox 2 * ThisWorkbook.Names("Exemple").RefersTo 'Affiche 50 MsgBox 2 * Application.Evaluate(ThisWorkbook.Names("Exemple").RefersTo)

V%=&!&)'3&)&!=0!0%B!4)!>#!6%>>)6'3%0!%0!='3>32)!>#!B('G%4)!])>)')!2=&!=0!0%B!4(Q303*!

! +U?

Page 133: Cours VBA débutants.pdf

Sheets /%BB)!0%=2!>P#1%02!4(ip!1=I!>#!6%>>)6'3%0!XG))'2!)2'!#22)e!$3(J)=2)I!>)!2)=>!B%B)0'!%x!3>!)2'!='3>)!

4)!>P='3>32)&!)2'!$%=&!)\'&#3&)!>)!0%BE&)!4)!Q)=3>>)!4=!6>#22)=&!%=!$%=&!6%00#f'&)!>)!'-$)!4P=0)!Q)=3>>)!4=!6>#22)=&*!Sub TestFeuille() Dim NbFeuille As Integer, compteur As Long, TypeFeuille As String NbFeuille = ThisWorkbook.Sheets.Count For compteur = 1 To NbFeuille Select Case ThisWorkbook.Sheets(compteur).Type Case XlSheetType.xlChart TypeFeuille = "Feuille graphique" Case XlSheetType.xlDialogSheet TypeFeuille = "Boîte de dialogue Excel 5" Case XlSheetType.xlExcel4IntlMacroSheet TypeFeuille = "Feuille Macro internationale Excel 4" Case XlSheetType.xlExcel4MacroSheet TypeFeuille = "Feuille macro excel 4" Case XlSheetType.xlWorksheet TypeFeuille = "Feuille de calcul" End Select MsgBox Next compteur End Sub

Worksheets T)01%3)!>#!6%>>)6'3%0!4)2!Q)=3>>)2!4)!6#>6=>!4=!6>#22)=&*!

Quelques propriétés & méthodes de l'objet Workbook S3)0! D=)! >l%Ei)'! `%&aE%%a! )\$%2)! 4)! 0%BE&)=2)2! $&%$&3('(2! )'! B('G%4)2I! )>>)2! 2%0'! #22)e!

2$(63Q3D=)2!)'!$>='m'!='3>32()2!4#02!4)2!26(0#&33!$#&'36=>3)&2!u!0%=2!0l)0!1)&&%02!363!D=)!D=)>D=)2o=0)2*!

Propriétés FullName, Name & Path (String) T

O#B)!>)!0%B!4=!6>#22)=&!#1)6!2%0!)\')023%0!V#'G!>)!6G)

)01%3)!>P)02)BE>)!%=!>)2!(>(B)0'2!6%02'3'='3Q2!4=!6G)B30!4=!6>#22)=&*![=>>O#B)!&)01%3)!>)!0%B!6%B$>)'!4=!6>#22)=&!

B30!j2#02!>)!4)&03)&!2($#&#')=&!4)!Q36G3)&k!

Propriété ReadOnly (Boolean) T)01%3)!1&#3!23!>)!6>#22)=&!)2'!%=1)&'!)0!>)6'=&)!2)=>)*!!

Propriété Saved (Boolean) T)01%3!%=!4(Q303!23!>)!6>#22)=&!#!('(!B%43Q3(!4)$=32!>#!4)&03W&)!2#=1)J#&4)*!:%=2!$%=1)e!B)''&)!

6)'')! $&%$&3('(! p! [#>2)!B8B)! 23! >)! 6>#22)=&! #! ('(!B%43Q3(! $%=&! 0)! $#2! #1%3&! >P#QQ36G#J)! 4=!B)22#J)!4P#>)&')!L\6)>!>%&2!4)!>#!Q)&B)'=&)!4P=0!6>#22)=&!B%43Q3(*!

! +UU

Page 134: Cours VBA débutants.pdf

Méthode Close [)&B)!>)!6>#22)=&*!Sub Closej[SaveChanges As Boolean], [Filename As String],…k!Fx!SaveChanges!4(Q303'!>#!2'&#'(J3)!4)!2#=1)J#&4)!')>>)!D=)!v!

")2!B%43Q36#'3%02!2%0'!)0&)J32'&()2!23!>l#&J=B)0'!)2'!1&#3*! ")2!B%43Q36#'3%02!0)!2%0'!$#2!)0&)J32'&()2!23!>l#&J=B)0'!)2'!Q#=\*! g0)! E%f')! 4)! 43#>%J=)2! 4)B#04)! 2l3>! Q#='! )0&)J32'&)&! >)2! 6G#0J)B)0'2! >)! 6#2! (6G(#0'!2l#QQ36G)*!

L'!Filename!4(Q303'!=0!0%B!4)!Q36G3)&!$%=&!>#!2#=1)J#&4)I!34)0'3D=)!4#02!6)!6#2!p!=0)!='3>32#'3%0!4)!X#1)K2!jL0&)J32'&)&!2%=2k*! If Not ThisWorkbook.Saved Then

ThisWorkbook.Close True

%'WJ)!>)!6>#22)=&*!lean], [Windows As Boolean]k!

End If

Méthode Protect V&Sub Protectj[Password As String], [Structure As Boo"l#&J=B)0'!Password!)2'!>)!B%'!4)!$#22)!4)!$&%')6'3%0*!Xl3>!)2'!%B32I!>)!6>#22)=&!)2'!$&%'(J(!2#02!

B%'!4)!$#22)!)'!3>!)2'!#>%&2!$%223E>)!4)!>)!4($&%'(J)&!p!$#&'3&!4=!B)0=!L\6)>*!X3!>l#&J=B)0'!Structure!)2'!1&#3I!>l%&4&)!4)2!Q)=3>>)2!)2'!Q3\)!)'!3>!0P)2'!$#2!$%223E>)!4P)0!#i%=')&!%=!4P)0!2=$$&3B)&I!23!>l#&J=B)0'!Windows!)2'!1&#3I!>)2!Q)08'&)2!#QQ36G#0'!>)!6>#22)=&!2%0'!E>%D=()2*!

O%')e! D=)! 1%=2! $%=1)e! #$$)>)&! V&%')6'! 2#02! #&J=B)0'! )'! 4(Q303&! >)2! $&%$&3('(2! (D=31#>)0')2!V#22Y%&4I!V&%')6'X'&=6'=&)!)'!V&%')6'`304%Y2*!

O)! 6%0Q%04)e! $#2! >)!B%'! 4)! $#22)! 4)! $&%')6'3%0! 4=! 6>#22)=&! #1)6! 6)>=3! &)2'&)3J0#0'! >l#66W2! )0!(6&3'=&)*!

Méthodes Save, SaveAs & SaveCopyAs /)2!'&%32!B('G%4)2!JW&)0'!>#!2#=1)J#&4)!4=!6>#22)=&*!"#!B('G%4)!X#1)! 0P#'')04! $#2! 4P#&J=B)0'*! X3! 1%=2! >P='3>32)e! 2=&! =0! 6>#22)=&! D=)! 1%=2! 1)0)e! 4)!

6&()&!)'!D=3!0P#!i#B#32!('(!2#=1)J#&4(I!L\6)>!')0')&#!4)!>P)0&)J32'&)&!2%=2!>)!0%B!4%00(!$#&!4(Q#='!p!>#!6&(#'3%0!2=313!4)!>P)\')023%0!\>2!4#02!>)!&($)&'%3&)!6%=&#0'*!

"#!B('G%4)!SaveCopyAs!#'')04!=0!0%B!4)!Q36G3)&!6%BB)!#&J=B)0'*!")!6>#22)=&!%=1)&'!0)!1)&&#!$#2!2#!$&%$&3('(!Saved! &#B)0(!p!1&#3)!#$&W2! >P#$$)>!4)! >#!B('G%4)!SaveCopyAs!$=32D=P3>!0P#=&#!$#2!('(!)0&)J32Sub Test

'&(*!Save()

Dim MonClasseur As Workbook Set MonClasseur = Application.Workbooks.Add With MonClasseur.Worksheets(1).Cells(1, 1) .Value = 1 .Resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=100, Trend:=False End With MonClasseur.SaveCopyAs "temp.xls" Debug.Print MonClasseur.Saved 'Faux End Sub

"#!B('G%4)!SaveAs!)2'!4)!>#!Q%&B)!v!Sub SaveAsj}[3>)0#B)~I!}[3>)[%&B#'~I!}V#22Y%&4~I!}`&3')T)2V#22Y%&4~I!

}T)#4F0>-T)6%BB)04)4~I!}/&)#')S#6a=$~I!}K66)22C%4)!K2!M>X#1)K2K66)22C%4)!R!\>O%/G#0J)~I!}/%0Q>36'T)2%>='3%0~I!}K44<%C&=~I!}<)\'/%4)$#J)~I!}<)\':32=#>"#-%='~I!}"%6#>~k!

! +U,

Page 135: Cours VBA débutants.pdf

Sub TestSave() Dim MonClasseur As Workbook Set MonClasseur = Application.Workbooks.Add With MonClasseur.Worksheets(1).Cells(1, 1) .Value = 1 .Resize(100).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1, Stop:=100, Trend:=False End With MonClasseur.SaveAs Filename:="D:\User\MonClasseur.xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="password", ReadOnlyRecommended:=True, CreateBackup:=False End Sub

Méthode Unprotect ])!>#!Q%&B)!/>#22)=&*g0$&%')6'jrC%'!4)!$#22)rkI!&)'3&)!>#!$&%')6'3%0!4=!6>#22)=&*!

Worksheets & Worksheet "#! 6%>>)6'3%0! `%&a2G))'2! &)$&(2)0')! >P)02)BE>)! 4)2! Q)=3>>)2! 4)! 6#>6=>! 4=! 6>#22)=&*! L>>)! 2)!

B#03$=>)!6%BB)!>P)02)BE>)!4)2!6%>>)6'3%02*!O%')e!'%=')Q%32!D=)!>#!$&%$&3('(!7')B!&)01)&&#!=0!%Ei)'!)'!0%0!=0!%Ei)'!`%&a2G))'*!:%=2!4)1&)e!Q%&6)&!>#!6%01)&23%0!$%=&!(13')&!4P#1%3&!=0)!&=$'=&)!70')>>3X)02)*!

Méthodes de la collection Worksheets

Add V)&B)'!4P#i%=')&!=0)!Q)=3>>)!p!>#!6%>>)6'3%0!)0!$&(632#0'!>#!$%23'3%0!4P#i%='*!Function Addj[Before As Sheet], [After As Sheet], [Count As Integer], [Type As XlSheetType]k

As Object!h)!1%=2!#3!B#&D=(!Sheet!6%BB)!'-$)!4P#&J=B)0'!$%=&!Before!)'!After!E3)0!D=)!6)! '-$)!0P)\32')!

$#2*!L0!)QQ)'I!6)2!#&J=B)0'2!#'')04)0'!=0)!Q)=3>>)!$&(632)!4=!6>#22)=&!$%=&!2#1%3&!%=!302(&)&!>#!Q)=3>>)!6&(()*! ")! 6%B$%&')B)0'! $)='! 8'&)! 43QQ(&)0'! 2)>%0! >#! 0#'=&)! 4)! >#! $&(6323%0*! 7B#J30%02! =0! 6>#22)=&!6%0')0#0'!=0)!Q)=3>>)!4)!6#>6=>I!=0)!Q)=3>>)!J&#$G3D=)!$=32!=0)!#='&)!Q)=3>>)!4)!6#>6=>*!Sub AddWorksheet() Dim NouvelleFeuille As Worksheet Set NouvelleFeuille = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets(2)) 'la feuille sera insérée après la deuxième feuille de calcul (4éme position) Set NouvelleFeuille = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Sheets(2)) 'la feuille sera insérée après la deuxième feuille (donc graphique) (3éme position) End Sub

:%=2!0)!4)1)e!$&(632)&!D=P=0!4)2!4)=\!#&J=B)0'2I! 2%3'!AfterI! 2%3'!BeforeI! 23! 1%=2!0P)0!$&(632)e!#=6=0!>#!Q)=3>>)!2)&#!#i%='()!)0!$&)B3W&)!$%23'3%0*!

"P#&J=B)0'!/%=0'!$)&B)'!4P#i%=')&!$>=23)=&2!Q)=3>>)2!)02)BE>)*!"P#&J=B)0'! <-$)! )2'! =0)! #E)&&#'3%0*! 7>! $)&B)'! 4)! $&(632)&! >)! '-$)! 4)! Q)=3>>)! D=)! >P%0! 2%=G#3')!

#i%=')&*!L0! '%=')! >%J3D=)I! $=32D=)! 0%=2! '&#1#3>>%02! 2=&! =0)! 6%>>)6'3%0! 4)! Q)=3>>)2! 4)! 6#>6=>I! 0%=2! 0)!4)1&3%02!$%=1%3&!#i%=')&!D=)!4)2!Q)=3>>)2!4)!6#>6=>*!C#32!23!0%=2!(6&31%02!ThisWorkbook.Worksheets.Add After:=ThisWorkbook.Worksheets(2), Type:=xlChart

! +UN

Page 136: Cours VBA débutants.pdf

")! 6%B$3>#')=&! 0)! 1)&&#! $#2! 4P)&&)=&2! #1#0'! D=)! 1%=2! 0P)\(6='3)e! >#! >3J0)*! "pI! =0)! )&&)=&! 2)&#!>)1()I!$=32D=)!6)!0P)2'!$#2!6%G(&)0'I!B#32!6)>#!#=&#3'!('(!$>=2!23B$>)!4)!0)!$#2!B)''&)!>P#&J=B)0'!<-$)*!

Copy V)&B)'!4)!6%$3)&!=0)!Q)=3>>)!4#02!>)!6>#22)=&!4(Q303!p!>#!$%23'3%0!4(Q303*!])!>#!Q%&B)!v!Sub Copyj[Before], [After]k!")2! #&J=B)0'2! S)Q%&)! )'! KQ')&! Q%06'3%00)0'! 6%BB)! $%=&! >#! B('G%4)! K44*! 7>2! 0)! 4(23J0)0'!

6)$)04#0'!$#2!%E>3J#'%3&)B)0'!=0)!Q)=3>>)!4=!6>#22)=&!4%0'!)2'!322=)!>#!Q)=3>>)!p!6%$3)&*!/)63!3B$>3D=)!D=P#1)6!6)'')!B('G%4)!%0!$)='!%=!E3)0!4=$>3D=)&!>#!Q)=3>>)!4#02!=0!B8B)!6>#22)=&I!%=!6%$3)&!>#!Q)=3>>)!4#02!=0!#='&)!6>#22)=&*!Sub CopyWorksheet() 'duplique la feuille en dernière position du classeur d'origine ThisWorkbook.Worksheets("Feuil1").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Dim MonClasseur As Workbook Set MonClasseur = Application.Workbooks.Add 'copie la feuille en première position dans un nouveau classeur ThisWorkbook.Worksheets("Feuil1").Copy Before:=MonClasseur.Worksheets(1) End Sub

K'')0'3%0I! 23! >#! Q)=3>>)! ='3>32)! 4)2! 0%B2! %=! 4)2! &(Q(&)06)2! )\')&0)2I! >#! 6%$3)&! 4#02! =0! 0%=1)#=!6>#22)=&!$)='!4(6>)06G)&!=0!6)&'#30!0%BE&)!4P)&&)=&2*!

O%')e!D=)!>#!Q)=3>>)!6%$3()!0)!&)01%3)!$#2!4)!&(Q(&)06)2!2=&!>#!0%=1)>>)!Q)=3>>)*!"#!Q)=3>>)!6%$3()!4)13)04&#!>#!Q)=3>>)!#6'31)!6)!D=3!1%=2!4%00)!=0!B%-)0!(1)0'=)>!4)!>#!&)'&%=1)&I!230%0!1%=2!$%=1)e!>)!Q#3&)!)0!i%=#0'!2=&!>#!$%23'3%0!4P302)&'3%0*!Sub CopyWorksheet() Dim MonClasseur As Workbook, FeuilleCollee As Worksheet Set MonClasseur = Application.Workbooks.Add Set FeuilleCollee = MonClasseur.Worksheets(1) ThisWorkbook.Worksheets("Feuil1").Copy Before:=FeuilleCollee Set FeuilleCollee = FeuilleCollee.Previous End Sub

Delete X=$$&3B)!>P)02)BE>)!4)2!Q)=3>>)2!4)!6#>6=>*!g0)!)\6)$'3%0!2)&#!>)1()!23!>)!6>#22)=&!0)!6%0'3)0'!D=)!

4)2!Q)=3>>)2!4)!6#>6=>*!

FillAcrossSheets V)&B)'!4)!&)6%$3)&!=0)!$>#J)!4)!6)>>=>)2!4#02!>P)02)BE>)!4)2!Q)=3>>)2!2(>)6'3%00()2*!])!>#!Q%&B)!v!Sub FillAcrossSheetsjRange As Range, [Type As XlFillWith = xlFillWithAll]k!V%=&!4(23J0)&!=0)!2(>)6'3%0!4)!Q)=3>>)!2#02!#1%3&!p!>)2!2(>)6'3%00)&!&()>>)B)0'I!%0!$#22)!=0!'#E>)#=!

4)!0%B2!4)!Q)=3>>)2!p!>#!$&%$&3('(!`%&a2G))'2*!Dim ListFeuille As Variant ListFeuille = Array("Feuil1", "Feuil2", "Feuil4") ThisWorkbook.Worksheets(ListFeuille).FillAcrossSheets _ Worksheets("Feuil1").Range("A1:A20"), xlFillWithContents

! +U.

Page 137: Cours VBA débutants.pdf

Move ]($>#6)!>#!Q)=3>>)!4#02!>)!6>#22)=&!Sub Movej[Before], [After]k!Fx!Before!)'!After!4(23J0)!=0)!Q)=3>>)!4)!&(Q(&)06)*!V#&!)\)B$>)I!>)!6%4)!2=31#0'!$#22)!>#!$&)B3W&)!Q)=3>>)!4)!6#>6=>!)0!4)&03W&)!$%23'3%0!j4)2!Q)=3>>)2!

4)!6#>6=>k!Sub MoveSheet2End() ThisWorkbook.Worksheets(1).Move after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) End Sub

PrintOut F&4%00)!>P3B$&)223%0!4)!>#!Q)=3>>)I!')>>)!D=)!Sub PrintOutj[From], [To], [Copies], [Preview], [ActivePrinter], [PrintToFile], [Collate],

[PrToFileName]k!h)! 0)! &)0'&)&#32! 363! 4#02! >)! 4('#3>! 4)2! #&J=B)0'2! 6#&! J(0(&#>)B)0'! >P#$$)>! 4)! >#! B('G%4)! 2#02!

#&J=B)0'!2=QQ3'*!

Propriétés de l'objet Worksheet renvoyant une collection

Cells T)01%3)!>#!6%>>)6'3%0!4)2!6)>>=>)2!4)!>#!Q)=3>>)!2%=2!Q%&B)!4P=0!%Ei)'!T#0J)*!

Columns & Rows T)01%3)!>#!6%>>)6'3%0!4)2!6%>%00)2!%=!4)2!>3J0)2!4)!>#!Q)=3>>)!2%=2!>#!Q%&B)!4P=0!%Ei)'!Range*!h)!>)!

B)'2!)0!J&#2!6#&!3>!0P)\32')!$#2!4#02!L\6)>!4P%Ei)'!/%>=B0!%=!T%Y*!!F0!$)='!&(6=$(&)&!=0)!6%>%00)!%=!=0)!>3J0)!2%3'!)0!$#22#0'!$#&!>P34)0'3Q36#')=&!4)!>#!6%>%00)!%=!4)!>#!>3J0)I!2%3'!)0!='3>32#0'!>P304)\I!2%3'!$#&!4)2!B('G%4)2!4(&31()2*!O%=2!'&#3')&%02!4)!'%='!6)>#!$>=2!>%30!4#02!>)!$&(2)0'!4%6=B)0'*!

Comments S3)0!D=)! >)2!6%BB)0'#3&)2!2%3)0'!#''&3E=(2!p!=0)!6)>>=>)I! 3>2!2%0'!#66)223E>)2!$#&!6)'')!$&%$&3('(!

D=3!&)01%3)!'%=2!>)2!6%BB)0'#3&)2!4)2!6)>>=>)2!4)!>#!Q)=3>>)*!F0! ='3>32)! $>=2! 2%=1)0'! >#! $&%$&3('(!/%BB)0'! 4)! >l%Ei)'!T#0J)! $%=&! #'')304&)! =0! 6%BB)0'#3&)!

2$(63Q3D=)!%=!$#&!>#!B('G%4)!X$)63#>/)>>2!$%=&!>)2!&(6=$(&)&!'%=2*!

Hyperlinks T)01%3)! >#! 6%>>)6'3%0! 4)2! >3)02! G-$)&')\')! 4)! >#! Q)=3>>)*! g0! >3)0! G-$)&')\')! )2'! J(0(&#>)B)0'!

#QQ)6'(!p!=0)!6)>>=>)!%=!p!=0!%Ei)'I!3>!4(23J0)!=0!)B$>#6)B)0'!4#02!>)!6>#22)=&!%=!4#02!=0!4%6=B)0'!)\')&0)I!=0)!#4&)22)!B#3>I!)'6*Z!Sub TestHyperTexte() Dim MaFeuille As Worksheet, MonLien As Hyperlink Set MaFeuille = ThisWorkbook.Worksheets("Feuil2") Set MonLien = MaFeuille.Hyperlinks.Add(Anchor:=MaFeuille.Cells(2, 2), Address:= _ "D:\JMARC\Classeur1.xls", SubAddress:="Feuil1!L1C1:L10C5", TextToDisplay:= _ "Liste des données externes") MonLien.Follow End Sub

Names

! +U5

Page 138: Cours VBA débutants.pdf

T)01%3)! >#! 6%>>)6'3%0!4)2!0%B2!4(Q3032! 4#02! la feuille de calcul*!O%&B#>)B)0'! >)2!0%B2!L\6)>!2%0'!4(Q3032!#=!031)#=!4=!6>#22)=&*!7>!)2'!6)$)04#0'!$%223E>)!4)!4(Q303&!=0!0%B!#=!031)#=!4)!>#!Q)=3>>)I!J(0(&#>)B)0'!4#02!>)2!4)=\!6#2!2=31#0'2!v!

F0!0)!2%=G#3')!$#2!D=)!>)!0%B!2%3'!1323E>)!p!>l)\'(&3)=&!4)!>#!Q)=3>>)! F0!1)='!&)4(Q303&!=0!0%B!)\32'#0'!4#02!>)!6>#22)=&!$%=&!>#!Q)=3>>)*!

Shapes T)01%3)!>#!6%>>)6'3%0!4)2!%Ei)'2!0%0!F"L!6%0')0=2!4#02!>#!Q)=3>>)I!p!2#1%3&!Q%&B)2!J(%B('&3D=)2I!

6%0'&m>)2!4)!'-$)!Q%&B=>#3&)I!3B#J)2I!)'6Z!O%=2!0)!'&#3')&%02!$#2!4)!6)2!%Ei)'2!4#02!6)!6%=&2I!2#=Q!$%=&!>)2!6%0'&m>)2!306%&$%&(2*!

Autres propriétés de l'objet Worksheet

FilterMode (Boolean) T)01%3)!1&#3!23!>#!Q)=3>>)!)2'!)0!B%4)!Q3>'&(*!O%=2!1)&&%02!=0!$)=!$>=2!>%30!>l='3>32#'3%0!4)2!Q3>'&)2*!

Next & Previous (Worksheet) T)01%3)!>#!Q)=3>>)!2=31#0')!%=!$&(6(4)0')!4#02!>#!6%>>)6'3%0!4)2!Q)=3>>)2!4)!6#>6=>!%=!O%'G30J!23!%0!

#$$)>>)!V&)13%=2!2=&!>#!$&)B3W&)!Q)=3>>)!4)!>#!6%>>)6'3%0!%=!O)\'!2=&!>#!4)&03W&)*!

PageSetup (PageSetup) "l%Ei)'! V#J)X)'=$! &)01%-(! &)$&(2)0')! >#! B32)! )0! $#J)! 4)! >#! Q)=3>>)! J(0(&#>)B)0'! p! Q30!

4l3B$&)223%0*!")2!$&%$&3('(2!4)! >l%Ei)'!V#J)X)'=$!6%&&)2$%04)0'!#=\!%0J>)'2!4)! >#!E%f')!4)!43#>%J=)!mise en page!4=!B)0=!Fichier*!

F0!$%=&&#3'!>)2!&)$&(2)0')&!#3023!v!

!!

! +U9

Page 139: Cours VBA débutants.pdf

!!

!!

! +U;

Page 140: Cours VBA débutants.pdf

!!/)!D=3!)0!6%4)!:SK!2l(6&3&#3'!

With ActiveSheet.PageSetup .PrintTitleRows = "$1:$1" .PrintTitleColumns = "$A:$A" .LeftHeader = "ET gauche" .CenterHeader = "ET Centre" .RightHeader = "ET droite" .LeftFooter = "PP Gauche" .CenterFooter = "PP Centre" .RightFooter = "PP Droite" .LeftMargin = Application.InchesToPoints(0.590551181102362) .RightMargin = Application.InchesToPoints(0.590551181102362) .TopMargin = Application.InchesToPoints(0.905511811023622) .BottomMargin = Application.InchesToPoints(0.905511811023622) .HeaderMargin = Application.InchesToPoints(0.393700787401575) .FooterMargin = Application.InchesToPoints(0.47244094488189) .PrintHeadings = True .PrintGridlines = False .PrintComments = xlPrintNoComments .PrintQuality = 600 .CenterHorizontally = True .CenterVertically = False .Orientation = xlLandscape .Draft = True .PaperSize = xlPaperA3 .FirstPageNumber = 2 .Order = xlDownThenOver .BlackAndWhite = True .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = 2 .PrintErrors = xlPrintErrorsBlank End With

! +,@

Page 141: Cours VBA débutants.pdf

Range (Range) T)01%3)!%=!4(Q303'!=0!J&%=$)!4)!6)>>=>)2!4)!>#!Q)=3>>)*!

UsedRange (Range) T)01%3)! %=! 4(Q303'! >#! $>#J)! &)6'#0J=>#3&)! 4)2! 6)>>=>)2! ='3>32()2*! K'')0'3%0! 3>! 0)! 2l#J3'! $#2! 4)! >#!

$>#J)!4)2!6)>>=>)2!6%0')0#0'!D=)>D=)!6G%2)I!B#32!=0)!$>#J)!#>>#0'!4)!>#!$&)B3W&)!6)>>=>)!p!>#!4)&03W&)!6)>>=>)!#-#0'!=0!6%0')0=!%=!=0)!$&%$&3('(!43QQ(&#0'!4=!2'#04#&4*!Private Sub testusedrange() Dim MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets.Add MaFeuille.Cells(100, 10).Style = "Pourcentage" Debug.Print MaFeuille.UsedRange.AddressLocal(True, True, xlR1C1) 'L100C10 MaFeuille.Cells(2, 3).Value = "test" Debug.Print MaFeuille.UsedRange.AddressLocal(True, True, xlR1C1) 'L2C3:L100C10 End Sub

F0! ='3>32)! Q&(D=)BB)0'! g2)4T#0J)! >%&2D=l%0! 4%3'! '&#1#3>>)&! 2=&! >)2! 6)>>=>)2! 4)! >#! Q)=3>>)! $%=&!&)2'&)304&)!>#!$%&'()!#=\!6)>>=>)2!&()>>)B)0'!='3>32()2*!

Visible (XlSheetVisibility) ](Q303'!>l#QQ36G#J)!%=!>)!B#2D=#J)!4)!>#!Q)=3>>)*!V)='!$&)04&)!=0)!4)2!1#>)=&2!2=31#0')2!v!xlSheetHidden! 0 C#2D=)!>#!Q)=3>>)!xlSheetVisible! -1 KQQ36G)!>#!Q)=3>>)!

xlSheetVeryHidden! 2 C#2D=)!>#!Q)=3>>)!2#02!D=l3>!2%3'!$%223E>)!$%=&!>l='3>32#')=&!4)!>#!Q#3&)!#QQ36G)&*!

Méthodes de l'objet Worksheet

Calculate [%&6)!>)!6#>6=>!4)!>#!Q)=3>>)*!70='3>)!>%&2D=)!>)!B%4)!4)!6#>6=>!)2'!2=&!#='%B#'3D=)*!Ol%=E>3)e!$#2!

D=)!E>%D=)&!>)!6#>6=>!#='%B#'3D=)!$)='!#66(>(&)&!>l)\(6='3%0!4=!6%4)*!

ChartObjects T)01%3)! 2%3'! =0! J&#$G3D=)! 306%&$%&(I! 2%3'! >#! 6%>>)6'3%0! 4)2! J&#$G3D=)2! 306%&$%&(2! 4)! >#! Q)=3>>)*!

O%=2!1)&&%02!6)>#!)0!4('#3>!4#02!>l('=4)!4)2!J&#$G3D=)2*!

Copy 74)0'3D=)!p!>#!B('G%4)!4)!>#!6%>>)6'3%0!`%&a2G))'2!

Delete X=$$&3B)!>#!Q)=3>>)*!X#=Q!23!1%=2!#1)e!4(2#6'31(!>#!$&%$&3('(!]32$>#-K>)&'2!4)!>l%Ei)'!K$$>36#'3%0I!

1%=2!#=&)e!>l#QQ36G#J)!4l=0!B)22#J)!4)!6%0Q3&B#'3%0!4)!2=$$&)223%0*!

Move 74)0'3D=)!p!>#!B('G%4)!4)!>#!6%>>)6'3%0!`%&a2G))'2!

! +,+

Page 142: Cours VBA débutants.pdf

OLEObjects T)01%3)!>#!6%>>)6'3%0!4)2!%Ei)'2!F"L!6%0')0=2!4#02!>#!Q)=3>>)*!X#02!)0'&)&!'&%$!4#02!>)!4('#3>I!>)2!

%Ei)'2!F"L!2%0'!4)2!(>(B)0'2!30'(J&(2!Q%=&032!$#&!4)2!6%B$%2#0'2!)\')&0)2!j%=!4l#='&)2!#$$>36#'3%02k!$%=1#0'!8'&)!(43'(2!4#02!>l#$$>36#'3%0!D=3!>)2!#!6&(()*!F0!'&%=1)I!)0'&)!#='&)I!4#02!6)'')!6%>>)6'3%0I!>)2!6%0'&m>)2!4)!E%f')!4)!43#>%J=)2!30'(J&(2!4#02!>#!Q)=3>>)I!#3023!D=)!>)2!%Ei)'2!#66)223E>)!4)$=32!>)!B)0=!FEi)'!4#02!>)!B)0=!702)&'3%0!4lL\6)>*!Sub InsertOLE() Dim Mafeuille As Worksheet Set Mafeuille = ThisWorkbook.Worksheets("Feuil3") 'ajoute un fichier word existant et l'intègre comme objet lié Mafeuille.OLEObjects.Add Filename:="D:\tutoriel\tuto.doc", Link:=True, DisplayAsIcon:=False 'ajoute un controle spin comme objet embarqué Mafeuille.OLEObjects.Add ClassType:="Forms.SpinButton.1", Link:=False, DisplayAsIcon:=False, Left:=173.25, Top:=197.25, Width:=12.75, Height:=25.5 End Sub

Paste & PasteSpecial /)2!4)=\!B('G%4)2!2)&1)0'!p!6%$3)&!4)2!(>(B)0'2!2=&!=0)!Q)=3>>)!4)!6#>6=>!)'!0%0!=0)!Q)=3>>)!4)!

6#>6=>!)>>)oB8B)*!])!>#!Q%&B)!v!Sub Pastej[Destination As Range], [Link As Boolean]k!Fx!4)2'30#'3%0!)2'!>#!$>#J)!%x!4%3'!8'&)!6%>>(!>)!6%0')0=!4=!$&)22)o$#$3)&2*!X3!>P#&J=B)0'!)2'!%B32!

)'!D=P=0)!$>#J)!)2'!0(6)22#3&)I!6P)2'!>#!2(>)6'3%0!D=3!2)&#!='3>32()*!"P#&J=B)0'!"30a!6%>>)!>P(>(B)0'!6%BB)!=0!>3)0!_-$)&')\')*!")2!4)=\!#&J=B)0'2!2%0'!)\6>=23Q2I!1%=2!4)1)e!$&(632)&!2%3'!>P=0I!2%3'!>P#='&)I!2%3'!#=6=0*!

Sub PasteSpecialj[Format], [Link], [DisplayAsIcon], [IconFileName], [IconIndex], [IconLabel], [NoHTMLFormatting]k!

O)!6%0Q%04)e!$#2!6)'')!B('G%4)!#1)6!>#!B('G%4)!4=!B8B)!0%B!4)!>P%Ei)'!T#0J)*!"#!B('G%4)!V#2')X$)63#>!4)!>P%Ei)'!`%&a2G))'!6%>>)!4)2!(>(B)0'2!)\')&0)2!p!L\6)>I!J(0(&#>)B)0'!4)2!%Ei)'2!F"L*!

])!B#03W&)!J(0(&#>)I!%0!(13')!4P='3>32)&!6)2!B('G%4)2!$%=&!6%>>)&!4)2!6)>>=>)2!L\6)>I!%0!='3>32)!$>='m'!>#!B('G%4)!/%$-!4)!>P%Ei)'!T#0J)!%=!4)2!#QQ)6'#'3%02!43&)6')2*!

PrintOut 74)0'3D=)!p!>#!B('G%4)!4)!>#!6%>>)6'3%0!`%&a2G))'2!

Protect & Unprotect V&%'WJ)!%=!&)'3&)!>#!$&%')6'3%0!4)!'%='!%=!$#&'3)!4)!>#!Q)=3>>)*!Sub Protectj[Password], [DrawingObjects], [Contents], [Scenarios], [UserInterfaceOnly],

[AllowFormattingCells], [AllowFormattingColumns], [AllowFormattingRows], [AllowInsertingColumns], [AllowInsertingRows], [AllowInsertingHyperlinks], [AllowDeletingColumns], [AllowDeletingRows], [AllowSorting], [AllowFiltering], [AllowUsingPivotTables]k!

")!$&)B3)&!#&J=B)0'!)2'!>)!B%'!4)!$#22)!4)!$&%')6'3%0*!XP3>!)2'!%B32I!>#!Q)=3>>)!2)&#!$&%'(J()!B#32!>#!$&%')6'3%0!$%=&&#!8'&)!)0>)1()!43&)6')B)0'!4#02!>)!B)0=!F='3>2!s!V&%')6'3%0!4PL\6)>*!

! +,?

Page 143: Cours VBA débutants.pdf

")2!#='&)2!#&J=B)0'2!2%0'!4)2!E%%>()02!3043D=#0'!6)!D=3!4%3'!8'&)!$&%'(J(*!"#!B('G%4)!Unprotect!0P#'')04!D=)!>)!B%'!4)!$#22)!6%BB)!#&J=B)0'I!'%=2!>)2!(>(B)0'2!2%0'!4($&%'(J(2!D=#04!%0!301%D=)!Unprotect*!Dim Mafeuille As Worksheet Set Mafeuille = ThisWorkbook.Worksheets("Feuil1") Mafeuille.Protect "Password", DrawingObjects:=False, Contents:=True, Scenarios:= _ True, AllowInsertingColumns:=True, AllowInsertingRows:=True, _ AllowInsertingHyperlinks:= , AllowDeletingColumns:=True, _ True

Ei)'!T#0

B$>)2I!i)!0P(6)! 6%01)0'3%0! D=)! '%=')! 1#&3

! /)>>2*! "P%Ei)'! Ti)'!T#0J)!&)$&(2)0')!$>=23)=&2!6)>

!6%0234(&()2!6%BB)!=0)!=03'(! >%J3D=)*!/P)2!6)>>=>)2!D=P3>!6%0'3)0'!2

)02)BE

'3>32()2I!i

2! =0! %Ei)'! T#0J)! )\$%2)

4)!7')B!4)!>P%Ei)'!T#0J)!

AllowDeletingRows:=True

Range & Cells /P)2'! 4#02! >#! B#03$=>#'3%0! 4)! 6)2! %Ei)'2! D=)! 2)! '&%=1)! >)! 6%&$2! 4)! >#! $&%J&#BB#'3%0! L\6)>*!

"%&2D=)!1%=2!2#=&)e!E3)0!B#03$=>)&! >P% J)I! >#!$&%J&#BB#'3%0!:SK!L\6)>!0)!$&(2)0')&#!$>=2!')>>)B)0'!4)!43QQ36=>'(2*!

V%=&!0)!$#2!#>>%0J)&!30='3>)B)0'!>)2!6%4)2!)\) &3&#32!$#2!'%=i%=&2!>)2!#QQ)6'#'3%02!4)2!%Ei)'2! $#&)0'! 4#02! >)2! )\)B$>)2*! V&)0%02! 6%BB #E>)! 6%0')0#0'! >)! B%'!P[)=3>>)P!2)&#!=0!%Ei)'!4)!'-$)!`%&a2G))'!)'!D=)!'%=')!1#&3#E>)!6%0')0#0'!>)!B%'!P/>#22)=&P!2)&#!=0!%Ei)'!4)!'-$)!`%&aE%%a*!

Concepts ")! $>=2! 4=&! 6%0232')! p! 43QQ(&)063)&! T#0J)! )' #0J)! &)$&(2)0')! =0)! %=! $>=23)=&2!

6)>>=>)2!4)!>#!B8B)!Q)=3>>)!4)!6#>6=>*!"%&2D=)!>P%E >=>)2I!)>>)2!0)!2%0'!$#2!Q%&6(B)0'!6%0'3J=à2I!B#32!)>>)2!2%0' 2'opo43&)!D=)! '%='!#6'3%0!2=&!>P%Ei)'!T#0J)!#J3'!2=&!'%=')2!>) #=Q!23!=0!2%=2!)02)BE>)!$#&'36=>3)&!)2'!2$(63Q3(*!

7>! 0P)\32')! $#2! 4P%Ei)'! /)>>2*! /)>>2! )2'! =0)! $&%$&3('(! D=3! &)01%3)! =0)! 6%>>)6'3%0! 4)! 6)>>=>)2! 4P=0!%Ei)'!6%0')0#0'!4)2!6)>>=>)2I!6P)2'opo43&)!4P=0!%Ei)'!`%&a2G))'!%=!4P=0!%Ei)'!T#0J)*!"#!$&%$&3('(!/)>>2!&)01%3)!=0!%Ei)'!T#0J)!$=32D=)!$#&!4(Q303'3%0I!>P%Ei)'!T#0J)!)2'!=0)!6%>>)6'3%0!4)!6)>>=>)2*!

/%BB)!1%=2!>)!1%-)eI!3>!0P)\32')!$#2!4)!43QQ(&)06)!)0'&)!>)2!4)=\I!B#32!>)2!4)=\!2%0'!&)$&(2)0'(2!$%=&!4)2!&#32%02!4)!>323E3>3'(*!

")!6G%3\!4P='3>32)&!=0)!0%'#'3%0!/)>>2!%=!=0)!0%'#'3%0!T#0J)!)2'!J(0(&#>)B)0'!436'(!$#&!>#!>%J3D=)!4=!6%4)*!V#&!)\)B$>)I!$%=&!Q#3&)!&(Q(&)06)!p!>P >)!4)2!6)>>=>)2!4P=0)!Q)=3>>)I!iP#=&#32!')04#06)!p!(6&3&)!v!Feuille.Cells

C#32!$%=&!Q#3&)!&(Q(&)06)!p!>P)02)BE>)!4)2!6)>>=>)2!= )!0%')&#32!v!Feuille.UsedRange

]#02!>)2!4)=\!6#2I!6P)2'!E3)0!=0!%Ei)'!T#0J)!D=3!)2'!&)01%-(*!/)>#! $)='! $#&#f'&)! 306%G(&)0'I! B#3 ! '%=i%=&2! =0)! 6%>>)6'3%0! /)>>2! D=3!

&)01%3)!=0!%Ei)'!T#0J)!34)0'3D=)*!])!>#!B8B)!Q#q%0I!>)2!0%'#'3%02!4)!>#!B('G% 2%0'!'%=')2!(D=31#>)0')2*!7>!

0P-!#!$#2!4)!43QQ(&)06)2!)0'&)!>)2!&(Q(&)06)2!v!Feuille.Cells(2,3) Feuille.Range("C2")

! +,U

Page 144: Cours VBA débutants.pdf

C8B)!23!4#02!6)&'#302!6#2!=0)!0%'#'3%0!2)&#!$&(Q(&#E>)!$%=&!4)2!&#32%02!4P(6&3'=&)!4)!6%4)*!K3023!23!0%=2!2%=G#3'%02!$#&6%=&3&!=0)!6)>>=>)!2=&!4)=\!4)!>#!$>#J)!rK+vKÜ+rI!3>!2)&#!$>=2!23B$>)!4P(6&3&)!v!Sub Parcourir() Dim compteur As Long, MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") For compteur = 1 To 52 Step 2 MaFeuille.Cells(1, compteur).Interior.Color = vbBlue Next compteur End Sub

d=)!Sub Parcourir() Dim compteur As Long, MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") For compteur = 1 To 52 Step 2 MaFeuille.Range(Mid(MaFeuille.Columns(compteur).Address(columnAbsolute:=False), Len(MaFeuille.Columns(compteur).Address(columnAbsolute:=False)) \ 2 + 2) & "1").Interior.Color = vbBlue Next compteur End Sub

")!6G%3\!4)2!0%'#'3%02!13)0'!#1)6!>P)\$(&3)06)*!b(0(&#>)B)0'I!3>!)2'!304=3'!#=223!$#&!1%'&)!Q#q%0!4)!B#03$=>)&!>)2!$>#J)2*!]#02!>)!$&(2)0'!6%=&2I!i)!1#32!='3>32)&!B#!Q#q%0!4)!0%')&*!L>>)!0P)2'!$#2!=031)&2)>>)!)'! )0!#=6=0)! Q#q%0! >#! 2)=>)! Q#q%0!4)!$&%6(4)&*!O%=2!1)&&%02!$>=2! >%30!4#02! >P('=4)!4)!6#2!$&#'3D=)2!D=P3>!-!#!2%=1)0'!$>=23)=&2!')6G03D=)2!)0132#J)#E>)2!$%=&!=0!B8B)!E='*!

XP3>!)2'!)0')04=!D=)!>P%Ei)'!/)>>!0P)\32')!$#2!)0!'#0'!D=)!')>I!&)J#&4%02!D=#04!B8B)!6%BB)0'!)2'!#&6G3')6'=&()! =0)! 6)>>=>)! #=! 2)02!:SK! 4=! ')&B)I! 6P)2'opo43&)! 2%=2! >#! Q%&B)! 4)! $&%$&3('(2! 4)! >P%Ei)'!T#0J)*!

!

! +,,

Page 145: Cours VBA débutants.pdf

L'! i)! 0P#3! &)$&(2)0'(! 363! D=)! D=)>D=)2! $&%$&3('(2*! ")2! 6)>>=>)2! 2%0'! 4)2! %Ei)'2! &)>#'31)B)0'!6%B$>)\)2I!E3)0!D=l%0!0l#3'!$>=2!4)!43QQ36=>'(2!p!>)2!B#03$=>)&!>%&2D=l%0!6%00#f'!>)!B%4W>)*!

")!4)=\3WB)!#2$)6'!3B$%&'#0'!4)!>P%Ei)'!T#0J)!)2'!2#!Q#q%0!4P#J3&!2=&!$>=23)=&2!6)>>=>)2!6%BB)!2P3>!0P-!)0!#1#3'!D=P=0)*!<%=')2!>)2!$&%$&3('(2!4)!>P%Ei)'!T#0J)!0)!&(#J322)0'!$#2!4)!>#!B8B)!Q#q%0!>%&2D=)!>P%Ei)'!6%0'3)0'!$>=23)=&2!6)>>=>)2*!")2!$&%$&3('(2!4)!6%0')0=I!$&3063$#>)B)0'![%&B=>#!)'!:#>=)I!$#&Q%32!#$$)>()2!$&%$&3('(2!'#E>)#=\!2%0'!J(&()2!2%=2!Q%&B)!4P=0!'#E>)#=!4)!:#&3#0'*!F0!$)='!#>%&2!>)2!#QQ)6')&!43&)6')B)0'!p!=0)!$>#J)!4)!'#3>>)!34)0'3D=)!2#02!2)!2%=63)&!4=!6%0')0=!4)!6G#D=)!6)>>=>)I!>P#QQ)6'#'3%0!2)!Q#32#0'!$#&!34)0'3Q36#'3%0!4)!$%23'3%0*!K3023!>)!6%4)!v!Range("C1:C5").Value = Range("A9:A13").Value

T)6%$3)&#!E3)0! >)2!1#>)=&2!4)! >#!$>#J)!2%=&6)!4#02! >#!$>#J)!63E>)I!%x!>#!1#>)=&!K;!2)&#!&)6%$3()!4#02!/+I!6)>>)!4)!K+@!4#02!/?!)'!#3023!4)!2=3')*!

7B#J30%02!B#30')0#0'!D=)!0%=2!#-%02!=0!6%4)!')>!D=)!v!Range("C1:C3").Interior.Color = Range("A9:A11").Interior.Color

/%BB)0'!1#o'o3>!8'&)!30')&$&('(!|!L'!E3)0!q#!4($)04*!/%BB)!>#!$&%$&3('(!70')&3%&!0P)2'!$#2!=0)!$&%$&3('(!'#E>)#=I!L\6)>!1#!>#!J(&)&!

6%BB)!=0)!$&%$&3('(!&)J&%=$()*!")2!$&%$&3('(2!&)J&%=$()2!Q%06'3%00)0'!4)!>#!B#03W&)!2=31#0')!v! X3! '%=')2! >)2!6)>>=>)2!4)! >#!$>#J)!%0'! >#!B8B)!1#>)=&!$%=&!6)'')!$&%$&3('(I! >P%Ei)'!T#0J)!&)01)&&#!6)'')!1#>)=&!

X3!>#!$&%$&3('(!4P=0)!6)>>=>)!#=!B%302!43QQW&)!4)!6)>>)2!4)2!#='&)2I!>P%Ei)'!T#0J)!&)01)&&#!2#>%0!>)2!6#2I!O=>>I!O%'G30JI!%=!=0)!1#>)=&!#&E3'&#3&)*!

]#02!>)!6#2!4)!>#!$&%$&3('(!/%>%&!4)!>P%Ei)'!70')&3%&I!>#!1#>)=&!&)01%-()!$%=&!=0)!$>#J)!G('(&%JW0)!)2'! >#!1#>)=&!+.555?+N!jH[[[[[[k!jE>#06k*!K='&)B)0'!43'I!23! '%=')2! >)2!6)>>=>)2!4)! >#!$>#J)!K;vK++!%0'!>#!B8B)!6%=>)=&!4)!Q%04I!#>%&2!>#!$>#J)!/+v/U!#=&#!#=223!>#!B8B)!6%=>)=&I!230%0I!>#!$>#J)!/+v/U!#=&#!=0!Q%04!E>#06*!7>!)2'!'%=i%=&2!#22)e!6%B$>)\)!4)!2#1%3&!6)!D=)!&)01%3)0'!>)2!$&%$&3('(2!&)J&%=$()2I!%0!(13')!4%06!J(0(&#>)B)0'!4)!$&%6(4)&!6%BB)!4#02!B%0!)\)B$>)!$&(6(4)0'*!L0!#QQ)6'#'3%0!3>!0)!$)='!-! #1%3&! 4)! $&%E>WB)2I! 4=! Q#3'! D=)! >#!B%43Q36#'3%0! 4)! >#! 1#>)=&! 4)! >#! $&%$&3('(! 4)! >#! $>#J)! 304=3'! >#!B%43Q36#'3%0! 4)! >#! $&%$&3('(! $%=&! 6G#D=)! 6)>>=>)! $%=&! =0)! 1#>)=&! 34)0'3D=)*! L0! >)6'=&)I! 3>! )2'!30432$)02#E>)! 4)! 2#1%3&! D=P)>>)! 1#>)=&! 2)&#! &)01%-()! $%=&! >)2! $>#J)2! G('(&%JW0)2*! ]#02! >P('=4)! 4)2!$&%$&3('(2I!i)!1%=2!0%')&#32!6)'')!1#>)=&!2%=2!>#!Q%&B)!v!

V>#J)!G('(&%JW0)! !:#>)=&!O%=2! #>>%02! 1%3&!B#30')0#0'! >)2! $&%$&3('(2! )'! B('G%4)2! 4)! >l%Ei)'! T#0J)! D=3! 2%0'! 4%06! #='#0'!

6)>>)2!4l=0)!6)>>=>)!D=)!4l=0)!6%>>)6'3%0!4)!6)>>=>)2*!K!6G#D=)!Q%32!D=)!il)B$>%3)&#32!>)!')&B)!>#!$>#J)!4)!6)>>=>)2I!6)>#!2l#$$>3D=)&#!#=223!p!=0)!6)>>=>)!=03D=)I!2#=Q!2$(63Q36#'3%0!$#&'36=>3W&)*!

Valeurs & Formules O%=2!#>>%02!6%BB)06)&!$#&!'&#3')&!4)2!$&%$&3('(2!#22)e!$#&'36=>3W&)2!4)!>P%Ei)'!T#0J)!D=3!JW&)0'!>)!

6%0')0=!4)!>#!6)>>=>)*!V%=&!L\6)>I!>)!6%0')0=!4)2!6)>>=>)2!0P)2'!$#2!'-$(!p!$&3%&3*!L\6)>!30')&$&W')!>)!6%0')0=!4)2!6)>>=>)2!

)'!$)='!2)>%0!>)2!6#2I!B)''&)!>#!4%00()!2%=2!=0)!#='&)!Q%&B)!%=!#$$>3D=)&!=0!Q%&B#'#J)!6)!D=3!Q#3'!D=)!>P#$$#&)06)!4=!6%0')0=!$)='!43QQ(&)&!4=!6%0')0=!&()>*!

O%')e! D=)! 4#02! L\6)>I! >)! 6%0')0=! 4)! >#! 6)>>=>)! ')>! D=P3>! )2'! )0'&(! $#&! >P='3>32#')=&! 0P)\32')! $#2!Q%&6(B)0'!4#02!=0)!4)2!$&%$&3('(2!4)!>#!6)>>=>)*!!

/%BB)!L\6)>!)2'!=0!'#E>)=&I!3>!JW&)!#=223!4)2!Q%&B=>)2*!]#02!6)!6#2I!>)!6%0')0=!&()>!4)!>#!6)>>=>)!)2'!>#!Q%&B=>)*!/)$)04#0'I!>)2!B8B)2!&WJ>)2!2P#$$>3D=)0'*!/P)2'opo43&)!D=)!>)!&(2=>'#'!4)!>#!Q%&B=>)!)2'!6#>6=>(I!)'!D=)!6)!6%0')0=!$)='!8'&)!Q%&B#'(*!/)!B(6#032B)!D=3!$#&#f'!#22)e!(134)0'!>%&2D=P%0!>P='3>32)!43&)6')B)0'!)2'!#22)e!6%B$>)\)!#=!031)#=!4)2!$&%$&3('(2!4)!>P%Ei)'!T#0J)*!

/)>=3!$%22W4)!4%06!$>=23)=&2!$&%$&3('(2!D=3!)\$%2)0'!>)2!43QQ(&)0')2!&)$&(2)0'#'3%02!4=!6%0')0=*!/)>>)2o63!2)!&)J&%=$)0'!J>%E#>)B)0'!)0!4)=\!Q#B3>>)2I!6)>>)2!D=3!)\$%2)0'!>)2!Q%&B=>)2!v!

[%&B=>#! [%&B=>#T+/+! [%&B=>#"%6#>! [%&B=>#!T+/+"%6#>!

! +,N

Page 146: Cours VBA débutants.pdf

/)>>)2!D=3!)\$%2)0'!>)2!1#>)=&2*!! :#>=)! :#>=)?! <)\'!

/)'')! 431323%0! 0P#! 4)! 2)02! D=)! >%&2D=)! >#! 6)>>=>)! 6%0'3)0'! =0)! Q%&B=>)I! >%&2D=P)>>)! 6%0'3)0'! =0)!1#>)=&I!>)2!$&%$&3('(2!4)!Q%&B=>)!&)01%3)0'!>#!1#>)=&*!"%&2D=P=0)!6)>>=>)!)2'!134)I!)>>)!&)01%3)!Empty*!

V&)0%02!=0!)\)B$>)!23B$>)I!>#!6)>>=>)!K+!6%0'3)0'!>#!1#>)=&!+,I!>#!6)>>=>)!K?!6%0'3)0'!>#!Q%&B=>)!R?�K+w+@I!>#!6)>>=>)!KU!6%0'3)0'!>#!Q%&B=>)!R"%JjK+uK?k!

X3!%0!>3'!p!>P#34)!4P=0!6%4)!>)2!$&%$&3('(2!$&(6(4)0')2I!%0!%E'3)0'!v!Debug.Print Range("A1").Formula '14 Debug.Print Range("A1").FormulaLocal '14 Debug.Print Range("A1").FormulaR1C1 '14 Debug.Print Range("A1").FormulaR1C1Local '14 Debug.Print Range("A1").Value '14 Debug.Print Range("A1").Value2 '14 Debug.Print Range("A1").Text '14 Debug.Print Range("A2").Formula '=2*A1/10 Debug.Print Range("A2").FormulaLocal '=2*A1/10 Debug.Print Range("A2").FormulaR1C1 '=2*R[-1]C/10 Debug.Print Range("A2").FormulaR1C1Local '=2*L(-1)C/10 Debug.Print Range("A2").Value ' 2,8 Debug.Print Range("A2").Value2 ' 2,8 Debug.Print Range("A2").Text '2,8 Debug.Print Range("A3").Formula '=LOG(A1,A2) Debug.Print Range("A3").FormulaLocal '=LOG(A1;A2) Debug.Print Range("A3").FormulaR1C1 '=LOG(R[-2]C,R[-1]C) Debug.Print Range("A3").FormulaR1C1Local '=LOG(L(-2)C;L(-1)C) Debug.Print Range("A3").Value ' 2,56313865645652 Debug.Print Range("A3").Value2 '2,56313865645652 Debug.Print Range("A3").Text '2,56313866

<%='!6)>#!)2'!#22)e!6%G(&)0'*!:%=2!0%')&)e!6)$)04#0'!D=)!4#02!>)!6#2!4)!>#!6)>>=>)!KU!&)01%3)!=0)!1#>)=&!43QQ(&)0')!4#02!Value! )'!4#02!Text*!/)>#!13)0'!4=! Q#3'!D=)! >#!1#>)=&! &)01%-()!$#&! >#!$&%$&3('(!Text!)2'!>)!6%0')0=!tel qu'il est affiché*!

V&)0%02! B#30')0#0'! =0! 4)=\3WB)! )\)B$>)*! /+! 6%0'3)0'! >#! 1#>)=&! U@w+@w?@@?I! /?! 6%0'3)0'! >#!Q%&B=>)!R<LCVXj+@u?5u,?k!)'!/U!>#!Q%&B=>)!R^/^+t^/^?!

g0!6%4)!4)!>)6'=&)!34)0'3D=)!#=!$&(6(4)0'!4%00)&#3'!v!Debug.Print Range("C1").Formula '37559 Debug.Print Range("C1").FormulaLocal '37559 Debug.Print Range("C1").FormulaR1C1 '37559 Debug.Print Range("C1").FormulaR1C1Local '37559 Debug.Print Range("C1").Value '30-oct-2002 Debug.Print Range("C1").Value2 '37559 Debug.Print Range("C1").Text '30-10-2002 Debug.Print Range("C2").Formula '=TIME(10,27,42) Debug.Print Range("C2").FormulaLocal '=TEMPS(10;27;42) Debug.Print Range("C2").FormulaR1C1 '=TIME(10,27,42) Debug.Print Range("C2").FormulaR1C1Local '=TEMPS(10;27;42) Debug.Print Range("C2").Value ' 0,435902777777778 Debug.Print Range("C2").Value2 ' 0,435902777777778 Debug.Print Range("C2").Text '10:27 AM Debug.Print Range("C3").Formula '=$C$1+$C$2 Debug.Print Range("C3").FormulaLocal '=$C$1+$C$2 Debug.Print Range("C3").FormulaR1C1 '=R1C3+R2C3 Debug.Print Range("C3").FormulaR1C1Local '=L1C3+L2C3 Debug.Print Range("C3").Value '30-oct-2002 10:27:42 Debug.Print Range("C3").Value2 '37559,4359027778 Debug.Print Range("C3").Text '30-10-2002 10:27

! +,.

Page 147: Cours VBA débutants.pdf

]('#3>>%02!)02)BE>)!6)2!&(2=>'#'2!6#&!3>2!)\$%2)0'!#22)e!E3)0!>)!Q%06'3%00)B)0'!4)!6)2!$&%$&3('(2*!O%=2!#1%02!)0'&(!>#!6G#f0)!U@w+@w?@@?*!/%BB)!0%=2!>P#1%02!1=!$&(6(4)BB)0'I!L\6)>!JW&)!>)2!4#')2!2%=2!>#!Q%&B)!4P=0!0%BE&)!)0'3)&*!/%BB)!3>!#!&)6%00=!=0)!4#')!4#02!>#!1#>)=&!2#323)I! 3>!#!%$(&(!=0)!6%01)&23%0! 4)! 1#>)=&! $%=&! '&#02Q%&B)&! >#! 4#')! 2#323)! )0! )0'3)&*! O%=2! >P#1%02! 1=! )0! $&(#BE=>)I! >)2!$&%$&3('(2!&)01%-#0'!>)2!Q%&B=>)2!&)01%3)0'!=0)!1#>)=&!>%&2D=)!>#!6)>>=>)!0)!6%0'3)0'!$#2!4)!Q%&B=>)*!"#!1#>)=&!&()>>)!4)!>#!6)>>=>)!)2'!>P)0'3)&!U5NN;!j0%BE&)!4)!i%=&!)0'&)!>)!U@w+@w?@@?!)'!>)!@+w@+w+;@@kI!'%=')2! >)2! $&%$&3('(2! Q%&B=>)2! &)01%3)0'! 6)'! )0'3)&*! "#! $&%$&3('(! :#>=)! &)01%3)! '%=i%=&2! >#! 1#>)=&!Q%&B#'()*!L\6)>!30')&$&W')!>P)0'3)&!6%BB)!=0)!4#')I!>=3!#$$>3D=)!>)!Q%&B#'#J)!$#&!4(Q#='I!4#02!6)!6#2!>)!Q%&B#'!4)!4#')!6%=&')!')>!D=P3>!)2'!4(Q303!4#02!>)!$#00)#=!4)!6%0Q3J=&#'3%0!4=!2-2'WB)!)'!&)01%3)!6)'')!1#>)=&!4#02!>#!$&%$&3('(!:#>=)*!

>#!6)>>=>)!0%0! Q%&B#'(*!]#02!6)!6#2! 3>! 2P#J3'!4%06!4 4)!>#!6)>>=>)!')>!D=P3>!)2'!#QQ36G(*!F0!$%=&&#3'!2P#'')04&)! p! 6)! D=P3>! &)01%3)! #>%&2! >#! 6G#f0)! 2#323)I! B#32! ')>! 0P)2'! $#2! >)! 6#2*! L0! )QQ)'I! L\6)>! ='3>32)!'%=i%=&2!>)2!2($#&#')=&2!4)!4#')2!4(Q303'!$#&!>)!2-2'WB)!2#=Q!23!1%=2!>=3!#1)e!3043D=(!)\$>363')B)0'!=0!#='&)! 2($#&#')=&I! 2%3'! )0!B%43Q3#0'! >)! Q%&B#'! 4)! >#! 6)>>=>)I! 2%3'! )0!B%43Q3#0'! >)2! 2($#&#')=&2! 4#02! >#!6%0Q3J=&#'3%0! 4PL\6)>*! ]#02! 6)! 6#2I! 1%=2! 0%')&)e! D=)! >#! 1#>)=&! D=)! 0%=2! #1%02! 2#323)! 0P)\32')! $>=2!jB8B)!2P3>!)2'!#22)e!23B$>)!4)!>#!&)Q%&B)&k*!

V%=&! >#! 6)>>=>)! /?I! 1%=2! &)B#&D=)&)e! i=2')! D=)! >)2! Q%&B=>)2! >%6#>)2! ='3>32)0'! 4)2! 0%B2! 4)!Q%06'3%02!>%6#>32()2!j4#02!0%'&)!6#2!)0![&#0q#32k!)'!>)!2($#&#')=&!4P#&J=B)0'!>%6#>32(!j>)!$%30'!13&J=>)k!)'!>)2!$&%$&3('(2!0%0!>%6#>)2!='3>32)0'!>)2!0%B2!4)!Q%06'3%02!)'!>)!2($#&#')=&!4P#&J=B)0'!KB(&36#30*!

h)! 13)02! 4)! 43&)! $&(6(4)BB)0'! D=)! >#! $&%$&3('(!:#>=)! &)01%3)! '%=i%=&2! =0! 6%0')0=! Q%&B#'(I! )'!1%=2!1%-)e!E3)0!D=)! >#!$&%$&3('(!:#>=)!4)! >#! 6)>>=>)!/?! &)01%3)!=0! ')B$2!0%0! Q%&B#'(*!OP#>>)e!$#2!$%=&! #='#0'! 6&%3&)! D=)! i)! 4(&#3>>)! j)06%&)! D=)Zk! B#32! 4#02! 6)! 6#2I! 0%=2! #1%02! ='3>32(! >#! Q%06'3%0!<)B$2! D=3! '&#02Q%&B)! =0! ')B$2! )0! 2#! &)$&(2)0'#'3%0! 0=B(&3D=)*! L\6)>! 6%0234(&#0'! D=)! 0%=2! 0)!2%BB)2!$#2!2=QQ32#BB)0'!E%=&&(2!$%=&!>=3!4)B#04)&!4)!&)Q%&B#')&!=0)!Q%06'3%0!D=3!2)&'!i=2')B)0'!p!0)!$#2!Q%&B#')&!2%=2!>#!Q%&B)!4P=0!')B$2I!3>!&)01%3)!E3)0!4#02!>#!$&%$&3('(!:#>=)!>#!1#>)=&!&)01%-()!$#&! >#! Q%06'3%0I! 4#02! 6)! 6#2! @I,UN;@?555555559*! "#! $&%$&3('(! :#>=)?! D=3! )>>)! 0)! Q%&B#')! i#B#32!&)01%3)!>#!B8B)!1#>)=&*!L0Q30!6%BB)!$&(1=I!>#!$&%$&3('(!<)\'!&)01%3)!>#!1#>)=&!#QQ36G()*!

X3!1%=2!BP#1)e!2=313!i=2D=)!>pI!>P30')&$&('#'3%0!4)!>#!6)>>=>)!/U!0)!$&(2)0')!&3)0!4)!0%=1)#=*!:%=2!0%')&)e!i=2')!D=)!>#!0%'#'3%0!#B(&36#30)!T+/+!)2'!2%=2!Q%&B)!"+/+!4#02!>)2!1)&23%02!>%6#>32()2!4)!>#!Q%&B=>)*!

V&)0)e! 4)=\! #2$3&30)2I! =0)! $)'3')! $#=2)I! $>=2! D=P=0! 4)&03)&! $)'3'! 6%>! )'! )02=3')! 6P)2'! '&#0D=3>>)*!:%=2!8')2!$&8'!|!K>%&2!6%0'30=%02*!

K!>P)\6)$'3%0!4)!>#!$&%$&3('(!<)\'I!'%=')2!6)2!$&%$&3('(2!D=)!0%=2!1)0%02!4)!1%3&!$&(2)0')0'!4%06!=0)! #='&)! $#&'36=>#&3'(I! 6)! 2%0'! 4)2! $&%$&3('(2! '#E>)#=*! /%BB)! 0%=2! >P#1%02! 4(ip! 43'I! =0)! $&%$&3('(!'#E>)#=!&)01%3)!%=!4(Q303'!=0!'#E>)#=!4)!1#>)=&!D=#04!>P%Ei)'!T#0J)!6%0'3)0'!$>=23)=&2!6)>>=>)2*!

K='&)B)0'!43'I!6)2!$&%$&3('(2!&)01%3)0'!%=!4(Q30322)0'!=0!:#&3#0'!6%0')0#0'!=0!'#E>)#=!4)!:#&3#0'!&)$&(2)0'#0'!>)!6%0')0=!4)!6G#D=)!6)>>=>)!2%=2!Q%&B)!4)!1#>)=&2!)'!4)!Q%&B=>)2*!]#02!'%=2!>)2!6#2I!3>!2P#J3'!4P=0!'#E>)#=!p!4)=\!43B)023%02!%x!>#!$&)B3W&)!43B)023%0!&)$&(2)0')!>)2!>3J0)2!)'!>#!2)6%04)!>)2!6%>%00)2*!"#!>3B3')!E#22)!4)!6G#D=)!43B)023%0!1#='!'%=i%=&2!+*!

]#02!>)!6#2!23B$>)!4)2!$>#J)2!6%0'30=)2I!>)!'#E>)#=!1#!&)$&(2)0')&!4%06!>#!$>#J)!2%=2!>#!Q%&B)!v!j+!<%!O%BE&)!4)!>3J0)2I!+!<%!O%BE&)!4)!6%>%00)2k!

"#!$&%$&3('(!:#>=)?! &)01%3)! '%=i%=&2! >)!6%0')0=!4)!)!>P)0'3)&!U5NN;*!<)\'!&)01%3)!'%=i%=&2!>)!6%0')0=!

! +,5

Page 148: Cours VBA débutants.pdf

V#&'%02!4P=0!Q36G3)&!)\)B$>)!D=3!&)22)BE>)!p!v!

!O%=2! #>>%02! '&#1#3>>)&! 2=&! >#! $>#J)! "U/Uv"U@/5! j%=! /UvbU@! 23! 1%=2! $&(Q(&)e! >)2! 0%'#'3%02!

2'#04#&42k*![%&'!4)!6)!D=)!0%=2!1)0%02!4)!43&)I!0%=2!$%=&&3%02!(6&3&)!v!

Sub Valeurs() Dim MaPlage As Range, TabValeur As Variant Dim cmptLigne As Long, NbLigne As Long, NbCol As Long Set MaPlage = ThisWorkbook.Worksheets("tableau").Range("C3:G30") TabValeur = MaPlage.Value NbLigne = UBound(TabValeur, 1) NbCol = UBound(TabValeur, 2) MsgBox NbLigne & " lignes" & vbNewLine & NbCol & " colonnes" For cmptLigne = 1 To NbLigne TabValeur(cmptLigne, 1) = TabValeur(cmptLigne, 2) + 1 Next ThisWorkbook.Worksheets("tableau").Cells(1, 10).Resize(NbLigne, NbCol).Value = TabValeur End Sub

]#02! 6)! 6%4)I! i)! &(6=$W&)! >#! $&%$&3('(! :#>=)! 4)! >P%Ei)'! T#0J)! C#V>#J)! 4#02! =0)! 1#&3#E>)!<#E:#>)=&!4)!'-$)!:#&3#0'*!/%BB)!C#V>#J)!6%0'3)0'!$>=23)=&2!6)>>=>)2!)'!D=)!:#>=)!)2'!=0)!$&%$&3('(!'#E>)#=I!<#E:#>)=&!)2'!=0! '#E>)#=*!h)!$)=\!4%06!&(6=$(&)&! >)!0%BE&)!4)! >3J0)2!)'!4)!6%>%00)2!4)!6)!'#E>)#=!$%=&!1(Q3Q3)&!D=P3>!Q#3'!>#!B8B)!'#3>>)!D=)!B#!$>#J)*!!

]#02!B%0!'#E>)#=I!i)!1#32!$#&6%=&3&!>P)02)BE>)!4)2!>3J0)2!4)!>#!$&)B3W&)!6%>%00)!)'!>)=&!#QQ)6')&!6%BB)!1#>)=&!>#!1#>)=&!4)!>#!6#2)!23'=()!2=&!>#!B8B)!>3J0)!4)!>#!6%>%00)!?!t!+*!

h)!1#32!)02=3')!4(Q303&!=0)!$>#J)!$#&'#0'!4)!7+!Q#32#0'!>#!B8B)!'#3>>)!D=)!B%0!'#E>)#=I!)'!#QQ)6')&!p!2#!$&%$&3('(!:#>=)!>#!1#&3#E>)!<#E:#>)=&*!

! +,9

Page 149: Cours VBA débutants.pdf

:%=2!0%')&)e!D=)!>)2!6)>>=>)2!4)!>#!0%=1)>>)!$>#J)!6%0'3)00)0'!E3)0!>)2!1#>)=&2!4P%&3J30)!2#=Q!$%=&!6)>>)!4)!>#!$&)B3W&)!6%>%00)!D=3!%0'!('(!B%43Q3()2*!

O%')e!#=223!D=)!23!i)!0P#1#32!$#2!4)!B%43Q36#'3%0!p!Q#3&)I!i)!$%=&&#32!#QQ)6')&!43&)6')B)0'!')>!D=)!v!Sub Valeurs() Dim MaPlage As Range, TabValeur As Variant Dim NbLigne As Long, NbCol As Long Set MaPlage = ThisWorkbook.Worksheets("tableau").Range("C3:G30") TabValeur = MaPlage.Value NbLigne = UBound(MaPlage.Value, 1) NbCol = UBound(MaPlage.Value, 2) MsgBox NbLigne & " lignes" & vbNewLine & NbCol & " colonnes" ThisWorkbook.Worksheets("tableau").Cells(1, 10).Resize(NbLigne, NbCol).Value = MaPlage.Value End Sub

C#32!&)1)0%02!2=&!>P)\)B$>)!$&(6(4)0'*!K>%&2!D=)!iP#3!B%43Q3(!>#!1#>)=&!4)2!6)>>=>)2!4)!>#!$&)B3W&)!6%>%00)!4)!>#!$>#J)I!>)2!1#>)=&2!4)!B%-)00)!0P%0'!$#2!6G#0J()2*!X3!0%=2!#>>%02!1%3&!=0)!6)>>=>)!4)!>#!0%=1)>>)!6%>%00)!B%-)00)I!0%=2!6%02'#'%02!D=)!>#!Q%&B=>)!#!432$#&=!)'!D=P)>>)!0)!6%0'3)0'!$>=2!D=)!>#!1#>)=&!6)!D=3!0P)2'!$#2!2=&$&)0#0'!$=32D=)!0%=2!#1%02!Q#3'!=0)!&(6=$(&#'3%0!4)!>#!$&%$&3('(!:#>=)*!

7B#J30%02!=0!6%4)!23B3>#3&)!)0!'&#1#3>>#0'!2=&!>)2!Q%&B=>)2*!X%3'!>)!6%4)!v!Sub Formule() Dim MaPlage As Range, TabFormule As Variant Dim cmptLigne As Long, NbLigne As Long, NbCol As Long Set MaPlage = ThisWorkbook.Worksheets("tableau").Range("C3:G30") TabFormule = MaPlage.FormulaLocal NbLigne = UBound(TabFormule, 1) NbCol = UBound(TabFormule, 2) MsgBox NbLigne & " lignes" & vbNewLine & NbCol & " colonnes"

mptLigne = 1 To NbLign

Ne

FáLOOLj" %00)"j?k/jo++kv"j?k/jo9kk ! 2P)2

>P#QQ)6'#'3%0!p!=0)!0%=1)>>)!$>#J)!$%=&!J#&4)&!2)2!#&J=B)0'2!4)!>#!$>#J)!4P%&3J30)*!!7>!6%013)0'!4%06!4)!Q#3&)!#'')0'3%0I!23!>P#QQ)6'#'3%0!4P=0!'#E>)#=!4)!1#>)=&2!(D=31#='!E3)0!p!Q#3&)!=0!

6%>>#J)! 2$(63#>! 4)2! 1#>)=&2I! >#! B#03$=>#'3%0! 4P=0! '#E>)#=! 4)! Q%&B=>)2! 0P(D=31#='! $#2! p! =0! 6%>>#J)!2$(63#>!4)2!Q%&B=>)2*!!

O%=2!&)'&%=1)&%02!6)2!6%06)$'2!4#02!>#!2=3')!4)!6)!4%6=B)0'*!

For c e TabFormule(cmptLigne, 1) = CStr(Val(TabFormule(cmptLigne, 2)) + 1) xt

ThisWorkbook.Worksheets("tableau").Cells(1, 10).Resize(NbLigne, NbCol).FormulaLocal = TabFormule End Sub

O%')e! 4(ip! D=)! 0%=2! 4)1%02! $&%6(4)&! p! 4)2! 6%01)&23%02! 4)! '-$)2! $=32D=)! >)! '#E>)#=! &(6=$(&(!6%0'3)0'!4)2!6G#f0)2!)'!0%0!4)2!0%BE&)2*!/)$)04#0'!B8B)!4#02!6)!6#2I!>#!B%-)00)!&)2')!34)0'3D=)!p!6)>>)!4)!>#!$>#J)!2%=&6)*!X3!0%=2!#>>%02!1%3&!=0)!6)>>=>)!4)!>#!6%>%00)!B%-)00)I!0%=2!1%-%02!D=)! >#!Q%&B=>)!4P%&3J30)I! RC /jo,kv"/jo+kk!#$$#&#f'!4#02! >#!0%=1)>>)!6%> !B%-)00)!2%=2! >#!Q%&B)! RCFáLOOLj *! /P)2'opo43&)! D=)! >#! Q%&B=>) '! B%43Q3()! >%&2! 4)!

! +,;

Page 150: Cours VBA débutants.pdf

Propriétés de l’objet Range renvoyant un objet Range

Areas (Areas) "#! $&%$&3('(!K&)#2! &)01%3)! =0)! 6%>>)6'3%0!K&)#2! D=3! )2'! =0)! 6%>>)6'3%0! 4l%Ei)'2! T#0J)! >%&2D=)!

>l%Ei)'! )2'! =0)!$>#J)!4326%0'30=)*!g0)!$>#J)!4326%0'30=)! 6%0'3)0'! 4)2! (>(B)0'2!D=3! 0)! 2%0'! $#2! '%=2!6%0'3J=2*!V&)0%02!=0!)\)B$>)!D=3!2%=2!Q%&B)!4)!2(>)6'3%0!4%00)&#3'!v!

!" )!6%&&)2$%04#0'!$%=&&#3'!8'&)!%E')0=!#1)6!=0!6%4)!')>!D=)!v!

Dim M Range l%Ei)'!T#0JaPlage As

'construction de l'objet range discontinu With ThisWorkbook.Worksheets("CSF") Set MaPlage = .Range(.Cells(2, 1), .Cells(25, 2)) Set MaPlage = Application.Union(MaPlage, .Cells(2, 4).Resize(24)) Set MaPlage = Application.Union(MaPlage, .Cells(2, 7).Resize(24)) End With MaPlage.Select

/%BB)! i)! 1%=2! >l#3! 43'! #=! 4(E='! 4)! 6)! 6G#$3'&)I! =0! %Ei)'! T#0J)! 6%0234W&)! '%=')2! >)2! 6)>>=>)2!6%BB)!=0)!6)>>=>)!23!il#J32!2=&!>=3*!h)!$%=&&#32!4%06!B%43Q3)&!>#!6%=>)=&!4)!>#!$%>36)!#1)6!>)!6%4)!MaPlage.Font.Color = vbRed

! +N@

Page 151: Cours VBA débutants.pdf

/)!D=3!4%00)&#3'!v!

!7B#J30%02! B#30')0#0'! D=)! 0%=2! 2%=G#3'3%02! &(6=$(&)&! >)! 0%BE&)! 4)! 6)>>=>)2! )'! >)! 0%BE&)! 4)!

6%>%00)2!4)!>l%Ei)'!T#0J)*!Sub TestArea() Dim MaPlage As Range 'construction de l'objet range discontinu With ThisWorkbook.Worksheets("CSF") Set MaPlage = .Range(.Cells(2, 1), .Cells(25, 2)) Set MaPlage = Application.Union(MaPlage, .Cells(2, 4).Resize(24)) Set MaPlage = Application.Union(MaPlage, .Cells(2, 7).Resize(24)) End With MsgBox MaPlage.Cells.Count '96 MsgBox MaPlage.Columns.Count '2 ???? End Sub

X3! >)! 6%B$')!4)! 6)>>=>)2! )2'! i=2')I! >)! 6%B$')!4)!6%>%00)2I! >=3I! 0)! >l)2'! $#2*!])! Q#3'I! >#! $&%$&3('(!/%>=B02! 0)! 2#3'! $#2! &($%04&)! 2=&! =0)! $>#J)! 4326%0'30=)! )'! &)01%3)! 4#02! 6)'! )\)B$>)! >)! 0%BE&)! 4)!6%>%00)2!de la première plage continu! 6%0')0=)!4#02! >#!$>#J)!4326%0'30=)*!"#!0%'3%0!4)!$&)B3W&)!$>#J)!2l)0')04!4#02!>)!2)02!4)2!&(Q(&)06)2!L\6)>I!6P)2'opo43&)!>#!$>=2!p!J#=6G)!)'w%=!>#!$>=2!G#=')*!

V%=&!#1%3&!>)!E%0!6%B$')!4)!6%>%00)2I!3>!Q#=4&#3'!(6&3&)!=0!6%4)!6%BB)!v! Dim cmptCol As Integer, tmpPlage As Range If MaPlage.Areas.Count > 1 Then For Each tmpPlage In MaPlage.Areas cmptCol = cmptCol + tmpPlage.Columns.Count Next Else cmptCol = MaPlage.Columns.Count End If MsgBox cmptCol

! +N+

Page 152: Cours VBA débutants.pdf

O%')e! D=)! 6)'')! $&%$&3('(! )2'! 30'(&)22#0')! 2=&! >)! Q#3'! D=l=0)! 23B$>)! (1#>=#'3%0! 4)! 2#! $&%$&3('(!/%=0'!$)&B)'!4)!2#1%3&!23!>#!$>#J)!&)$&(2)0'()!$#&!>l%Ei)'!T#0J)!)2'!6%0'30=)!%=!0%0*!

Cells (Range) LG!%=3I!6l)2'!>)!6)&6>)!B#=43'*!g0!%Ei)'!T#0J)!)\$%2)!=0)!$&%$&3('(!/)>>2!D=3!&)01%3)!>#!6%>>)6'3%0!

4)2!6)>>=>)2!2%=2!>#!Q%&B)!4l=0!%Ei)'!T#0J)!D=3!&)01%3)!=0)!6%>>)6'3%0!/)>>2!j)'!#3023!4)!2=3')k*!K!$#&'!1%=2!)BE&%=3>>)&!%0!='3>32)!6)'')!$&%$&3('(!)\$>363')B)0'!2%3'!$%=&!4(23J0)&!=0)!6)>>=>)!4)!>#!

$>#J)I!2%3'!$%=&!(0=B(&)&!>)2!6)>>=>)2!4)!>#!$>#J)*!V%=&!>l(0=B(&#'3%0!$#2!4)!$&%E>WB)*!!

Sub EnumCell() Dim MaCell As Range, Somme As Double For Each MaCell In ThisWorkbook.Worksheets("CSF").Range("C3:C30").Cells If IsNumeric(MaCell.Value) Then Somme = Somme + MaCell.Value Next MaCell MsgBox Somme End Sub

V%=&!>#!4(23J0#'3%0I!6l)2'!4(ip!#='&)B)0'!$(&3>>)=\*!T#32%00%02!2=&!>#!$>#J)!rK+!v!LNr*!")2!6)>>=>)2!4)!6)'')!$>#J)!$)=1)0'!8'&)!4(23J0()2!2%3'!$#&!>)=&!$%23'3%0!#E2%>=)!4#02!>#!$>#J)I!2%3'!

$#&! >)=&!$%23'3%0!r>30(#3&)rI!6P)2'opo43&)!6%BB)!23! >#!$>#J)!('#3'! 2=&!=0)!6%>%00)!%=!2=&!=0)! >3J0)!)0!>32#0'!>)2!6)>>=>)2!4)!>#!J#=6G)!1)&2!>#!4&%3')!$=32!4)!E#2!)0!G#='*!

!h=2D=)!>p!&3)0!4)!E3)0!2%&63)&I!%0!$)='!(6&3&)!v!

Sub Designation() Dim Maplage As Range Set Maplage = ThisWorkbook.Worksheets("Feuil1").Range("A1:E5") 'désignation absolu Debug.Print Maplage.Cells(3, 2).Address(False, False) 'B3 'désignation linéaire Debug.Print Maplage.Cells(13).Address(False, False) 'C3 End Sub

C#>G)=&)=2)B)0'!%0!$)='!#=223!(6&3&)!Sub Designation() Dim Maplage As Range Set Maplage = ThisWorkbook.Worksheets("Feuil1").Range("A1:E5") 'désignation absolu Debug.Print Maplage.Cells(6, 2).Address(False, False) 'B6 'désignation linéaire Debug.Print Maplage.Cells(29).Address(False, False) 'D6 End Sub

! +N?

Page 153: Cours VBA débutants.pdf

L'!#'')304&)!#3023!4)2!6)>>=>)2!D=3!0)!2%0'!$#2!4#02!>#!$>#J)*!])!$>=2!3>!Q#='!Q#3&)!#'')0'3%0!6#&!>#!4(23J0#'3%0!43')!#E2%>=)!)2'!)0!Q#3'!&)>#'31)!p!>#!$>#J)I!4%06!%0!

#=&#3'!v!Sub Designation() Dim Maplage As Range Set Maplage = ThisWorkbook.Worksheets("Feuil1").Range("B2:F6") Debug.Print Maplage.Cells(6, 2).Address(False, False) 'C7 Debug.Print Maplage.Cells(0, 0).Address(False, False) 'A1 End Sub

]%06!B(Q3)e!1%=2!4)!>#!4(23J0#'3%0!)0!$#&'#0'!4P=0)!$>#J)!)'!)22#-)e!$>='m'!4)!'&#1#3>>)&!2=&!4)2!&(Q(&)06)2!Q3\)2*!

Columns & Rows X3!>#!B#03$=>#'3%0!4)!6)2!$&%$&3('(2!)0!$#&'#0'!4)!>#!Q)=3>>)!)2'!#22)e!'&313#>)I!)>>)!$)='!8'&)!=0!$)=!

$>=2!$3(J)=2)!>%&2D=P%0!'&#1#3>>)!2=&!4)2!%Ei)'2!T#0J)*!V%=&! >)2!$>#J)2!6%0'30=)2I! 6)2!$&%$&3('(2! &)01%3)0'!=0!%Ei)'!T#0J)!6%0')0#0'! '%=')2! >)2! 6)>>=>)2!

#$$#&')0#0'!p!>#!6%>%00)!%=!p!>#!>3J0)!4)!>P%Ei)'!T#0J)!4P%x!)>>)2!2%0'!#$$)>()2*!g0!$)'3'!)\)B$>)!)2'!$>=2!23B$>)!p!6%B$&)04&)*!Sub TestColRow() Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("tableau").Range("C3:G30") Debug.Print MaPlage.Columns(2).Address(False, False, xlA1) 'D3:D30 Debug.Print MaPlage.Rows(2).Address(False, False, xlA1) 'C4:G4 End Sub

K='&)B)0'!43'I!6P)2'!=0!%Ei)'!T#0J)!&)$&(2)0'#0'!>P30')&2)6'3%0!)0'&)!>#!>3J0)!%=!>#!6%>%00)!)'!>P%Ei)'!T#0J)*!K'')0'3%0I!23!>#!6%>%00)!%=!>#!>3J0)!0P#$$#&'3)00)0'!$#2!p!>P%Ei)'!T#0J)I!6P)2'!=0)!$>#J)!4(6#>()!D=3! 1#! 8'&)! &)01%-()*! /)>>)o63! 2)&#! #>%&2! >P30')&2)6'3%0! )0'&)! $#&! )\)B$>)! >#! >3J0)! 2$(63Q3()! )'! >)2!6%>%00)2!4)!>P%Ei)'!T#0J)!#$$)>#0'*!V#&!)\)B$>)!v! Debug.Print MaPlage.Rows(31).Address(False, False, xlA1) 'C33:G33

"%&2D=P%0!2%=G#3')!%E')03&!=0)!$>#J)!4)!6%>%00)2!%=!4)! >3J0)2!6%0'30=)2I!%0!$#22)!=0!#&J=B)0'!2%=2! Q%&B)!4)! ')\')!$&(632#0'! >)2!6%>%00)2! j)0! >)''&)2k!%=! >)2! >3J0)2! j)0!6G3QQ&)2k*!K'')0'3%0I! 3>! 2P#J3'!4P=0)! &(Q(&)06)! &)>#'31)I! 6P)2'opo43&)! D=)! $%=&! =0! %Ei)'! T#0J)! r/UvbU@rI! >P#$$)>! 4)! >#! $&%$&3('(!/%>=B02jrSrk!&)01%3)!r]Uv]U@r*!!

/%BB)!6)2!$&%$&3('(2!&)01%3)0'!=0!%Ei)'!T#0J)I!3>!)2'!$%223E>)!4)!>)2!)06G#f0)&!v! Debug.Print MaPlage.Columns("A:C").Rows("2:8").Address(False, False, xlA1) 'C4:E10

! +NU

Page 154: Cours VBA débutants.pdf

Dependents, DirectDependents, Precedents & DirectPrecedents /)2!$&%$&3('(2!2%0'!#22)e!6%B$>)\)2!p!B#03$=>)&*!L>>)2!2%0'! 322=)2!4)! >#!0%'3%0!4)!$>#J)2! >3()2I!

6P)2'opo43&)! 4)! 6)>>=>)2! ('#0'! 4)2! #&J=B)0'2! 4)! Q%&B=>)! 4P#='&)2! 6)>>=>)2*! V#&! 4(Q303'3%0I! =0)! 6)>>=>)!4($)04#0')!)2'!=0)!6)>>=>)!6%0')0#0'!=0)!Q%&B=>)!='3>32#0'!=0)!#='&)!6)>>=>)I!=0)!6)>>=>)!$&(6(4)0')!)2'!=0)!6)>>=>)!4%0'!>#!1#>)=&!)2'!='3>32()!$#&!>#!Q%&B=>)!4P=0)!#='&)!6)>>=>)*!!

")2!6)>>=>)2!2%0'!43&)6')B)0'!$&(6(4)0')2!%=!4($)04#0')2!23!>)=&!&)>#'3%0!)2'!43&)6')*!V%=&! E3)0! 6%B$&)04&)! 6)2! $&3063$)2I! 0%=2! #>>%02! $&)04&)! 6%BB)! )\)B$>)! =0)! Q)=3>>)! 4)!

4($%=3>>)B)0'!4P=0!('#>%00#J)!4)!1%3)!4P#6D=323'3%0*!

!

! +N,

Page 155: Cours VBA débutants.pdf

F0!$)='!&)$&(2)0')&!6)'')!Q)=3>>)!#1)6!2)2!Q%&B=>)2*!

!")2!Q>W6G)2!&)$&(2)0')0'! >)2!4($)04#06)2! ')>>)2!D=P)>>)2!2%0'!#QQ36G()2!$#&! >#!E#&&)!4P#=43'*!O%=2!

#>>%02!132=#>32)&!6)2!4($)04#06)2!$#&!>)!6%4)!)0!B%43Q3#0'!>)!Q%04!4)2!6)>>=>)2!#1)6!=0!6%4)!:SKI!)0!$&)0#0'!>#!6)>>=>)!"U?/U!j/U?k!6%BB)!6)>>=>)!4)!&(Q(&)06)*!

O >%02! 4%06! B)''&)! )0! i#=0)! >)2! 6)>>=>)2! $&(6(4)0')2I! )0! &%=J)! >)2! 6)>>=>)2! 43&)6')B)0'!$&(6(4)0')2!)'!)0!E>)=!6>#3&!>)2!6)>>=>)2!4($)04#0')2*!Sub AntecedentDependent()

%=2! #>

Dim MaPlage As Range On Error Resume Next Set MaPlage = ThisWorkbook.Worksheets("Depend").Cells(32, 4) MaPlage.Precedents.Interior.Color = vbYellow MaPlage.DirectPrecedents.Interior.Color = vbRed MaPlage.Dependents.Interior.Color = vbCyan On Error Goto 0 End Sub

O%')e! D=)! i)! 2=32! )0! B%4)! rO%! c3>>rI! 6P)2'opo43&)! D=)! i)! B)! 2=32! B32! )0! B%4)! 4)! '&#3')B)0'!4P)&&)=&2!3BB(43#'!2#02!$%=&!#='#0'!'&#3')&!>)2!)&&)=&2*!L0!)QQ)'I!:SK!1#!>)1)&!=0)!)&&)=&!+@@,!2P3>!0P-!#!$#2!4)!6)>>=>)2!#0'(6(4)0')2!%=!$&(6(4)0')2*!L0!>P%66=&&)06)I! 3>!0P-!#!$#2!4P30634)06)!p!0)!$#2! '&#3')&!>P)&&)=&!$=32D=)!0%=2!6G)&6G%02!i=2')!p!6%>%&3)&!4)2!6)>>=>)2!>)!6#2!(6G(#0'*!

! +NN

Page 156: Cours VBA débutants.pdf

/)!6%4)!0%=2!4%00)&#!=0!&(2=>'#'!')>!D=)!v!

!:%=2! &)B#&D=)&)e! D=P3>! Q#='! (134)BB)0'! 6%>%&3)&! >)2! 6)>>=>)2! $&(6(4)0')2! #1#0'! >)2! 6)>>=>)2!

43&)6')B)0'!$&(6(4)0')2!23!1%=2!1%=>)e!Q#3&)!>#!43QQ(&)06)!)0'&)!>)2!4)=\!$=32D=)!$#&!4(Q303'3%0I!>P%Ei)'!&)01%-(!$#&!>#!6%>>)6'3%0!4)2!6)>>=>)2!$&(6(4)0')2!6%0'3)0'!>)2!6)>>=>)2!43&)6')B)0'!$&(6(4)0')2*!7>!)0!2)&#3'!4)!B8B)!$%=&!>)2!6)>>=>)2!4($)04#0')2*!

")2! 6)>>=>)2! $&(6(4)0')2! )'! 4($)04#0')2! 0)! 2%0'! $#2! 2%=1)0'!B#03$=>()2*! ])! Q#3'I! 2)=>! 6)&'#302!26(0#&33! $#&'36=>3)&2! &)D=3W&)0'! 6)! J)0&)! 4)! $&%J&#BB#'3%0I! >)! 6#2! >)! $>=2! 6%00=! ('#0'! >#! J)2'3%0!6%0'&m>()!4)2!6#>6=>2!4#02!>)2!Q)=3>>)2!4)02)2*!

V#&! )\)B$>)I! >)! 6%4)! 2=31#0'! &)6#>6=>)! =03D=)B)0'! >)2! 6)>>=>)2! 4($)04#0')2! 4P=0)! 6)>>=>)!B%43Q3()*!Private Sub Worksheet_Change(ByVal Target As Range) Static EnCours As Boolean If EnCours Then Exit Sub EnCours = True On Error Resume Next Target.DirectDependents.Calculate Do While Err.Number = 0 Set Target = Target.DirectDependents Target.DirectDependents.Calculate Loop Err.Clear On Error GoTo 0 E se nCours = Fal End Sub

! +N.

Page 157: Cours VBA débutants.pdf

End "#!$&%$&3('(!L04!&)01%3)!>#!6)>>=>)!4)!Q30!4)!e%0)!4P=0)!$>#J)!4%00()*!"#!0%'3%0!4)!e%0)!)2'!#22)e!

23B$>)!p!6%B$&)04&)!)'!#22)e!6%B$>)\)!p!)B$>%-)&*!g0)!e%0)!$%=&!L\6)>I!6P)2'!=0)!$>#J)!>30(#3&)!4)!6)>>=>)2!6%0')0#0'!4)2!1#>)=&2!%=!0P)0!6%0')0#0'!$#2*!V&)0%02!>#!Q)=3>>)!)\)B$>)!2=31#0')!v!

!/%BB)0q%02!$#&!4)2!6#2!23B$>)2!

Sub TestEnd() Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("End").Range("A1") Debug.Print MaPlage.End(xlToRight).Address(False, False, xlA1) 'G1 Debug.Print MaPlage.End(xlDown).Address(False, False, xlA1) 'A29 Set MaPlage = ThisWorkbook.Worksheets("End").Range("C2") Debug.Print MaPlage.End(xlToRight).Address(False, False, xlA1) 'F2 Debug.Print MaPlage.End(xlDown).Address(False, False, xlA1) 'C23 Set MaPlage = ThisWorkbook.Worksheets("End").Range("E1") Debug.Print MaPlage.End(xlToRight).Address(False, False, xlA1) 'G1 Debug.Print MaPlage.End(xlDown).Address(False, False, xlA1) 'E2 Set MaPlage = ThisWorkbook.Worksheets("End").Range("G1") Debug.Print MaPlage.End(xlToRight).Address(False, False, xlA1) 'IV1 Debug.Print MaPlage.End(xlDown).Address(False, False, xlA1) 'G65536 End Sub

! +N5

Page 158: Cours VBA débutants.pdf

/)2! )\)B$>)2! &)01%3)0'! >#! 6)>>=>)! 4)! Q30! 4)! e%0)*!]#02! 6)! 6#2! i)! Q#32! >#! &)6G)&6G)! )0!E#2! %=! p!4&%3')I!B#32!6P)2'!(D=31#>)0'!)0!G#='!%=!p!J#=6G)*!T)J#&4%02!>)2!4)=\!4)&03)&2!)\)B$>)2I!>%&2D=)!b+!)2'! >#! 6)>>=>)! 4)! E#2)*!]#02! >)2! 4)=\! 6#2I! 6P)2'! >#! 4)&03W&)! 6)>>=>)! 4)! >#! Q)=3>>)! 4#02! >#! 43&)6'3%0! 4)!&)6G)&6G)!D=3!)2'!&)01%-()*!L0!)QQ)'I!L04!0)!&)01%3)!i#B#32!>#!6)>>=>)!#$$)>#0')!6%BB)!6)>>=>)!4)!Q30!4)! e%0)I! 4#02! 6)! 6#2I! L04! 6G)&6G)! >#! Q30! 4)! >#! e%0)! 2=31#0')I! >#! Q30! 4)! >#! Q)=3>>)! )0! >P%66=&&)06)!$=32D=P3>!0P-!#!$>=2!D=)!4)2!6)>>=>)2!134)2*!V%=&!E3)0!6%B$&)04&)!6)!Q%06'3%00)B)0'I!3B#J30%02!>)!6%4)!2=31#0'!v!Sub TestEnd1() Dim MaPlage As Range, Message As String Set MaPlage = ThisWorkbook.Worksheets("End").Range("E1") Do Set MaPlage = MaPlage.End(xlDown) Message = Message & vbCrLf & MaPlage.Address(False, False, xlA1) Loop Until MaPlage.Row = 65536 MsgBox Message End Sub

/)!D=3!0%=2!4%00)&#!v!

!/%BB)!1%=2!>)!1%-)eI!>)2!6)>>=>)2!&)01%-()2!6%0'3)00)0'!'%=i%=&2!=0)!1#>)=&!p!>P)\6)$'3%0!4)!>#!

4)&03W&)I! >#! &)6G)&6G)! 4)! Q30! 4)! e%0)! )2'! 4%06! E3)0! E#2()! 2=&! >)2! 6)>>=>)2! #-#0'! =0)! 1#>)=&*! /)'')!B('G%4)!L04!)2'!2%=1)0'!='3>32()!$%=&!&)01%-)&!4)2!$>#J)2!4)!1#>)=&2!6%0'30=)2!2#02!#1%3&!p!6%00#f'&)!#=!$&(#>#E>)!>)!0%BE&)!4)!6)>>=>)!4)!>#!$>#J)*!V#&!)\)B$>)!>)!6%4)!2=31#0'!&)01%3)!>#!$&)B3W&)!6%>%00)!4)!1#>)=&!4)!>#!Q)=3>>)!v! With ThisWorkbook.Worksheets("End") Set MaPlage = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)) 'on trouve parfois la notation 'Set MaPlage = .Range("A1", .Range("A1").End(xlDown)) End With

!"#!&)6G)&6G)!4)!>#!4)&03W&)!6)>>=>)!$%=&!>)2!4(1)>%$$)=&2!:SK!6P)2'!=0!$)=!6%BB)!>)!X#30'!b&##>!$%=&! >)2!6G)1#>3)&2!4)! >#! '#E>)!&%04)*!h)!1%=2!)\$%2)&#3! >)!$&%E>WB)!)'! >)2!2%>='3%02!4#02!>P('=4)!4)2!')6G03D=)2!6>#223D=)2*!

EntireRow & EntireColumn T)01%3)!>#!%=!>)2!6%>%00)2!j>3J0)2k!)0'3W&)2!4)!>#!$>#J)!#$$)>#0')*!!

Sub TestEntire() Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("Tableau").Range("J1:N28") Debug.Print MaPlage.EntireColumn.Address(False, False, xlA1) 'J:N Debug.Print MaPlage.EntireRow.Address(False, False, xlA1) '1:28 End Sub

! +N9

Page 159: Cours VBA débutants.pdf

MergeArea XP#$$>3D=)!J(0(&#>)B)0'!2=&!=0)!6)>>=>)*!T)01%3)!>#!$>#J)!Q=23%00()!23!>#!6)>>=>)!#$$#&'3)0'!p!=0)!

$>#J)!Q=23%00()!%=!>#!6)>>=>)!23!')>!0P)2'!$#2!>)!6#2*!O)!6%0Q%04)e!$#2!6)'')!$&%$&3('(!D=3!&)01%3)!=0)!$>#J)!#1)6!>#!$&%$&3('(!C)&J)4/)>>2!D=3!&)01%3)!1&#3)!23!>#!6)>>=>)!Q#3'!$#&'3)!4P=0)!$>#J)!Q=23%00()*!

Offset T)01%3)!=0)!$>#J)!4(6#>()!$#&!&#$$%&'!p!>#!$>#J)!#$$)>#0')*!])!>#!Q%&B)!v!Property Offsetj[RowOffset As Long], [ColumnOffset As Integer]k!As Range!Fx!RowOffset! )2'! =0! )0'3)&! >%0J! 4(Q30322#0'! >)! 4(6#>#J)! 4)! >3J0)! )'!ColumnOffset! )2'! =0! )0'3)&!

4(Q30322#0'!>)!4(6#>#J)!4)!6%>%00)*!/)2!#&J=B)0'2!2=31)0'!>)2!&WJ>)2!v! X3!>#!1#>)=&!4)!>P#&J=B)0'!)2'!0(J#'31)I!>)!4(6#>#J)!#=&#!>3)=!1)&2!>)!G#='!$%=&!>)2!>3J0)2!)'!1)&2!>#!J#=6G)!$%=&!>)2!6%>%00)2*!

X3!>P#&J=B)0'!)2'!$%23'3QI!>)!4(6#>#J)!#=&#!>3)=!1)&2!>)!E#2!$%=&!>)2!>3J0)2!)'!1)&2!>#!4&%3')!$%=&!>)2!6%>%00)2*!

X3!>P#&J=B)0'!)2'!0=>!%=!%B32!3>!0P-!#=&#!$#2!4)!4(6#>#J)! X3!>)!4(6#>#J)!4)B#04(!&)01%3)!=0)!>3J0)!%=!=0)!6%>%00)!)0!4)G%&2!4)!>P30')&1#>>)!4)!>#!Q)=3>>)!j+!p!.NNU.!$%=&!>)2!>3J0)2!u!+!p!?N.!$%=&!>)2!6%>%00)2kI!=0)!)&&)=&!2)&#!>)1()*!

"#!$>#J)!&)01%-()!#!>)!B8B)!0%BE&)!4)!>3J0)2!w!6%>%00)2!D=)!>#!$>#J)!#$$)>#0')*!")!6%4)!2=31#0'!)QQ#6)!>)2!6)>>=>)2!6%0')0#0'!>#!1#>)=&!@!4#02!>#!$>#J)!rK?vb?@@@r!4)!>#!Q)=3>>)!

'#E>)#=*!Sub TestOffset() Dim MaPlage As Range, cmptCol As Long, cmptLig As Long Set MaPlage = ThisWorkbook.Worksheets("Tableau").Cells(2, 1) For cmptLig = 0 To MaPlage.End(xlDown).Row - MaPlage.Row For cmptCol = 0 To MaPlage.End(xlToRight).Column - MaPlage.Column If MaPlage.Offset(cmptLig, cmptCol).Value = 0 Then MaPlage.ClearContents Next cmptCol Next cmptLig End Sub

Resize T)43B)023%00)!=0!%Ei)'!T#0J)!4=!0%BE&)!4)!6%>%00)2!w!>3J0)2!$#22(!)0!#&J=B)0'*!])!>#!Q%&B)v!Property Resizej[RowSize As Long], [ColumnSize As Integer]k!As Range!Fx! RowSize )2'! =0! )0'3)&! >%0J! 4(Q30322#0'! >)! 0%BE&)! 4)! >3J0)2! )'! ColumnSize )2'! =0! )0'3)&!

4(Q30322#0'!>)!0%BE&)!4)!6%>%00)2*!/)2!#&J=B)0'2!2%0'!Q%&6(B)0'!4)2!1#>)=&2!$%23'31)2!%=!2%0'!%B32I!4#02! 6)! 6#2! >#! $>#J)! 0P)2'! $#2! &)43B)023%00()*! X3! >#! $>#J)! &)01%-()! 0P)2'! $#2! 4#02! >)2! >3B3')2!#4B3223E>)2!4)!>#!Q)=3>>)I!=0)!)&&)=&!2)&#!>)1()*!

L0!6%BE30#0'!6)'')!$&%$&3('(!)'!>#!$&%$&3('(!FQQ2)'!1=)!$&(6(4)BB)0'I!3>!)2'!$%223E>)!4)!&)4(Q303&!0P3B$%&')!D=)>>)!$>#J)!2=&! >#!Q)=3>>)!)0!$#&'#0'!4P=0)!#='&)!$>#J)*!/)'')!Q#q%0!4)! '&#1#3>>)&!$)='!#>%&2!&)B$>#6)&!>P='3>32#'3%0!4)!$>#J)!Q3\)!6%BB)!0%=2!>)!1)&&%02!4#02!>#!4326=223%0!')6G03D=)!$>=2!>%30*!

"P)\)B$>)!2=31#0'!&)B$>3!>#!6%>%00)!B%-)00)!4)!>#!Q)=3>>)!'#E>)#=*!Sub TestResize() Dim MaPlage As Range, cmptLig As Long Set MaPlage = ThisWorkbook.Worksheets("Tableau").Cells(2, 1) MaPlage.Offset(, 6).Value = "Moyenne T1-T4" 'parcours la plage en ligne For cmptLig = 1 To MaPlage.End(xlDown).Row - MaPlage.Row MaPlage.Offset(cmptLig, 6).FormulaLocal = "=Moyenne(" & MaPlage.Offset(cmptLig, 2).Resize(, 4).AddressLocal(True, True, xlR1C1) & ")" Next cmptLig End Sub

! +N;

Page 160: Cours VBA débutants.pdf

Autres Propriétés de l’objet Range

Address & AddressLocal (String) T)01%3)!>l#4&)22)!4)!>#!$>#J)*!Property Addressj[RowAbsolute As Boolean], [ColumnAbsolute As Boolean], [ReferenceStyle

As XlReferenceStyle = xlA1], [External As Boolean], [RelativeTo As Range]k!As String!!")2! #&J=B)0'2!RowAbsolute! )'!ColumnAbsolute! 4(')&B30)! 23! >l#4&)22)! &)01%-()! )2'! #E2%>=)!%=!

&)>#'31)I!ReferenceStyle! 1#='! \>K+! %=! \>T+/+*! X3!External! )2'! 1&#3! >l#4&)22)! 6%0'3)04&#! >)! 0%B! 4=!6>#22)=&! )'! 4)! >#! Q)=3>>)I!RelativeTo! $&(632)! >#! $>#J)! %=! >#! 6)>>=>)! 4)! &(Q(&)06)! $%=&! >)2! &(Q(&)06)2!&)>#'31)2*!"#!$&%$&3('(!K44&)22"%6#>! Q%06'3%00)!p! >l34)0'3D=)!B#32! >)2! &(Q(&)06)2!4)! '-$)!T+/+!2%0'!6%01)&'3)2!)0!"+/+*!Sub TestAdresse() Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("Feuil1").Range("A1:A10") Debug.Print MaPlage.AddressLocal(True, True, xlR1C1) 'L1C1:L10C1 Set MaPlage = ThisWorkbook.Worksheets("Feuil1").Cells(5, 6) Debug.Print MaPlage.Address(False, False, xlR1C1, False, ThisWorkbook.Worksheets("Feuil1").Range("B2")) 'R[3]C[4] Set MaPlage = Application.Union(MaPlage, ThisWorkbook.Worksheets("Feuil1").Range("A1:A10")) Debug.Print MaPlage.Address '$F$5,$A$1:$A$10 End Sub

Borders (Borders) T)01%3)! >#!6%>>)6'3%0!4)2!E%&4=&)2!4)! >#!$>#J)*!")2!E%&4=&)2!2%0'!43QQ(&)0')2!2)>%0!D=)!>#!$>#J)!

6%0'3)00)!=0)!%=!$>=23)=&2!6)>>=>)2*!g0)!E%&4=&)!2$(63Q3D=)!)2'!4%06!4(23J0()!#1)6!>#!0%'#'3%0!v!Range.Borders(Constante)

Fx!>#!6%02'#0')!4(23J0)!>#!E%&4=&)!2)>%0!>#!')&B30%>%J3)!B%0'&()!63o4)22%=2!v!

!

! +.@

Page 161: Cours VBA débutants.pdf

g0)!E%&4=&)!)2'!4(Q303)!2)>%0!'&%32!$&%$&3('(2!v! /%>%&!j%=!/%>%7304)\k!D=3!4(Q303'!>#!6%=>)=&!4=!'&#3'! "30)X'->)!D=3!4(Q303'!>)!2'->)!4=!'&#3'! `)3JG'!D=3!4(Q303'!2%0!($#322)=&*!

X3!1%=2!#$$)>)e!>#!$&%$&3('(!S%&4)&2!2#02!$&(632)&!4)!6%02'#0')I!6)!2%0'!>)2!D=#'&)!E%&4=&)2!4=!'%=&!)\'(&3)=&!D=3!2)&%0'!#QQ)6'(2*!

")2!)06#4&)B)0'2!6%B$>)\)2!)0J)04&)0'!4)2!6%4)2!#22)e!>%=&42*!Sub Encadrement() Dim MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets("Feuil1") MaFeuille.Cells(3, 3).Borders.LineStyle = xlContinuous

With .Borders(xlEdgeLeft) With MaFeuille.Range("B12:C15") .LineStyle = xlDouble .Weight = xlThick .ColorIndex = 50 End With With .Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 5 End With With .Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 5 End With With .Borders(xlEdgeRight) .LineStyle = xlDouble .Weight = xlThick .ColorIndex = 50 End With With .Borders(xlInsideHorizontal) .LineStyle = xlDashDotDot .Weight = xlThin End With End With End Sub

/)!6%4)!4%00)&#!v!

!!

! +.+

Page 162: Cours VBA débutants.pdf

Characters (Characters) S3)0!D=P%0! >P='3>32)! #22)e! $)=I! 6)'')! $&%$&3('(! &)01%3)! >)! 6%0')0=!4)! >#! 6)>>=>)! 2%=2! Q%&B)! 4P=0)!

6%>>)6'3%0!4)!6#&#6'W&)2I! 6)!D=3!$)&B)'!4)!B#03$=>)&!6)=\o63! 2($#&(B)0'I!4P302(&)&!=0)!6G#f0)!%=!4)!2=$$&3B)&! 6)&'#302! 6#&#6'W&)2*! b(0(&#>)B)0'I! %0! ='3>32)! $>='m'! 4)2! Q%06'3%02! :SK! 4)! '&#3')B)0'! 4)!6G#f0)2I!B#32!4#02!6)&'#302!6#2I!>#!6%>>)6'3%0!/G#&#6')&2!)2'!>#!2)=>)!2%>='3%0I!$#&!)\)B$>)!$%=&!='3>32)&!4)2!$%>36)2!43QQ(&)0')2!4#02!=0)!B8B)!6)>>=>)!%=!$%=&!B)''&)!)0!6%=>)=&!6)&'#302!6#&#6'W&)2*!

Column & Row (long) T)01%3)!>)!0=B(&%!4)!>#!$&)B3W&)!>3J0)!w!6%>%00)!4)!>#!$>#J)*!!

ColumnWidth & RowHeight (Double) T)01%3)!>#!G#=')=&!4)!>3J0)!%=!>#!>#&J)=&!4)!>#!6%>%00)*!!V>#J)!G('(&%JW0)! !O=>>!K'')0'3%0I! >#! G#=')=&! 4)! >3J0)! &)01%3)! 4)2! $%30'2! #>%&2! D=)! >#! >#&J)=&! 4)! 6%>%00)! &)01%3)! =0!

(D=31#>)0'!0%BE&)!4)!6#&#6'W&)2*!X3!1%=2!1%=>)e!6%00#f'&)!>#!>#&J)=&!)0!0%BE&)!4)!$%30'2I!1%=2!4)1)e!='3>32)&!>#!$&%$&3('(!`34'G!

Font (Font) T)01%3)!=0!%Ei)'![%0'!D=3!)2'!>#!$%>36)!='3>32()!$%=&!>#!$>#J)*!V>#J)!G('(&%JW0)! ![%0'!J(0(&3D=)!X3! '%=')2! >)2! 6)>>=>)2! 6%0'3)00)0'! >#! B8B)! $%>36)I! >#! $&%$&3('(! &)01%3)! 6)'')! $%>36)I! 230%0! )>>)!

&)01%3)!=0!%Ei)'![%0'!J(0(&3D=)!4%0'!>)!0%B!)2'!O=>>*!")!6%4)!2=31#0'!1(&3Q3)!D=)! '%=')2! >)2!6)>>=>)2!4)! >#!$>#J)!%0'! >#!B8B)!$%>36)I!23! ')>!0P)2'!$#2! >)!

6#2I!3>!#$$>3D=)&#!=0)!$%>36)!K&3#>!++!b&#2!t!S>)=!p!'%=')!>#!$>#J)*!Sub TestFont() Dim MaPlage As Range, Police As Font

.Print MaPlage.Font.Name

ith Police

Set MaPlage = ThisWorkbook.Worksheets("Tableau").Range("P1:P10") Debug Set Police = MaPlage.Font If IsNull(Police.Name) Then W .Name = "Arial" .Color = vbBlue .Bold = True .Size = 11 End With End If End Sub

HasFormula (Boolean) T)01%3)!1&#3!23!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!6%0'3)00)0'!=0)!1#>)=&I![#=\!23!#=6=0)!6)>>=>)!0P)0!

6%0'3)0'I!O=>>!23!6)&'#30)2!6)>>=>)2!)0!6%0'3)00)0'*!

Hidden (Boolean) /)'')! $&%$&3('(! 2P#$$>3D=)! =03D=)B)0'! $%=&! 4)2! $>#J)2! 6%0')0#0'! 4)2! >3J0)2! %=! 4)2! 6%>%00)2!

)0'3W&)2*!T)01%3)!1&#3!23!'%=')2!>)2!>3J0)2!%=!'%=')2!>)2!6%>%00)2!4)!>#!$>#J)!2%0'!B#2D=()2I![#=\!230%0*!V%=&!2#1%3&!23!=0)!6)>>=>)!)2'!B#2D=()!%0!='3>32)!4%06!v!/)>>=>)*L0'3&)T%Y*_344)0!%=!/)>>=>)*L0'3&)/%>=B0*_344)0!

! +.?

Page 163: Cours VBA débutants.pdf

HorizontalAlignment & VerticalAlignment (Variant) T)01%3)!%=!4(Q303'!>P#>3J0)B)0'!4#02!>)2!6)>>=>)2*!V>#J)!G('(&%JW0)! !O=>>!")2!1#>)=&2!4)!6)0'&#J)!2%0'!>)2!2=31#0')2!v!

HorizontalAlignment Constante Valeur Commentaire

XILeft! o,+U+! b#=6G)!xICenter! o,+@9! /)0'&(!xIRight! o,+N?! ]&%3')!xIFill! N! T)6%$3(!

xIJustify! o,+U@! h=2'3Q3(!xlCenterAcrossSelection 5! /)0'&(!2=&!$>=23)=&2!6%>%00)2!

VerticalAlignment xITop! !o,+.@! _#='!

xICenter! o,+@9! /)0'&(!xIBottom! o,+@5! S#2!XIJustify! o,+U@! h=2'3Q3(!

XIDistributed !o,++5! ]32'&3E=(!

Interior (Interior) T)01%3)!=0!%Ei)'!70')&3%&!D=3!)2'!>)!Q%&B#'!4=!6%&$2!4)!>#!6)>>=>)*!V>#J)!G('(&%JW0)! !70')&3%&!J(0(&3D=)!"P%Ei)'!70')&3%&!JW&)!>#!6%=>)=&!)'!>)!B%'3Q!4=!Q%04!4)!>#!6)>>=>)*!!

Left & Top (Single) T)01%3)! >#! $%23'3%0! )0! $%30'! 4=! E%&4! J#=6G)! %=! 4=! 2%BB)'! 4)! >#! $>#J)*! /)2! $&%$&3('(2! 2%0'!

(134)BB)0'!)0! >)6'=&)! 2)=>)*!F0!0)! >)2!='3>32)!J(0(&#>)B)0'!D=)! >%&2D=P%0!2%=G#3')! 302(&)&!=0!%Ei)'!4#02!=0)!Q)=3>>)!p!=0)!$%23'3%0!4)!6)>>=>)!$#&'36=>3W&)*! With ThisWorkbook.Worksheets("Tableau") .ChartObjects.Add .Range("P4").Left, .Range("P4").Top, 500, 200 End With

Locked (Boolean) T)01%3)!1&#3!23!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!2%0'!1)&&%=3>>()2I![#=\!23!#=6=0)!0)!>P)2'*!K'')0'3%0!

>)!1)&&%=3>>#J)!0)!$&)04!)QQ)'!D=)!>%&2D=)!>#!Q)=3>>)!)2'!$&%'(J()*!/)63!1)='!43&)!D=)!>#!6)>>=>)!$)='!8'&)!1)&&%=3>>()!#=!2)02!4)!>#!$&%$&3('(!"%6a)4!2#02!>P8'&)!$G-23D=)B)0'!23!>#!Q)=3>>)!0P)2'!$#2!$&%'(J()*!

V>#J)!G('(&%JW0)! !O=>>!

MergeCells (Boolean) T)01%3)!1&#3!23!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!2%0'!Q=23%00()2I![#=\!23!#=6=0)!0)!>P)2'*!")2!6)>>=>)2!

$)=1)0'!8'&)!'%=')2!Q=23%00()2!4#02!>#!B8B)!$>#J)!%=!4#02!4)2!$>#J)2!43QQ(&)0')2*!V>#J)!G('(&%JW0)! !O=>>!

! +.U

Page 164: Cours VBA débutants.pdf

Name (String) T =!4(Q303'! >)! 0%B!4)! >#!$>#J)*!V#&!4(Q#='! >)! 0%B!2)&#! #i%='(! p! >#! 6%>>)6'3%0!O#B)2!4=!

6>#22)=&*!X3!> %B!)\32'#3'!4(ip!4#02!>)!6>#22)=&I!2%0!#063)00)!&(Q(&)06)!2)&#!(6&#2()*!!V%=&!#''&3E=)&!>)!0%B!p!>#!6%>>)6'3%0!O#B)2!4)!>#!Q)=3>>)I!1%=2!4)1)e!4(Q303&!=0!0%B!j6G#f0)!4)!

6#&#6'W&)2k!4)!>#!Q%&B)!rO%B[)=3>>)âO%Br!Sub TestName()

)01%3)!%)!0

Ajoute

Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("Tableau").Range("J1:N28") 'Ajoute Nom1 à la collection du classeur en écrasant l'ancienne référence MaPlage.Name = "Nom1" ' Nom2 à la collection Names de la feuille nommée Tableau MaPlage.Name = "Tableau!Nom2" End Sub

NumberFormat & NumberFormatLocal (String) T)01%3)!>#!6G#f0)!4)!Q%&B#'!4)2!6)>>=>)2!4)!>#!$>#J)*!!V>#J)!G('(&%JW0)! !O=>>!"#! 1#>)=&! &)01%-()! $)='! 8'&)! =0)! 6G#f0)! $&(4(Q303)! %=! =0)! 6G#f0)! $)&2%00#>32()*! L>>)! 0P)2'!

&)01%-()!D=)!23!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!%0'!>#!B8B)!6G#f0)!4)!Q%&B#'#J)*!!

Orientation (Integer) T)01%3)!%=!4(Q30'3! >P%&3)0'#'3%0!4=!')\')!4#02! >#!6)>>=>)*!:#>)=&!)0'3W&)!6%B$&32)!)0'&)!o;@!)'!;@!

4)J&(2*!!V>#J)!G('(&%JW0)! !O=>>!")2!')\')2!0%&B#=\!j2#02!%&3)0'#'3%0!4(Q303)k!&)01%3)0'!o,+?9!j\>_%&3e%0'#>k!

Style (Variant) T)01%3)!%=!4(Q303'!>)!0%B!4=!2'->)!$%=&!>#!$>#J)!4)!6)>>=>)2*!V>#J)!G('(&%JW0)! !O%'G30J!

Méthodes de l'objet Range

AddComment Ki%=')! =0! 6%BB)0'#3&)! p! >#! 6)>>=>)*! /)'')! B('G%4)! >W1)! =0)! )\6)$'3%0! 23! >#! $>#J)! 6%0'3)0'!

$>=23)=&2!6)>>=>)2!%=!23!>#!6)>>=>)!6%0'3)0'!4(ip!=0!6%BB)0'#3&)*!])!>#!Q%&B)!v!Function AddCommentj[Text As String]k!As Comment!Fx!Text!)2'!>)!')\')!4=!6%BB)0'#3&)!p!#i%=')&*!

Sub TestMethod() Dim MaPlage As Range, Commentaire As Comment Set MaPlage = ThisWorkbook.Worksheets("Methode").Range("A1") Set Commentaire = MaPlage.AddComment("Commentaire") Commentaire.Shape.AutoShapeType = msoShapeCross End Sub

! +.,

Page 165: Cours VBA débutants.pdf

AutoFilter /)'')!B('G%4)!)2'!)\'&8B)B)0'!$=322#0')!!4#02!>)2!26(0#&33!4)!&)6G)&6G)!4)!1#>)=&*!V%=&!3>>=2'&)&!

6)2!B('G%4)2I!0%=2!&)$#&'3&%02!4P=0!)\)B$>)!4)!Q36G3)&!4P#6D=323'3%0!')>!D=)!v!

!"#! $&%$&3('(!K='%[3>')&! $)&B)'! 4P('#E>3&! =0! Q3>'&)! 23B$>)I! $%&'#0'! 2=&! =0)! %=! $>=23)=&2! 6%>%00)2!

4P=0)!'#E>)!4)!1#>)=&2!)'!$%=1#0'!6%0')03&!i=2D=Pp!4)=\!6%043'3%02!$#&!6%>%00)*!])!>#!Q%&B)!v!Function AutoFilterj[Field As Integer], [Criteria1 As String], [Operator As

XlAutoFilterOperator = xlAnd], [Criteria2 As String], [VisibleDropDown As Boolean]k!As AutoFilter!

Fx!Field!)2'!>)!0=B(&%!4)!>#!6%>%00)!%x!4%3'!2P#$$>3D=)&!>)!Q3>'&)*!7>!0)!2P#J3'!$#2!4P=0)!&(Q(&)06)!#E2%>=)!B#32!4=!0=B(&%!4P%&4&)!4)!>#!6%>%00)!4#02!>#!$>#J)!4)!1#>)=&*!

Criteria1!)'!Criteria2!2%0'!4)2!6G#f0)2!4)!6#&#6'W&)2!)\$>363'#0'!>)j2k!6&3'W&)j2k*!Operator!$&(632)!23!>)2!&WJ>)2!2%0'!6%B$%2()2!)0!L<!j\>K04k!%=!)0!Fg!j\>F&k!2P3>!-!#!4)=\!6&3'W&)2!u!%=!$&)04!=0)!1#>)=&!$#&'36=>3W&)!4)!\>S%''%B+@7')B2I!\>S%''%B+@V)&6)0'I!\><%$+@7')B2I!\><%$+@V)&6)0'*!

X3!VisibleDropDown!)2'!1&#3I!>)2!Q>W6G)2!4)!Q3>'&)!2%0'!#QQ36G()2*!V%=&! )0>)1)&! >)2! Q3>'&)2!4P=0)!6%>%00)I!%0!='3>32)! >#!B('G%4)!K='%Q3>')&! )0!$&(632#0'!=03D=)B)0'!

>P#&J=B)0'![3)>4I!$%=&!)0>)1)&!'%=2!>)2!Q3>'&)2I!%0!='3>32)!K='%[3>')&!2#02!#&J=B)0'*!7B#J30%02!4#02!0%'&)!)\)B$>)!D=)!0%=2!1%=>3%02!&)6G)&6G)&!>)2!e%0)2!4)!>#!$>#J)!%x!v!U@!y!<+!y!,@!)'!C%-)00)!z!.5!

Sub AppliqueFiltre() Dim PlageFiltree As Range, PlageBase As Range, cmptLigne As Long Dim Zone As Range, Message As String With ThisWorkbook.Worksheets("Tableau")

! +.N

Page 166: Cours VBA débutants.pdf

Set PlageBase = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 7) End With With PlageBase 'enlève les éventuels anciens filtre .AutoFilter 'filtre la colonne T1 (troisième colonne) .AutoFilter Field:=3, Criteria1:=">30", Operator:=xlAnd, Criteria2:="<40", VisibleDropDown:=False 'filtre la colonne moyenne (septième colonne) .AutoFilter Field:=7, Criteria1:=">67" End With Set PlageFiltree = PlageBase.SpecialCells(xlCellTypeVisible) For Each Zone In PlageFiltree.Areas cmptLigne = cmptLigne + Zone.Rows.Count Next Message = "Nombre de lignes du tableau " & PlageBase.Rows.Count & vbCrLf Message = Message & "Nombre de lignes répondant au filtre" & cmptLigne MsgBox Message End Sub

!/)!D=3!4%00)&#!=0!&(2=>'#'!')>!D=)!v!

!!

!

! +..

Page 167: Cours VBA débutants.pdf

7>!)\32')!#=223!=0)!B('G%4)!K41#06)4[3>')&!)06%&)!$>=2!2%$G32'3D=()!B#32!D=3!4)B#04)!4)!J(&)&!>)2!$>#J)2!4)!6&3'W&)2I!6)!D=3!0%=2!)BBW0)&#3'!=0!$)=!>%30*!!

AutoFill, FillDown, FillUp, FillLeft & FillRight ")2! $&%$&3('(2! [3>>}]3&)6'3%0~! &)6%$3)0'! >)! 6%0')0=! et le format! 4)! >#! 6)>>=>)! 4)! E#2)! 4#02! >#!

43&)6'3%0!2$(63Q3()*!"#!6)>>=>)!4)!E#2)!2)!4(Q303'!6%BB)!v!"#!6)>>=>)!>#!$>=2!G#=')!$%=&![3>>]%Y0!"#!6)>>=>)!>#!$>=2!E#22)!$%=&![3>>g$!"#!6)>>=>)!>#!$>=2!p!J#=6G)!$%=&![3>>T3JG'!"#!6)>>=>)!>#!$>=2!p!4&%3')!$%=&![3>>")Q'!"#!$&%$&3('(!K='%Q3>>! )QQ)6'=)!=0)! &)6%$3)! 306&(B)0'()! 23! 6P)2'!$%223E>)I!=0)! &)6%$3)! 2'#04#&4! 23!

0%0*!])!>#!Q%&B)!v!Function AutoFilljDestination As Range, [Type As XlAutoFillType = xlFillDefault]k!As Variant!Destination!)2'!>#!$>#J)!%x!4%3'!8'&)!)QQ)6'=()!>#!&)6%$3)I!)>>)!4%3'!%E>3J#'%3&)B)0'!6%0')03&!>#!%=!

>)2! 6)>>=>)2! 2%=&6)2! j6)>>)2! D=3! 6%0'3)00)0'! >)2! 1#>)=&2! 303'3#>)2k*!Type 3043D=)! >)! '-$)!4)! &)6%$3)I! 3>!$)='!$&)04&)!>)2!1#>)=&2!v!

xlFillDays! 706&(B)0')!>)2!i%=&2!23!>#!6)>>=>)!2%=&6)!)2'!=0)!4#')*!X30%0!)\(6=')!=0)!&)6%$3)!2'#04#&4!

xlFillFormats! T)6%$3)!>)2!Q%&B#'2!B#32!$#2!>)!6%0')0=!xlFillSeries! /&()!=0)!2(&3)!#1)6!>P306&(B)0'!2'#04#&4!%=!>P306&(B)0'!4(4=3'!

xlFillWeekdays! 706&(B)0')!2=&!>)2!i%=&2!%=1&#E>)2!xlGrowthTrend!706&(B)0'!2=&!=0!306&(B)0'!4(4=3'!B=>'3$>36#'3Q!

xlFillCopy! T)6%$3)!2'#04#&4*!g'3>32)e!$>='m'!=0)!B('G%4)![3>>!xlFillDefault! "#322)!L\6)>!4(')&B30)&!>)!'-$)!4)!&)6%$3)!

xlFillMonths! 706&(B)0')!>)2!B%32!23!>#!6)>>=>)!2%=&6)!)2'!=0)!4#')*!X30%0!)\(6=')!=0)!&)6%$3)!2'#04#&4!xlFillValues! 706&(B)0')!2)>%0!>P306&(B)0'!4(4=3'!2#02!&)6%$3)&!>)2!Q%&B=>)2!

xlFillYears! 706&(B)0')!>)2!#00()2!23!>#!6)>>=>)!2%=&6)!)2'!=0)!4#')*!X30%0!)\(6=')!=0)!&)6%$3)!2'#04#&4!

xlLinearTrend! 706&(B)0')!2)>%0!>P306&(B)0'!4(4=3'!%=!>P306&(B)0'!2'#04#&4!V%=&! E3)0! 6%B$&)04&)! 6%BB)0'! ='3>32)&! 6)'')! B('G%4)I! )\$%2%02! 4P#E%&4! 6)2! &WJ>)2! 4)!

Q%06'3%00)B)0'*!V%=&! Q#3&)!=0)! &)6%$3)! P306&(B)0'()P! 3>! Q#='! p!B303B#!4(Q303&I! =0)!1#>)=&!4)!4($#&'I!=0)!&WJ>)!4P306&(B)0'#'3%0!)'!=0!306&(B)0'*!"#!1#>)=&!4)!4($#&'!1#!4%06!8'&)!>P%Ei)'!T#0J)!#$$)>#0'!>#!B('G%4)*! "#! &WJ>)! 4P306&(B)0'#'3%0! 2)&#! 4(Q303)! $#&! >P#&J=B)0'! Type, 3>! &)2')! p! 4(Q303&! >P306&(B)0'*!L\6)>!$)='!='3>32)&!4#02!>#!$>=$#&'!4)2!6#2!>P306&(B)0'!$#&!4(Q#='!D=3!1#='!+I!$%=&!$)=!D=P3>!0P-!#3'!$#2!4P#BE3J=Å'(*! ]W2! >%&2! D=)! 6)>=3o63! 0)! 6%013)0'! $#2I! 3>! 1#! Q#>>%3&! >=3! 4%00)&! =0! #='&)! 306&(B)0'*! F0!='3>32)!$%=&!6)>#!6)!D=P%0!#$$)>>)!=0!306&(B)0'!4(4=3'!)0!$#22#0'!p!L\6)>!4)=\!1#>)=&2!4#02!>#!$>#J)!2%=&6)I!>#!1#>)=&!4)!4($#&'I!)'!>#!$&)B3W&)!1#>)=&!306&(B)0'()*!T)J#&4%02!>)!6%4)!2=31#0'!v!Sub TestAutofill() Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("Methode").Cells(1, 1) 'cas 1 MaPlage.Value = CDate("28/01/2002") MaPlage.Offset(1).Value = CDate("28/02/2002") MaPlage.Resize(2).AutoFill MaPlage.Resize(30), xlFillDefault 'cas 2 MaPlage.Offset(, 1).Value = CDate("28/01/2002") MaPlage.Offset(, 1).AutoFill MaPlage.Offset(, 1).Resize(30), xlFillMonths 'cas 3 With ThisWorkbook.Worksheets("Methode")

! +.5

Page 168: Cours VBA débutants.pdf

.Range("C1").Value = 1 .Range("C1").AutoFill .Range("C1:C30"), xlFillSeries End With 'cas 4 With ThisWorkbook.Worksheets("Methode") .Range("D1").Value = 1 .Range("D2").Value = 3 .Range("D1:D2").AutoFill .Range("D1:D30"), xlFillSeries End With 'cas 5 With ThisWorkbook.Worksheets("Methode") .Range("E1").Value = 1 .Range("E2").Value = 3 .Range("E1:E2").AutoFill .Range("E1:E30"), xlLinearTrend End With 'cas 6 With ThisWorkbook.Worksheets("Methode") .Range("F1").Value = 1 .Range("F2").Value = 3 .Range("F1:F2").AutoFill .Range("F1:F30"), xlGrowthTrend End With End Sub

/)!/%4)!4%00)&#!>)!&(2=>'#'!2=31#0'!v!

!]#02!>)!6#2!+I!0%=2!>#322%02!L\6)>!4(')&B30)&!>)!'-$)!4P306&(B)0'#'3%0*!](2!>%&2I!3>!-!#!%E>3J#'3%0!

4)!Q%=&03&!4)=\!1#>)=&2!$%=&!D=)!6)>>)o63!&(=22322)*!/%BB)!3>!-!#!=0!B%32!4P(6#&'!)0'&)!>)2!4)=\!4#')2I!L\6)>!306&(B)0')!$#&!$#2!4P=0!B%32*!O%=2!%E')0%02!>)!B8B)!&(2=>'#'!#1)6!>)!6#2!4)=\I!B#32!6%BB)!>P306&(B)0'!$#&!4(Q#='!)2'!4)!=0!)'!D=)!0%=2!$&(632%02!=0)!306&(B)0'#'3%0!)0!B%32I!=0)!2)=>)!1#>)=&!2=QQ3'*!

! +.9

Page 169: Cours VBA débutants.pdf

]#02!>)!6#2!UI!0%=2!4)B#04%02!=0)!306&(B)0'#'3%0!4)!'-$)!2(&3)!#1)6!=0!306&(B)0'!2'#04#&4*!g0)!2)=>)! 1#>)=&! 2=QQ3'! 4%06*!]#02! >)! 6#2! ,I! 0%=2! 1%=>%02! >)!B8B)! '-$)! 4P306&(B)0'#'3%0!B#32! #1)6! =0!306&(B)0'! (J#>! p! ?*! O%=2! 2%BB)2! 4%06! %E>3J(2! 4)! $#22)&! 4)=\! 1#>)=&2! $%=&! 4(Q303&! >P306&(B)0'*!"P306&(B)0'#'3%0!4)! '-$)! 2(&3)! ('#0'! >30(#3&)I! 0%=2! #1%02! >)!B8B)! &(2=>'#'! 4#02! >)! 6#2!N*!V#&! 6%0'&)!>P306&(B)0'#'3%0! )0! 6&%322#06)! 30')&$&W')! >P306&(B)0'! 43QQ(&)BB)0'*! ]#02! =0)! 306&(B)0'#'3%0! 4)! 6)!'-$)I! L\6)>! 6G)&6G)! =0! $#2! B=>'3$>36#'3Q*! /%BB)! 3>! Q#='! B=>'3$>3)&! $#&! U! >#! $&)B3W&)! 1#>)=&! $%=&!%E')03&!>#!2)6%04)I!L\6)>!B=>'3$>3)&#!$#&!'&%32!6G#D=)!1#>)=&!$%=&!%E')03&!>#!1#>)=&!2=31#0')*!

AutoFit C)'2! >#! %=! >)2! >3J0)2! w! 6%>%00)2! )0! B%4)! 4P#i=2')B)0'! #='%B#'3D=)*! "#! $>#J)! #$$)>#0')! 4%3'!

Q%&6(B)0'!6%0')03&!4)2!>3J0)2!%=!4)2!6%>%00)2!)0'3W&)2*!V%=&!D=)!>P#i=2')B)0'!2)!4(&%=>)!6%&&)6')B)0'I!3>!Q#='!D=)!>)2!6)>>=>)2!6%0'3)00)0'!>)2!1#>)=&2!#1#0'!>P#$$)>!4)!>#!B('G%4)!

BorderAround bW&)!>P)06#4&)B)0'!)\'(&3)=&!4)!>#!$>#J)*!])!>#!Q%&B)!v!Function BorderAroundj[LineStyle], [Weight As XlBorderWeight = xlThin], [ColorIndex As

XlColorIndex = xlColorIndexAutomatic], [Color As Long]k!V#&! )\)B$>)I! $%=&! )06#4&)&! 4P=0! '&#3'! $%30'3>>(! ($#32! )0! &%=J)! >#! $>#J)! rS?vL.rI! 0%=2! $%=1%02!

(6&3&)!v!ThisWorkbook.Worksheets("Methode").Range("B2").Resize(5, 4).BorderAround xlDash, xlMedium, Color:=vbRed

Calculate ](6>)06G)! >)! 6#>6=>! $%=&! >#! $>#J)! #$$)>#0')*!K'')0'3%0I! >)2! #0'(6(4)0'2! 0P('#0'! $#2! 6#>6=>(2! $#&!

4(Q#='I!>)!&(2=>'#'!$)='!8'&)!)&&%0(*!

Clear, ClearComments, ClearContents & ClearFormats C('G%4)2! 4P)QQ#6)B)0'2*! "#! B('G%4)! />)#&! )QQ#6)! '%='I! >)2! B('G%4)2! 2$(63Q3D=)2! )QQ#6)0'!

>P(>(B)0'!2$(63Q3D=)*!

ColumnDifferences & RowDifferences /)2! B('G%4)2! $)=1)0'! 8'&)! #22)e! 30'(&)22#0')2! B8B)! 23! )>>)2! 2%0'! =0! $)=! 6%B$>)\)2! p!

6%B$&)04&)*!L0!Q#3'I!6)2!B('G%4)2!2)&1)0'!p!&(6=$(&)&!>)2!6)>>=>)2!#-#0'!=0)!1#>)=&!43QQ(&)0')!4#02!>#!43B)023%0!2$(63Q3()I!2#6G#0'!D=)!2%0'!)\6>=)2!4P%QQ36)!>)2!6)>>=>)2!0P#-#0'!$#2!4)!1#>)=&*!])!>#!Q%&B)!v!

Function ColumnDifferencesjComparison As Rangek!As Range!Function RowDifferencesjComparison As Rangek!As Range!!"P#&J=B)0'!Comparison )2'!=0!%Ei)'!T#0J)!6%0')0#0'!=0)!2)=>)!6)>>=>)!#$$#&')0#0'!p!>#!$>#J)!4)!

&)6G)&6G)*!74(#>)B)0'!>#!$>#J)!4)!&)6G)&6G)!0)!6%0'3)0'!D=P=0)!6%>%00)!$%=&!!/%>=B0]3QQ)&)06)2!%=!D=P=0)! >3J0)! $%=&! T%Y]3QQ)&)06)2*! X3! >#! $>#J)! 6%0'3)0'! $>=23)=&2! 6%>%00)2I! L\6)>! 1#! J(&)&! >)! 6#2!6%BB)!23!1%=2!#$$)>3)e!$>=23)=&2!Q%32!6%02(6='31)B)0'!>#!B('G%4)!$%=&!6G#D=)!6%>%00)!)0!4(6#>#0'!3B$>363')B)0'! >#!6)>>=>)!4)!6%B$#&#32%0*!A13')e!4%06!4)! Q#3&)!6)>#!)'! '&#1#3>>)e! 2=&!4)2!$>#J)2!4P=0)!6%>%00)!j%=!>3J0)k*!

]%06!$&)0%02!>P)\)B$>)!2=31#0'!)0!&)$#&'#0'!4)!>#!Q)=3>>)!'#E>)#=!D=)!0%=2!#1%02!='3>32(!$%=&!>)2!)\)B$>)2!4PK='%Q3>')&*!

h)!2%=G#3')!6%00#f'&)!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!r]?v]+@@@r!D=3!%0'!=0)!1#>)=&!43QQ(&)0')!4)!6)>>)!4)!>#!$>#J)!r]?r*!Sub TestMethod() Dim MaPlage As Range

et MaPlage = ThisWorkbook.Worksheets("Tableau

%BB)! 1%=2! 1%-)eI! 6P)2'! #22)e! 23B$>)*!O%=2! 1)&&%02! 4

S ").Range("D2") Set MaPlage = MaPlage.Resize(999).ColumnDifferences(MaPlage) MaPlage.Select End Sub

/ #02! >#! 4326=223%0! ')6G03D=)! p! D=%3! 6)>#!$)='!2)&13&*!

! +.;

Page 170: Cours VBA débutants.pdf

Cut & Copy bW&)!>)!/%$3)&o/%>>)&!%=!>)!/%=$)&o/%>>)&!4P=0)!$>#J)!4)!6)>>=>)*!])!>#!Q%&B)!v!Function Copyj[Destination As Range]k!Function Cutj[Destination As Range]k!Fx!Destination! 3043D=)! >#!$>#J)!4)!4)2'30#'3%0*!/)>>)o63!4%3'!6%0')03&!%=!=0)!6)>>=>)!=03D=)!D=3!

2)&#! >)!6%30!2=$(&3)=&!J#=6G)!4)! >#!$>#J)!4)!6%>>#J)I!%=!=0)!$>#J)!4)!B8B)!43B)023%0!D=)! >#!$>#J)!#$$)>#0')*!X3! ')>!0P)2'!$#2! >)!6#2I! >#!6)>>=>)!2=$(&3)=&)!J#=6G)!4)! >#!$>#J)!4)!4)2'30#'3%0!2)&#!='3>32()!2#02! ')03&! 6%B$')! 4)! >#! $>#J)! (1)0'=)>>)B)0'! $#22()*! X3!Destination! )2'! %B32I! >#! $>#J)! 6%$3()! )2'!$>#6()!4#02!>)!$&)22)o$#$3)&*!"#!4)2'30#'3%0!$)='!8'&)!4#02!=0)!#='&)!Q)=3>>)!%=!4#02!=0!#='&)!6>#22)=&*!7>!$)='!-!#1%3&!=0!B)22#J)!4P#>)&')!23!>)2!6)>>=>)2!4)!4)2'30#'3%0!6%0'3)00)0'!4(ip!4)2!1#>)=&2*!Sub TestCopy() Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("Tableau").Range("A1:A50") MaPlage.Copy ThisWorkbook.Worksheets("Depend").Range("P10") End Sub

DataSeries /)'')!B('G%4)!)2'!(D=31#>)0')!p!>#!B('G%4)!K='%Q3>>!23!6)!0P)2'!D=)!1%=2!$%=1)e!$&(632)e!>#!1#>)=&!

4=!$#2!)'!>#!4)&03W&)!1#>)=&!)'!4%06!1%=2!#QQ&#06G3&!4)!>#!2#323)!4)!$>=23)=&2!1#>)=&2*!])!>#!Q%&B)!v!Function DataSeriesj}T%Y6%>~I!}<-$)!K2!M>]#'#X)&3)2<-$)!R!\>]#'#X)&3)2"30)#&~I!}]#')!K2!

M>]#'#X)&3)2]#')!R!\>]#-~I!}X')$~I!}X'%$~I!}<&)04~k!"P#&J=B)0'!T%Y/%>!$)='!$&)04&)! >)2!1#>)=&2!\>T%Y2!%=!\>/%>=B02!2)>%0! >#!43&)6'3%0!D=)!1%=2!

2%=G#3')e!$%=&!>#!$>#J)*!X3!6)'!#&J=B)0'!)2'!%B32I!L\6)>!30')&$&W')&#!>#!$>#J)!#$$)>#0')!$%=&!='3>32)&!>#!43B)023%0!>#!$>=2!J&#04)*!

")!6%4)!2=31#0'!6&()&#!=0)!2(&3)!306&(B)0'()!$#&!$#2!4)!?!2=&!>#!$>#J)!]+v]N@*!Dim MaPlage As Range Set MaPlage = ThisWorkbook.Worksheets("Methode").Range("D1:F50") MaPlage.Cells(1).Value = 1 MaPlage.DataSeries , xlDataSeriesLinear, , 2

Delete X=$$&3B)! >)2! 6)>>=>)2! 4)! >#! $>#J)*! "#!B('G%4)! #'')042! =0! #&J=B)0'! XG3Q'! $%=1#0'! $&)04&)! >)2!

1#>)=&2!xlShiftToLeft!%=!xlShiftUp!2)>%0!>#!43&)6'3%0!4=!4(6#>#J)!2%=G#3'(!j4#02!=0)!2=$$&)223%0!>)2!6)>>=>)2! 2=$$&3B()2! 2%0'! '%=i%=&2! &)B$>#6()2! 2%3'! $#&! >)2! 6)>>=>)2! 23'=()2! #=! 4)22%=2I! 2%3'! $#&! >)2!6)>>=>)2! 23'=()2! p! 4&%3')k*! V%=&! 2=$$&3B)&! 4)2! >3J0)2! )0'3W&)2! %=! 4)2! 6%>%00)2! )0'3W&)2I! ='3>32)e!L0'3&)T%Y!%=!L0'3&)/%>=B0*!

Find, FindNext & FindPrevious C('G%4)!4)!&)6G)&6G)!$%&'#0'!2=&!4)2!6)>>=>)2!6%0')0=)2!4#02!>#!$>#J)!#$$)>#0')*!])!>#!Q%&B)!v!Function FindjWhat As Variant, [After As Range], [LookIn As XlFindLookIn], [LookAt As

XlLookAt], [SearchOrder As XlSearchOrder], [SearchDirection As XlSearchDirection = xlNext], [MatchCase As Boolean], [MatchByte], [SearchFormat As Boolean]k!As Range!

Fx!What! )2'! >#! 1#>)=&! 6G)&6G()*! "P#&J=B)0'! After! $&(632)! >#! 6)>>=>)! 4)! 4(E='! 4)! &)6G)&6G)*!K'')0'3%0I!>#!&)6G)&6G)!6%BB)06)!après!6)'')!6)>>=>)!)'!0%0!$#&!)>>)*!

"P#&J=B)0'!LookIn!$&(632)!23!>#!&)6G)&6G)!p!>3)=!4#02!>)2!1#>)=&2!4)!>#!$>#J)!j\>:#>=)2kI!4#02!>)2!Q%&B=>)2!j\>[%&B=>#2k!%=!4#02!>)2!6%BB)0'#3&)2!j\>/%BB)0'2k*!

"P#&J=B)0'!LookAt!$&(632)!23!>#!&)6G)&6G)!6%B$#&)!>P(>(B)0'!p!>#!'%'#>3'(!4=!6%0')0=!j\>`G%>)k!%=!p!=0)!$#&'3)!4=!6%0')0=!j\>V#&'k*!!

"P#&J=B)0'!SearchOrder!$&(632)!>#!43&)6'3%0!4)!&)6G)&6G)!6G%323)I!$#&!6%>%00)!j\>S-/%>=B02k!%=!$#&!>3J0)!j\>S-T%Y2k*!

! +5@

Page 171: Cours VBA débutants.pdf

"P#&J=B)0'!SearchDirection!$&(632)!>)!2)02!4)!>#!&)6G)&6G)I!1)&2!>P#1#0'!j\>O)\'k!6P)2'opo43&)!1)&2!>)!E#2!%=!1)&2!>#!4&%3')!2)>%0!>#!43&)6'3%0!6G%323)I!1)&2!>P#&&3W&)!j\>V&)13%=2k!6P)2'opo43&)!1)&2!>)!G#='!%=!1)&2!>#!J#=6G)*!

MatchCase!$&(632)!23!>#!&)6G)&6G)!'3)0'!6%B$')!4)!>#!6#22)!jB#i=26=>)!w!B30=26=>)k!%=!0%0*!")2!4)=\!#='&)2!#&J=B)0'2!0)!2)&%0'!$#2!='3>32(2!4#02!6)!6%=&2*!")2! B('G%4)2! [304O)\'! )'! [304V&)13%=2! 0P#'')04)0'! D=)! >P#&J=B)0'! KQ')&! $=32D=P)>>)2! ='3>32)0'!

3B$>363')B)0'!>P)02)BE>)!4)2!#&J=B)0'2!$&(632(2!4#02!>P#$$)>!4)!>#!B('G%4)![304*!")!$&3063$)!4)!>#!&)6G)&6G)!)2'!#22)e!23B$>)*!"#!$>#J)!#$$)>#0')!2)&#!>#!$>#J)!4)!&)6G)&6G)*!X3!>#!

1#>)=&!)\32')!#=!B%302!=0)!Q%32I!>#!Q%06'3%0![304!&)01)&&#!=0!%Ei)'!T#0J)!6%&&)2$%04#0'!p!>#!$&)B3W&)!6)>>=>)!'&%=1()I!230%0!)>>)!&)01)&&#!O%'G30J*![304O)\'!)'![304V&)13%=2!$%=&&%0'!#>%&2!8'&)!#$$)>(2!$%=&!&)6G)&6G)&! 23! 4P#='&)2! 6)>>=>)2! 6%0'3)00)0'! >#!1#>)=&*!"#! &)6G)&6G)! )2'! 63&6=>#3&)!4#02! >#!$>#J)*!:%=2!4)1)e! 4%06! 2'%6a)&! >P#4&)22)! 4)! >#! $&)B3W&)! 6)>>=>)! 6%&&)2$%04#0')! >)! 6#2! (6G(#0'! $%=&! E>%D=)&! >)!$&%6)22=2*!V#&!)\)B$>)I! >)!6%4)!2=31#0'!1#!&)6G)&6G)&!>P)02)BE>)!4)2!6)>>=>)2!6%0')0#0'! >#!1#>)=&!9?!4#02!>#!$>#J)!#$$)>#0')!)'!B)''&)!>)!Q%04!4)!>#!6)>>=>)!)0!E>)=*!Sub Find82() Dim MaPlage As Range, Trouve As Range, Adresse1 As String With ThisWorkbook.Worksheets("Tableau") Set MaPlage = .Range(.Cells(1, 3), .Cells(.Rows.Count, 6).End(xlUp)) End With Set Trouve = MaPlage.Find(82, MaPlage.Cells(1), xlValues, xlWhole, xlByRows, xlNext) If Not Trouve Is Nothing Then Adresse1 = Trouve.Address Do Trouve.Interior.Color = vbBlue Set Trouve = MaPlage.FindNext(Trouve) Loop While StrComp(Adresse1, Trouve.Address) <> 0 End If End Sub

Insert /P)2'!>#!B('G%4)!301)&2)!4)!])>)')*!L>>)!#'')04!>)!B8B)!#&J=B)0'!Shift!$%=&!$&(632)&!>)!2)02!4=!

4(6#>#J)I!1)&2!>)!E#2!%=!p!4&%3')I!>#!&)B#&D=)!$%=&!>)2!>3J0)2!%=!6%>%00)2!)0'3W&)2!&)2'#0'!1#>#E>)*!

Merge & UnMerge bW&)!>#!Q=23%0!4)2!6)>>=>)2!4)!>#!$>#J)*!"#!B('G%4)!#66)$')!=0!#&J=B)0'!E%%>()0!K6&%22!D=)!>P%0!

$)='! ='3>32)&! >%&2D=)! >#! $>#J)! 6%0'3)0'! $>=23)=&2! >3J0)2! )'! $>=23)=&2! 6%>%00)2*! X3!K6&%22! )2'! 1&#3I! >)2!6)>>=>)2!2%0'!Q=23%00()2!$#&!>3J0)I!230%0!'%=')!>#!$>#J)!)2'!Q=23%00()!)0!=0)!2)=>)!6)>>=>)*!X3!>)2!6)>>=>)2!6%0'3)00)0'!4)2!1#>)=&2I!1%=2!#=&)e!>P#$$#&3'3%0!4P=0!B)22#J)!4P#>)&')!$&(1)0#0'!D=)!2)=>)!>#!1#>)=&!>#!$>=2!p!J#=6G)!2)&#!6%02)&1()*!:%=2!$%=1)e!>)!4(2#6'31)&I!6%BB)!4#02!v! Set MaPlage = ThisWorkbook.Worksheets("methode").Range("G2:J10") Application.DisplayAlerts = False MaPlage.Merge True Application.DisplayAlerts = True

"#!B('G%4)!g0C)&J)!2($#&)!>)2!6)>>=>)2!Q=23%00()2I!)>>)!0P#66)$')!$#2!4P#&J=B)0'*!

! +5+

Page 172: Cours VBA débutants.pdf

PasteSpecial "#! B('G%4)! 6%>>#J)! 2$(63#>! &)2')! '&W2! 30'(&)22#0')! $%=&! =0! 6)&'#30! 0%BE&)! 4P%$(&#'3%02*! L>>)!

Q%06'3%00)!Q%&6(B)0'!)0!6%0i%06'3%0!#1)6!>#!B('G%4)!/%$-*!X3!1%=2!#1)e!E3)0!2=313!6)!D=)!0%=2!#1%02!1=!$&(6(4)BB)0'I! )>>)!0P)2'!$#2! '&W2!='3>)!$%=&! >)!6%>>#J)! 2$(63#>!4)! '-$)!1#>)=&!%=!4)! '-$)! Q%&B=>)!$=32D=P3>!)2'!$>=2!23B$>)!4)!$#22)&!$#&!>)2!$&%$&3('(2!'#E>)#=!')>>)2!D=)!:#>=)!%=![%&B=>#*!

])!>#!Q%&B)!v!Function PasteSpecialj[Paste As XlPasteType = xlPasteAll], [Operation As

XlPasteSpecialOperation = xlPasteSpecialOperationNone], [SkipBlanks As Boolean], [Transpose As Boolea

")!$#&#BW'&)!Paste!4(Q303'!>)!'-$)!4)!6%>>#J)I!3>!$)='!$&)04&)!>)2!1#>)=&2!v!\>V#2')K>>!\>V#2')K>>L\6)$'S%&4)&2!\>V#2')/%>=B0`34'G2!\>V#2')/%BB)0'2!\>V#2')[%&B#'2!\>V#2')[%&B=>#2!\>V#2')[%&B=>#2K04O=BE)&[%&B#'2\>V#2'):#>34#'3%0!\>V#2'):#>=)2!\>V#2'):#>=)2K04O=BE)&[%&B#'2!

"P#&J=B)0'!Operation!4(Q303'!>)2!%$(&#'3%02!2$(63Q3D=)2*!7>!$)='!$&)04&)!>)2!1#>)=&2!v!\>V#2')X$)63#>F$)&#'3%0K44!\>V#2')X$)63#>F$)&#'3%0]3134)!\>V#2')X$)63#>F$)&#'3%0C=>'3$>-!\>V#2')X$)63#>F$)&#'3%0O%0)!\>V#2')X$)63#>F$)&#'3%0X=E'&#6'!

/)2! %$(&#'3%02! 4)! 6%>>#J)! 0P%0'! 4)! 2)02! D=)! $%=&! >)2! 6%>>#J)2! 4)! 1#>)=&I! >%&2D=)! >#! $>#J)! 4)!4)2'30#'3%0! 6%0'3)0'! #=223! 4)2! 1#>)=&2*! X3! >P#&J=B)0'! 1#='! \>V#2')X$)63#>F$)&#'3%0O%0)I! >)2! 1#>)=&2!)\32'#0')2!2%0'!(6&#2()2!$#&!>)2!1#>)=&2!6%>>()2I!230%0!L\6)>!)\(6=')!>P%$(&#'3%0!$&(632()!)0'&)!>#!1#>)=&!)\32'#0')!)'!>#!1#>)=&!6%>>()*!

"P#&J=B)0'!Xa3$S>#0a!)2'!=0!E%%>()0!D=3!$&(632)!23!>)2!6)>>=>)2!134)2!4%31)0'!8'&)!3J0%&()2!>%&2!4=!6%>>#J)*!

"P#&J=B)0'!<&#02$%2)!)2'!=0!E%%>()0!D=3!4(Q303'!23!>#!$>#J)!4%3'!8'&)!'&#02$%2()I!#='&)B)0'!43'!23!>)2!4)=\!43B)023%02!>3J0)!w!6%>%00)!4%31)0'!8'&)!301)&2()*!

F0! ='3>32)! 4%06! 6)'')!B('G%4)I! 2%3'! $%=&! 6%>>)&! 4)2! Q%&B#'2I! 2%3'! $%=&! 6%>>)&! 4)2! 1#>)=&2! )'! 4)2!Q%&B#'2I!2%3'!)0Q30!$%=&!'&#02$%2)&!>)2!$>#J)2*!

F0! 0P='3>32)! Q30#>)B)0'! D=P#22)e! $)=! 6)'')!B('G%4)! $%=&! &(#>32)&! 4)2! %$(&#'3%02! 6#&! >)2! 26(0#'33!B)''#0'!)0!ä=1&)!6)'')!Q%06'3%00#>3'(!2%0'!&#&)2*!

Replace

n]k!

"#!B('G%4)!T)$>#6)!Q%06'3%00)!p!$)=!$&W2!6%BB)!>#!B('G%4)![304I!23!6)!0P)2'!D=P%0!$&(632)!=0!

#&J=B)0'!T)$>#6)B)0'!D=3!6%0'3)0'!>#!1#>)=&!4)!&)B$>#6)B)0'*!!

Sort /)'')!B('G%4)!JW&)!>)!'&3!4#02!>)2!$>#J)2*!L>>)!)2'!#22)e!2%=1)0'!B#>!6%B$&32)!)'!4%06!B#>!='3>32()I!

#=223!#>>%02!0%=2!>#!4('#3>>)&!=0!$)=!#1#0'!4)!1%3&!2%0!(6&3'=&)*!")! '&3!4#02!=0)!$>#J)!&)6'#0J=>#3&)!#!=0)!%&3)0'#'3%0I!2%3'!%0! '&3!$#&!6%>%00)!6P)2'opo43&)!D=)! >)2!

6)>>=>)2!&)2')0'!4#02!=0)!6%>%00)!Q3\)!B#32!$)=1)0'!6G#0J)&!4)!>3J0)I!2%3'!%0!'&3!)0!>3J0)!)'!>)2!>3J0)2!&)2')0'!Q3\)2!#>%&2!D=)!>P%&4&)!4#02!>)2!6%>%00)2!$)='!8'&)!B%43Q3(*!

! +5?

Page 173: Cours VBA débutants.pdf

")!'&3!L\6)>!#66)$')!i=2D=Pp!'&%32!6>(2!4)!'&3*!g0)!6>(!4)!'&3I!4(Q303'!=0)!>3J0)!%=!=0)!6%>%00)!D=3!1#!2=E3&! >)! '&3I! )0'&#f0#0'! 4)! 6)! Q#3'! >)! '&3! 4)2! #='&)2! (>(B)0'2! 4)! >#! B8B)! 43B)023%0*! V&)0%02! 0%'&)!)\)B$>)!4)!'#E>)#=!4(2%&B#32!6>#223D=)!$%=&!B3)=\!132=#>32)&!>)!$&3063$)*!

!")2!4%00()2!4=!'#E>)#=!('#0'!%&4%00()2!)0!6%>%00)I!0%=2!#>>%02!Q%&6(B)0'!'&3)&!4#02!6)!2)02*!X3!

0%=2!4(634%02!4)!'&3)&!=03D=)B)0'!<ã+I! >P%&4&)!4)2!6)>>=>)2!4)!>#!6%>%00)!/!1#!6G#0J)&I!B#32!>P%&4&)!4)2!#='&)2!6%>%00)2!0)!1#!$#2!E%=J)&*!/)63!0)!2)&#3'!$#2!')>>)B)0'!>%J3D=)!$=32D=)!6G#D=)!>3J0)!p!=0)!6%G(&)06)!$&%$&)*!O%=2!4)1%02!4%06!'&3)&!'%='!>)!'#E>)#=*!"%&2D=)!0%=2!#>>%02!'&3)&!<ã+!j>#!6%>%00)!/k!>P%&4&)!4)!'%=')2!>)2!>3J0)2!1#!4%06!2)!B%43Q3)&!$%=&!2=31&)!>)!0%=1)>!%&4&)!4)2!1#>)=&2!4)!<ã+*!/)'')!6%>%00)!2)&#!4%06!>#!6>(!4)!'&3!4P=0!%Ei)'!T#0J)!&)$&(2)0'#0'!'%='!>)!'#E>)#=*!

h)!1%=2!#3!43'!D=P3>!$%=1#3'!-!#1%3&!i=2D=Pp!'&%32!6>(2I!D=)!2)!$#22)o'o3>!4%06!>%&2D=P%0!$&(632)!=0)!2)6%04)!6>(I!$#&!)\)B$>)!<ã?!|!

")2!>3J0)2!1%0'!4P#E%&4!2)!&(%&4%00)&!2)>%0!>)!'&3!4)!>#!$&)B3W&)!6>(I!$#&!)\)B$>)!$#&!1#>)=&2!4)!<ã+!6&%322#0')*!/%BB)!3>!0P)2'!$#2!$%223E>)!4)!'&3)&!$#&Q#3')B)0'!>#!4)=\3WB)!6>(!2#02!$)&4&)!>P%&4&)!4(Q303! $#&! >#! $&)B3W&)I! L\6)>! 1#! $&%6(4)&! p! =0! '&3! 2)6%04#3&)I! 6P)2'opo43&)! D=)! >)2! >3J0)2! 0)! 2)&%0'!&(%&4%00()2!2)>%0!>#!1#>)=&!4)!<ã?!D=Pp!1#>)=&!4)!<ã+!(D=31#>)0')*!X3!0%=2!#i%='%02!=0)!'&%323WB)!6>(I!>)!'&3!0)!$%&')&#!D=)!2=&!>)2!>3J0)2!#-#0'!4)2!1#>)=&2!4)!<ã+!)'!4)!<ã?!(D=31#>)0')*!

"%&2D=)!1%=2!#>>)e!4)B#04)&!=0!'&3!p!L\6)>I!1%=2!#>>)e!#=223!4)1%3&!>=3!23J0#>)&!23!>#!$>#J)!p!=0)!6%>%00)! w! >3J0)! 4)! '3'&)! %=! 0%0I! $=32D=)! 6)>>)o63! 0)! 4%3'! (134)BB)0'! $#2! 8'&)! '&3()*! T)J#&4%02!B#30')0#0'!>#!2-0'#\)!4)!>#!B('G%4)*!L0!(6&3'=&)!)\G#=2'31)I!6)>>)o63!)2'!4)!>#!Q%&B)!v!

! +5U

Page 174: Cours VBA débutants.pdf

Function Sortj[Key1], [Order1 As XlSortOrder = xlAscending], [Key2], [Type], [Order2 As XlSortOrder = xlAscending], [Key3], [Order3 As XlSortOrder = xlAscending], [Header As XlYesNoGuess = xlNo], [OrderCustom], [MatchCase], [Orientation As XlSortOrientation = xlSortRows], [SortMethod As XlSortMethod = xlPinYin], [DataOption1 As XlSortDataOption = xlSortNormal], [DataOption2 As XlSortDataOption = xlSortNormal], [DataOption3 As XlSortDataOption = xlSortNormal]k!

g0!6)&'#30!0%BE&)!4)!6)2!#&J=B)0'2!0)!2)&1)0'!D=)!$%=&!>)!'&3!4)2!'#E>)#=\!6&%32(2!%x!$%=&!4)2!'&32! 2$(63#=\!D=)!0%=2!0)!1)&&%02!$#2!4#02!6)!6%=&2I! i)!1#32!4%06!(6&3&)! >#!4(Q303'3%0!4)! >#!B('G%4)!2%=2!>#!Q%&B)!v!

Function Sortj[Key1], [Order1 As XlSortOrder = xlAscending], [Key2], [Order2 As XlSortOrder = xlAscending], [Key3], [Order3 As XlSortOrder = xlAscending], [Header As XlYesNoGuess = xlNo], [MatchCase], [Orientation As XlSortOrientation = xlSortRows]k!

L6&3')!#3023I!0%=2!#>>%02!&)'&%=1)&!'%='!6)!D=)!0%=2!#1%02!1=!$&(6(4)BB)0'*!!")2! #&J=B)0'2! 6%0'3)00)0'! 4P#E%&4! =0! i)=! 4)! '&%32! 6>(2I! 2%=2! >#! Q%&B)! 4P=0! #&J=B)0'!Key! D=3!

6%0'3)0'!>#!$&)B3W&)!6)>>=>)!4)!>#!6>(!6%0')0#0'!=0)!1#>)=&!p!'&3)&!j$#2!=0!'3'&)k!$=32!=0!#&J=B)0'!Order!D=3!4(Q303'!>)!2)02!4=!'&3!j6&%322#0'!%=!4(6&%322#0'k*!!

O%=2!'&%=1%02!)02=3')!=0!#&J=B)0'!Header!D=3!$&(632)!2P3>!-!#!=0)!e%0)!4)!'3'&)!%=!0%0*!/&%-)e!)0!B#!13)3>>)!)\$(&3)06)I!$&)0)e!>PG#E3'=4)!4)!2(>)6'3%00)&!4)2!e%0)2!p!'&3)&!2#02!>3J0)!4)!'3'&)I!1%=2!1%=2!23B$>3Q3)&)e!>P)\32')06)*!

"P#&J=B)0'!MatchCase!)2'!=0!E%%>()0!D=3!$&(632)!23!>)!'&3!4%3'!&)2$)6')&!%=!0%0!>#!6#22)!>%&2D=P%0!'&3!4)2!6G#f0)2!4)!6#&#6'W&)2*!

L0Q30! >P#&J=B)0'! Orientation! 4(')&B30)! >)! 2)02! 4=! '&3*! O%&B#>)B)0'! 3>! #66)$')! 4)=\! 1#>)=&2!jM>/%>=B02! %=!M>T%Y2k!B#32! $%=&! 4)2! &#32%02! 4)! 6%B$&(G)023%0I! %0! ='3>32)! $#&Q%32! >)2! 6%02'#0')2!(D=31#>)0')2!\><%$<%S%''%B!%=!\>")Q'<%T3JG'*!

X3! 1%=2! 0P8')2! $#2! $#&'3! 1%=2! >%E%'%B32)&! p! 6%=$! 4)! '32%003)&I! 1%=2! #>>)e! 1%3&! D=Pp! ='3>32)&!B#30')0#0'!6P)2'!23B$>)!6%BB)!6G%=*!O%=2!1%=>%02!'&3)&!0%'&)!'#E>)#=!2)>%0!>#!1#>)=&!4)!>#!B%-)00)I!$=32!2)>%0!>P%&4&)!4)!<ã+*!Sub TestTri() Dim maplage As Range 'définit une plage contenant tout le tableau With ThisWorkbook.Worksheets("Tri") Set maplage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 7).End(xlUp)) End With 'redéfinit une plage sans ligne de titre Set maplage = maplage.Offset(1).Resize(maplage.Rows.Count - 1) 'voir explication suivant l'exemple maplage.Sort key1:=maplage.Cells(6), order1:=xlAscending, key2:=maplage.Cells(3), order2:=xlAscending, header:=xlNo, Orientation:=xlTopToBottom End Sub

"#! $&)B3W&)! 6G%2)! )2'! 4%06! 2)! J(0(&)&! =0! %Ei)'! T#0J)! 6%0')0#0'! >l)02)BE>)! 4=! '#E>)#=! 4l=0)!B#03W&)!'%='!p!Q#3'!6>#223D=)*!V%=&!23B$>3Q3)&!>)!'&3I!i)!1#32!4(6#>)&!>l%Ei)'!T#0J)!$%=&!)0>)1)&!>#!>3J0)!4)!'3'&)*!V%=&!6)>#!3>!2=QQ3'!4)!4(6#>)&!4l=0)!>3J0)!1)&2!>)!E#2!>#!$>#J)!)2'!4)!43B30=)&!2#!'#3>>)!4l=0)!>3J0)*!L02=3')!4)!D=%3!0%=2!#>>%02!'&3)&*!O%=2!#1%02!4%06!E)2%30!4)!4(Q303&!4)=\!6>(2!4)!'&3I!>#!$&)B3W&)!2=&!>#!B%-)00)!)'!>#!2)6%04)!2=&!>#!6%>%00)!<ã+*!/%BB)!i)!1%=2!>l#3!43'!$>=2!G#='I!>#!4(Q303'3%0!4l=0)!6>(!4)!'&3!6%0232')!p!$#22)&!=0)!$#3&)!4l#&J=B)0'!4%0'!>)!$&)B3)&!)2'!>#!$&)B3W&)!6)>>=>)!6%0')0#0'!=0)!1#>)=&!0l('#0'!$#2!=0!'3'&)!4)!>#!6%>%00)!)'! >)!2)6%04!('#0'! >)!2)02!4=!'&3*!/%BB)!0%=2!#1%02!)0>)1(!$G-23D=)B)0'!>#!>3J0)!4)!'3'&)I!>#!$&)B3W&)!>3J0)!4)!>#!$>#J)!6%0'3)0'!4)2!1#>)=&2*!/%BB)!0%=2!>l#1%02!1=!#=223!$&(6(4)BB)0'I!i)!$)=\!='3>32)&!>#!$&%$&3('(!/)>>2!4)!>l%Ei)'!T#0J)!$%=&!&)01%-)&!=0)!6)>>=>)!$#&'36=>3W&)! )0! ='3>32#0'! =0)! 6%%&4%00()! >30(#3&)*! ")2! 6)>>=>)2! 4)! >#! $&)B3W&)! >3J0)! 1%0'! #1%3&! =0)!6%%&4%00()! 6%B$&32)! )0'&)! +! )'! /%>=B02*/%=0'*! ]#02! 0%'&)! 6#2I! >)2! 4)=\! 6%>%00)2! D=3! 0%=2!30'(&)22)0'!2%0'!>#!23\3WB)!4)!>#!$>#J)I!)'!>#!'&%323WB)*!]%06!>)2!4)=\!6>(2!4)!'&3!2%0'!>#!23\3WB)!)'!>#!'&%323WB)! 4)! >#! $>#J)*! "l#&J=B)0'! _)#4)&! 2)&#! p! \>O%! $=32D=)! 0%=2! #1%02! )0>)1(! >)2! '3'&)2I! )'!F&3)0'#'3%0!1#=4&#! \>/%>=B02!%=! 2%0! (D=31#>)0'! \><%$<%S%''%B*!/)!0l)2'! $#2! $>=2! 6%B$>3D=(!D=)!6)>#*!

! +5,

Page 175: Cours VBA débutants.pdf

SpecialCells K'')0'3%0I!6)!$#22#J)!4)!>l#34)!)0!>3J0)!)2'!=0!2%BB)'!4)!>#!'&#4=6'3%0!&#'(*!")2!)\$>36#'3%02!2%0'!

%=!Q#=22)2!%=!2#02!#=6=0!2)02*!O%=2!#>>%02!1%3&!363!>)!Q%06'3%00)B)0'!&()>!4)!6)'')!B('G%4)I!0)!')0)e!$#2!6%B$')!4)!>l#34)!)0!>3J0)*!

/)'')!B('G%4)!$)&B)'! 4)! &)01%-)&! =0)! 2%=2! $>#J)!4)! 6)>>=>)2! $#&'36=>3W&)2! 2)>%0! >)2! #&J=B)0'2!$#22(2*!])!>#!Q%&B)!v!

Function SpecialCellsjType As XlCellType, [Value As XlSpecialCellsValue]k!As Range!"l#&J=B)0'!Type!$)='!$&)04&)!=0)!4)2!1#>)=&2!2=31#0')2!v!

Constantes Explication

\>/)>><-$)K>>[%&B#'/%043'3%02!!T)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!Q)=3>>)!#-#0'!>)2!B8B)2!&WJ>)2!4)!Q%&B#'!6%043'3%00)>!D=)!>#!6)>>=>)!2=$(&3)=&)!J#=6G)!4)!>#!$>#J)!#$$)>#0')*!/)>>)o63!doit!#1%3&!=0!Q%&B#'!6%043'3%00)>*!!

\>/)>><-$)K>>:#>34#'3%0*!! T)01%3)!'%=')!>)2!6)>>=>)2!4)!>#!$>#J)!#$$)>#0')!#-#0'!=0)!1#>34#'3%0!4(Q303)*!\>/)>><-$)S>#0a2! T)01%3)!'%=')2!>)2!6)>>=>)2!134)2!4)!>#!$>#J)!#$$)>#0')*!

\>/)>><-$)/%BB)0'2! T)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!#$$)>#0')!6%0')0#0'!4)2!6%BB)0'#3&)2*!

\>/)>><-$)/%02'#0'2! T)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!#$$)>#0')!6%0')0#0'!4)2!1#>)=&2!B#32!$#2!4)!Q%&B=>)2!

\>/)>><-$)[%&B=>#2! T)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!#$$)>#0')!6%0')0#0'!4)2!Q%&B=>)2!

\>/)>><-$)"#2'/)>>!

T)01%3)!>#!4)&03W&)!6)>>=>)!4)!>#!Q)=3>>)!D=)>>)!D=)!2%3'!>#!$>#J)!#$$)>#0')*!"#!4)&03W&)!6)>>=>)!0)!6%0'3)0'!$#2!Q%&6(B)0'!=0)!1#>)=&I!)>>)!)2'!4(Q303)!6%BB)!('#0'!>l30')&2)6'3%0!4)!>#!4)&03W&)!>3J0)!='3>32()!)'!4)!>#!4)&03W&)!6%>%00)!='3>32()!

\>/)>><-$)X#B)[%&B#'/%043'3%02!T)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!#$$)>#0')!#-#0'!=0!Q%&B#'!6%043'3%00)>*!

\>/)>><-$)X#B):#>34#'3%0!

X3!>#!$>#J)!#$$)>#0')!0)!6%0'3)0'!D=l=0)!6)>>=>)!#-#0'!=0)!1#>34#'3%0!4(Q303)I!&)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!Q)=3>>)!#-#0'!>)2!B8B)2!6&3'W&)2!4)!1#>34#'3%0*!X30%0!&)01%3)!'%=')2!>)2!6)>>=>)2!4)!>#!$>#J)!#$$)>#0')!#-#0'!>)2!B8B)2!6&3'W&)2!4)!1#>34#'3%0!D=)!>#!6)>>=>)!2=$(&3)=&)!J#=6G)!4)!>#!$>#J)!#$$)>#0')*!

\>/)>><-$):323E>)!T)01%3)!'%=')2!>)2!6)>>=>)2!1323E>)2!4)!>#!$>#J)!#$$)>#0')*!")2!6)>>=>)2!1323E>)2!2%0'!4(Q303)2!6%BB)!'%=')2!6)>>=>)2!4%0'!>#!>3J0)!%=!>#!6%>%00)!0l)2'!$#2!B#2D=()*!

"%&2D=)! >)! '-$)! p! $%=&! 1#>)=&! xlCellTypeConstants! %=! xlCellTypeFormulasI! 1%=2! $%=1)e!$#22)&!=0!#&J=B)0'!%$'3%00)>!:#>=)!D=3!$)='!$&)04&)!=0)!6%B$%23'3%0! jB#2D=)!E30#3&)k!4)2!1#>)=&2!2=31#0')2!v!xlErrors! !T)01%3)!=03D=)B)0'!>)2!6)>>=>)2!4)!>#!2%=2!$>#J)!#QQ36G#0'!=0)!1#>)=&!4l)&&)=&*!xlLogical! !T)01%3)!>)2!6)>>=>)2!4)!>#!2%=2!$>#J)!6%0')0#0'!=0)!1#>)=&!>%J3D=)!j:&#3!%=![#=\k!xlNumbers! !T)01%3)!>)2!6)>>=>)2!4)!>#!2%=2!$>#J)!#QQ36G#0'!=0)!1#>)=&!0=B(&3D=)!xlTextValues! !T)01%3)!>)2!6)>>=>)2!4)!>#!2%=2!$>#J)!#QQ36G#0'!=0)!6G#f0)!4)!6#&#6'W&)!

/G#D=)!Q%32!D=l3>!0l)\32')!$#2!4)!6)>>=>)2!6%&&)2$%04#0')2!#=\!6&3'W&)2!2$(63Q3(2I!L\6)>!>W1)&#!=0)!)&&)=&!&(6=$(&#E>)!+@@,!#-#0'!$%=&!B)22#J)!å!V#2!4)!6)>>=>)2!6%&&)2$%04#0')2!ç*!

! +5N

Page 176: Cours VBA débutants.pdf

")! 6%4)! 2=31#0'! 3>>=2'&)! >)! Q%06'3%00)B)0'! 4)! 6)2! 6%BE30#32%02I! $=32! )QQ#6)! >)2! 4%00()2!0=B(&3D=)2!4=!'#E>)#=!2#02!)QQ#6)&!>)2!Q%&B=>)2*!Sub CleanSpecial() Dim maplage As Range, Feuille As Worksheet Set Feuille = ThisWorkbook.Worksheets("Special") Set maplage = Feuille.Range("A1:G100") Debug.Print maplage.SpecialCells(xlCellTypeFormulas, xlNumbers).Address(False, False) 'G2:G100 On Error Resume Next Debug.Print maplage.SpecialCells(xlCellTypeFormulas, xlTextValues).Address(False, False) 'lève une erreur If Err.Number = 1004 And InStr(1, Err.Description, "correspondante", vbTextCompare) > 0 Then Err.Clear Debug.Print maplage.SpecialCells(xlCellTypeConstants, xlNumbers).Address(False, False) 'A2:F100 Debug.Print maplage.SpecialCells(xlCellTypeConstants, xlTextValues).Address(False, False) 'A1:G1 maplage.SpecialCells(xlCellTypeConstants, xlNumbers).ClearContents End Sub

! +5.

Page 177: Cours VBA débutants.pdf

Discussion technique C#30')0#0'!D=)!0%=2!#1%02!1=!=0)!E%00)!$#&'3)!4=!B%4W>)!%Ei)'!4)!B#03$=>#'3%0!4)2!Q)=3>>)2!4)!

6#>6=>I!0%=2!#>>%02!1%3&!)02)BE>)!D=)>D=)2!$&%E>(B#'3D=)2!6%=&#0')2!4)!>#!$&%J&#BB#'3%0!L\6)>!$%=&!2)!Q#B3>3#&32)&!#1)6!6)'')!$&%J&#BB#'3%0!)'!$%=&!1%3&!>)2!431)&2)2!2%>='3%02!D=P%0!$)='!)0132#J)&!Q#6)!p!=0!$&%E>WB)!$%2(*!

Comprendre Excel 70! Q30)I! >#!$>=2!J&#04)!43QQ36=>'(!4)! >#!$&%J&#BB#'3%0!L\6)>! &)2')!=0)!6%00#322#06)!6%&&)6')!4=!

Q%06'3%00)B)0'!4PL\6)>*!/)>#!$)='!2)BE>)&!2'=$34)!)'!6P)2'!$%=&'#0'!>#!$&3063$#>)!6#=2)!4)2!43QQ36=>'(2!4)!6%06)$'3%0!D=)!>P%0!&)06%0'&)*!V%=&!3>>=2'&)&!6)!$&%$%2I!0%=2!#>>%02!6%BB)06)&!$#&!=0!6>#223D=)!4)!>#!$&%J&#BB#'3%0!L\6)>I!>#!&(6=$(&#'3%0!4P=0!Q36G3)&!#1)6!2=$$&)223%0!4)!>3J0)*!

O%=2!#>>%02!4%06!(6&3&)!=0!6%4)!D=3!%=1&)!=0!Q36G3)&!')\')!4(Q303'!p!>P)\(6='3%0I!D=3!1#!2=$$&3B)&!,!>3J0)2! 2=&! 630D! $=32! D=3! 1#! 30'(J&)&! >)2! >3J0)2! &)2'#0')2! 4#02! >#! Q)=3>>)! P4%00()2P! 4)! 0%'&)! 6>#22)=&!B#6&%*!

/%BB)0q%02!$#&!=0)!#$$&%6G)!6>#223D=)*!Public Sub TraiteFichier() Dim NomFichier As String, ClasseurSource As Workbook, Ligne As Range, compteur As Long NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set ClasseurSource = Application.ActiveWorkbook For Each Ligne In ClasseurSource.Worksheets(1).UsedRange.Rows compteur = compteur + 1 If compteur > 1 Then Ligne.Delete End If If compteur = 5 Then compteur = 0 Next Ligne End Sub

]#02!6)!6%4)I!0%=2!#1%02!4%06!$&%$%2(!p! >P='3>32#')=&!=0)!E%f')!4)! 2(>)6'3%0!4)! Q36G3)&2I!B32! >)!6>#22)=&!%=1)&'!4#02!=0)!1#&3#E>)!%Ei)'!4)!'-$)!`%&aE%%aI!$=32!(6&3'!=0!'&#3')B)0'!4)!2=$$&)223%0!4)!>3J0)2*!"#!$&)B3W&)!$#&'3)!4=!6%4)!0)!$%2)!$#2!4)!$&%E>WB)I!$#&!6%0'&)!>)!6%4)!4)!2=$$&)223%0!4)!>3J0)!1#!)0!$%2)&*!

7>! )2'! $%=&'#0'! i=2')! 4#02! 2%0! 6%06)$'I! $=32D=P3>! 1#! $#&6%=&3&! >#! 6%>>)6'3%0! 4)2! >3J0)2! )'! )0!2=$$&3B)&! D=#'&)! 2=&! 630D*! V%=&'#0'! 3>! )2'! Q%06'3%00)>>)B)0'! Q#=\! $=32D=P3>! 6%0'3)0'! =0)! Q#=')! 4)!$&%J&#BB#'3%0!)'!=0)!#$$&%6G)!)&&%0()!4=!Q%06'3%00)B)0'!4PL\6)>*!

"#! Q#=')!4)! $&%J&#BB#'3%0!0P)2'! $#2! (134)0')*!F0!0)!4%3'! $#2!='3>32)&! >#!B('G%4)!])>)')! 2=&! >)!B)BE&)!4P=0)!6%>>)6'3%0!D=P%0!)2'! )0! '&#30!4P(0=B(&)&*!"P(0=B(&#'3%0!)2'!=0!$#&6%=&2!4)2!B)BE&)2!4P=0)! 6%>>)6'3%0*! X3! %0! 2=$$&3B)! 6)&'#302! 4)! 6)2! B)BE&)2! $)04#0'! >)! $#&6%=&2I! 3>! 0P)\32')! $#2! 4)!J#&#0'3)!D=)! >)!$#&6%=&2!2)!4(&%=>)&#!6%&&)6')B)0'*!L0!>P%66=&&)06)I!2P3>!0P-!#1#3'!D=)!6)'')!)&&)=&I! >)!6%4)! $%=&&#3'! Q%06'3%00)&*! C#32! >#! 4)=\3WB)! )2'! E)#=6%=$! $>=2! J&#1)! $=32D=P)>>)! 0)! $&)04! $#2! )0!6%B$')!>)!Q%06'3%00)B)0'!4PL\6)>*!

d=)!2)!$#22)o'o3>!>%&2D=P%0!2=$$&3B)!=0)!%=!$>=23)=&2!>3J0)2!4#02!L\6)>!|!K=!0%B!4)!>#!6%0'30=3'(!4)!0=B(&%'#'3%0I!>)2!>3J0)2!2%0'!&)B$>#6()2!$#&!>)2!>3J0)2!23'=()2!#=!4)22%=2I!)'!L\6)>!&)6&()!4)2!>3J0)2!)0!Q30!4)!Q)=3>>)!$%=&!D=)!>)!0%BE&)!4)!>3J0)2!4)!>#!Q)=3>>)!&)2')!6%02'#0'*!

! +55

Page 178: Cours VBA débutants.pdf

F&!4#02! 0%'&)! 6%4)I! >%&2! 4)! >P(0=B(&#'3%0I! 0%=2! #>>%02! $#&6%=&3&! >)2! >3J0)2! $#&! 0=B(&%!4P304)\I!6P)2'opo43&)!$#&!0=B(&%!4)!>3J0)*!"%&2D=)!0%=2!#>>%02!$#&!)\)B$>)!2=$$&3B)&!>#!>3J0)!?I!>#!>3J0)!U!1#!2)!&)'&%=1)&!)0!$%23'3%0!?!)'!>#!>3J0)!,!)0!$%23'3%0!?*!"%&2!4)!>#!E%=6>)!2=31#0')!4)!>P(0=B(&#'3%0I!>#!>3J0)!U!1#!8'&)!2=$$&3B()I!B#32!>#!>3J0)!?!1#!8'&)!6%02)&1()!#>%&2!D=P)>>)!#=&#3'!4=!8'&)!2=$$&3B()!#=223*!/)!6%4)!1#!4%06!2=$$&3B)&!=0)!>3J0)!2=&!?!D=#'&)!Q%32!4)!2=3')I!$=32!J#&4)&!4)=\!>3J0)2!)'!#3023!4)!2=3')*!

<%='!6)63!$%=&!43&)!D=)! >P#$$&%6G)!6G%323)!)2'!$#&'36=>3W&)B)0'!B#=1#32)*!T)$&)0%02!4%06!0%'&)!6%06)$'3%0I!$%=&!J(0(&)&!=0)!B('G%4)!#$$>36#E>)!p!'%=2!>)2!6#2!4)!2=$$&)223%0I!6P)2'opo43&)!\!>3J0)2!2=&!0*!

](ip! 0%=2! 0)! 4)1%02! $#2! (0=B(&)&*!O%=2! ='3>32)&%02! 4%06! =0)! E%=6>)! [%&ZO)\'! 6>#223D=)*! X3!0%=2!0)!1%=>%02!$#2!#1%3&!p!$&)04&)!)0!6%B$')!>)!J>322)B)0'!4)2!>3J0)2!)0J)04&(!$#&!>#!2=$$&)223%0I!0%=2!4)1%02!$#&6%=&3&!>#!6%>>)6'3%0!4#02!>P#='&)!2)02*!O%=2!#=&%02!4%06!=0!$#2!0(J#'3Q*!C#32!4#02!6)!6#2I!0%=2!4)1%02!)0132#J)&!>)!6#2!$&%E#E>)!%x!>)!0%BE&)!4)!>3J0)!4=!Q36G3)&!0P)2'!$#2!=0!B=>'3$>)!4)!0*!!

h)!1#32!(6&3&)!6)!6%4)!)'!0%=2!>)!4326=')&%02!$#&!>#!2=3')*!Public Sub TraiteFichier() Dim NomFichier As String, ClasseurSource As Workbook, Lignes As Range, compteur As Long NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set ClasseurSource = Application.ActiveWorkbook With ClasseurSource.Worksheets(1).UsedRange Set Lignes = .Offset(1).Resize(.Rows.Count - 1) End With Call DeleteXSurN(4, 5, Lignes) ClasseurSource.Worksheets(1).UsedRange.Copy Destination:=ThisWorkbook.Worksheets("Donnee").Cells(1, 1) ClasseurSource.Close False End Sub Private Sub DeleteXSurN(ByVal X As Integer, ByVal N As Integer, ByRef Plage As Range) Dim NbLigne As Long, LimSup As Long, compteur As Long Application.ScreenUpdating = False NbLigne = Plage.Rows.Count LimSup = NbLigne \ N If NbLigne = LimSup * N Then LimSup = LimSup - 1 For compteur = LimSup * N + 1 To 1 Step -1 * N Plage.Rows(compteur).Offset(N - X).Resize(X).Delete Application.StatusBar = "lignes " & compteur Next compteur Application.StatusBar = False Application.ScreenUpdating = True End Sub

V%=&!23B$>3Q3)&!>#!4326=223%0I!iP#3!6&((!=0)!$&%6(4=&)!])>)')MX=&O!D=3!2=$$&3B)!>)2!M!4)&03W&)2!>3J0)2!4P=0!J&%=$)!4)!O!>3J0)!2=&!>#!$>#J)!$#22()!)0!#&J=B)0'*!

/)>>)o63!1#!$#&6%=&3&!)0!2)02!301)&2)!>#!$>#J)!$#&!$#2!4)!O!)0!2=$$&3B#0'!>)2!M!4)&03W&)!>3J0)2I!6)!D=3!2P(6&3'!v!Plage.Rows(compteur).Offset(N - X).Resize(X).Delete

L02=3')!4)!D=%3!i)!1#32!6%$3)&!>)2!4%00()2!1)&2!>)!6>#22)=&!B#6&%*!

! +59

Page 179: Cours VBA débutants.pdf

/)! 6%4)! 1#! Q%06'3%00)&! $#&Q#3')B)0'I!B#32! 3>! )2'! )\'&8B)B)0'! >)0'*! V%=&! =0)! 2=$$&)223%0! 4)! ,!>3J0)2!2=&!N!$%=&!=0!Q36G3)&!4)!N@!@@@!>3J0)2I!3>!B)''&#!$>=2!4)!4)=\!B30=')2*!/)>#!13)0'!4=!Q#3'!D=)!>)!$&%6)22=2!4)! 2=$$&)223%0!4PL\6)>!)2'! >=3oB8B)!=0!B(6#032B)! >)0'*!V#&Q%32!6)! '-$)!4)! '&#3')B)0'!)2'!30(13'#E>)I!B#32!2%=1)0'!%0!$)='!6%0'%=&0)&!>)!$&%E>WB)*!

]#02! >P)\)&636)!D=3!0%=2!$&(%66=$)I! 3>!-!#!$>=23)=&2! Q#q%02!4P#66(>(&)&! >)! '&#3')B)0'I! >(JW&)B)0'!43QQ(&)0'!2)>%0!>)!&(2=>'#'!Q30#>!D=)!0%=2!2%=G#3'%02!%E')03&*!L0!)QQ)'I!23!6%BB)!4#02!B%0!)\)B$>)!i)!2%=G#3')! 8'&)! 0%0! 4)2'&=6'3QI! 6P)2'opo43&)! D=)! i)! 0P)0&)J32'&)! $#2! >)2! 6G#0J)B)0'2! 4#02!B%0! 6>#22)=&!2%=&6)I!#>%&2! >)!$&%E>WB)!#!('(!$&32!p! >P)01)&2*!L0!)QQ)'I! >)!E='!0P)2'!4#02!6)!6#2!$#2!4)!2=$$&3B)&!M!>3J0)2! 2=&! OI! B#32! 4)! &(6=$(&)&! OoM! >3J0)2! 2=&! O*! L0! $%2#0'! >)! $&%E>WB)! #3023I! i)! $)=\! ='3>32)&!$>=23)=&2!6%4)2!43QQ(&)0'2*!")!$>=2!23B$>)!2)&#3'!#>%&2!4P(6&3&)!v!Public Sub TraiteFichier1() Dim NomFichier As String, ClasseurSource As Workbook, Lignes As Range, compteur As Long Dim lgTime As Long NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set ClasseurSource = Application.ActiveWorkbook For compteur = 2 To ClasseurSource.Worksheets(1).UsedRange.Rows.Count Step 5 ClasseurSource.Worksheets(1).UsedRange.Rows(compteur).Copy Destination:=ThisWorkbook.Worksheets("Donnee").Cells((compteur - 2) / 5 + 1, 1) Next ClasseurSource.Close False End Sub

]#02! 6)! 6%4)I! 0%=2!0)! >32%02!D=P=0)! >3J0)! 2=&!N!D=)!0%=2! 30'(J&%02!43&)6')B)0'!4#02! >#! Q)=3>>)!4%00()!4=!6>#22)=&!B#6&%*!/)!6%4)!1#!)013&%0!4)=\! Q%32!$>=2!13')!D=)! >)!$&(6(4)0'I! 6)!D=3!)2'!E3)0!B#32!0%=2!$%=1%02!)06%&)!>#&J)B)0'!#B(>3%&)&*!L0!)QQ)'I! >)!6%4)!$&(6(4)0'!)2'!)06%&)!#22)e!>)0'!6#&!0%=2!='3>32%02!=0!#='&)!$&%6)22=2!#22)e!>%=&4I!>)!6%$3)&!6%>>)&*!F&!4#02!0%'&)!6#2I!0%=2!1%=>%02!#QQ)6')&!>)2!1#>)=&2!4=! Q36G3)&! 2%=&6)!4#02! >)!6>#22)=&!B#6&%I!)'!$%=&!6)>#I!0%=2!$%=1%02!='3>32)&! >P#QQ)6'#'3%0!43&)6')!4)2!$&%$&3('(2!:#>=)!6%BB)!0%=2!>P#1%02!1=!$&(6(4)BB)0'*!O%=2!$%=&&3%02!(6&3&)!v!Public Sub TraiteFichier2() Dim NomFichier As String, ClasseurSource As Workbook, CellSource As Range, CellCible As Range, compteur As Long, NbCol As Integer NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set ClasseurSource = Application.ActiveWorkbook Set CellSource = ClasseurSource.Worksheets(1).Cells(2, 1) Set CellCible = ThisWorkbook.Worksheets("Donnee").Cells(1, 1) NbCol = ClasseurSource.Worksheets(1).UsedRange.Columns.Count For compteur = 0 To ClasseurSource.Worksheets(1).UsedRange.Rows.Count \ 5 CellCible.Offset(compteur).Resize(, NbCol).Value = CellSource.Offset(compteur * 5).Resize(, NbCol).Value Next ClasseurSource.Close False End Sub

! +5;

Page 180: Cours VBA débutants.pdf

V%=&! '&#3')&! >)! B8B)! Q36G3)&! 4)! N@! @@@! >3J0)2I! 6)! 6%4)! B)''&#! B%302! 4)! N! 2)6%04)2I! 2%3'! =0)!)\(6='3%0!?N!Q%32!$>=2!&#$34)!D=)!>#!$&)B3W&)!2%>='3%0!)0132#J()*!

/)$)04#0'!6)'')!#$$&%6G)!0)!&(2%='!$#2! Q%&6(B)0'! '%=2! >)2!$&%E>WB)2*!F0!$%=&&#3'!$#&Q#3')B)0'!3B#J30)&!D=)!6)&'#302!Q36G3)&2!$%22W4)0'!$>=2!4)!.NNU.!>3J0)2I!%=!1%=>%3&!(6&#2)&!>)!Q36G3)&!2%=&6)!#1)6!=0!Q36G3)&!0)!6%0')0#0'!$>=2!D=P=0)!>3J0)!2=&!N*!")!6%4)!2=31#0'!1#!$%=1%3&!>3&)!=0!Q36G3)&!#-#0'!$>=2!4)!>3J0)!D=)!>)!B#\3B=B!4)!>3J0)2!L\6)>!)'!1#!6&()&!=0!Q36G3)&!2%=&6)!&(4=3'*!Public Sub TraiteFichier3() Dim NomFichier As String, FichierReduit As String, CellCible As Range, compteur As Long, Recup As String NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub FichierReduit = Left(NomFichier, InStrRev(NomFichier, ".") - 1) & ".red" Open NomFichier For Input As #1 Open FichierReduit For Output As #2 Line Input #1, Recup Line Input #1, Recup Set CellCible = ThisWorkbook.Worksheets("Donnee").Cells(1, 1) Do Until EOF(1) Line Input #1, Recup CellCible.Offset(compteur).Value = Recup Print #2, Recup compteur = compteur + 1 Line Input #1, Recup Line Input #1, Recup Line Input #1, Recup Line Input #1, Recup Loop Close #1 Close #2 CellCible.Resize(ThisWorkbook.Worksheets("Donnee").Rows.Count).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, Tab:=True End Sub

S3)0!D=)!6)!6%4)!2%3'!$>=2!r=031)&2)>r!D=)!>)!$&(6(4)0'I!3>!0P)0!)2'!$#2!B%302!$>=2!&#$34)*!/%BB)!0%=2!1)0%02!4)!>)!1%3&I!3>!0P)2'!$#2!'%=i%=&2!(134)0'!4)!2#1%3&!D=)>>)!B('G%4)!6G%323&*!!

Recherche de plage 7>!2P#J3'! >p!4P=0!J&#04!6>#223D=)!4)!>#!$&%J&#BB#'3%0!L\6)>I! >#!&)6G)&6G)!4)2!$>#J)2!4)!4%00()2*!

"%&2D=P%0!'&#1#3>>)!2=&!4)2!Q36G3)&2!)\')&0)2I!3>!)2'!#22)e!Q&(D=)0'!D=P%0!0)!6%00#322)!$#2!>)!0%BE&)!4)!>3J0)2!)'!%=!4)!6%>%00)2!4=!Q36G3)&*!K1#0'!B8B)!4)!2#1%3&!D=)>>)!B('G%4)!6G%323&I!0%=2!4)1%02!4(ip!4(Q303&!6)!D=P)2'!=0)!$>#J)!4)!4%00()2*!O%=2!#>>%02!6%0'30=)&!p!'&#1#3>>)&!2=&!0%'&)!Q36G3)&!4P#6D=323'3%0I!B#32! 6P)2'! Q%04#B)0'#>)B)0'! >#!B8B)! 6G%2)! $%=&! '%=2! >)2! Q36G3)&2! )\')&0)2! 6%0')0#0'! 4)2! E>%62! 4)!4%00()2*!

]#02! >)! 6#2! 4P=0! Q36G3)&! 4P#6D=323'3%0I! >#! $>#J)! 4)! 4%00()2! 6P)2'! =0)! B#'&36)! &)6'#0J=>#3&)!6%0')0#0'!'%=2!>)2!$%30'2!4P#6D=323'3%0*!b(0(&#>)B)0'!0%=2!0)!6%00#322%02!03!>)!0%BE&)!4)!>3J0)I!03!>)!0%BE&)!4)!6%>%00)2I!B#32!=03D=)B)0'!>)2!2($#&#')=&2!$)&B)''#0'!>#!&)432'&3E='3%0*!!

"#!$&)B3W&)!D=)2'3%0!6P)2'!6%BB)!$%=&!>)!J&=-W&)I!#1)6!%=!2#02!'&%=2*!X%3'!%0!6%0234W&)!D=P3>!0)!$)='!$#2!-!#1%3&!4)!6)>>=>)2!134)2!4#02!>#!$>#J)I!2%3'!3>!$)='!-!)0!#1%3&*!

L\6)>! $&%$%2)! 4)2! B('G%4)2! $%=&! 6G)&6G)&! >#! 4)&03W&)! 6)>>=>)! 4P=0)! $>#J)! 4#02! >)2! 4)=\! 6#2*!/%BB)0q%02!$#&!>)!$>=2!23B$>)I!>)!6#2!2#02!'&%=*!

! +9@

Page 181: Cours VBA débutants.pdf

V%=&!$%=1%3&!4(Q303&!=0)!$>#J)!4)!4%00()2I!3>!Q#='!(134)BB)0'!$%=1%3&!#'')304&)!Q#63>)B)0'!=0)!4)2!6)>>=>)2!4)! >#!$>#J)*!]#02!0%2!Q36G3)&2!4P#6D=323'3%0I!6G#D=)!6%>%00)!4)!4%00()2!p!=0! '3'&)I! 3>!)2'!4%06! #22)e! 23B$>)! 4P#>>)&! &)6G)&6G)&! >)! '3'&)*! L02=3')! 4)! D=%3! 3>! 1#! Q#>>%3&! #>>)&! 6G)&6G)&! >#! 4)&03W&)!6)>>=>)!4)!>#!6%>%00)I!6P)2'opo43&)!>#!4)&03W&)!6)>>=>)!0%0!134)*!Public Sub CherchePlage1() Dim NomFichier As String, FeuilleSource As Worksheet, Plage As Range NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set FeuilleSource = Application.ActiveWorkbook.Worksheets(1) With FeuilleSource Set Plage = .Cells.Find("N_INS") If Not Plage Is Nothing Then Set Plage = .Range(Plage, Plage.End(xlDown)) Else Set Plage = Application.InputBox("Sélectionnez la plage du régime", Type:=8) End If End With MsgBox Plage.Address End Sub

h=2D=)!>p!#=6=0)!43QQ36=>'(!#$$#&)0')I!2#=Q!2P3>!)\32')!=0)!6)>>=>)!6%0')0#0'! >)! ')\')!OÖ7OX!B#32!D=)!>)2!6)>>=>)2!4)!>#!B8B)!6%>%00)!2%0'!134)2*!7>!2=QQ3'!4)!')2')&!>#!6)>>=>)!3BB(43#')B)0'!#=!4)22%=2!$%=&!#1%3&!=0)!#$$&%6G)!P=031)&2)>>)P*!X3!>#!$>#J)!)2'!2)02()!0)!$#2!6%0')03&!4)!Q%&B=>)2I!6%BB)!4#02!>)!6#2!4P=0!Q36G3)&!4P#6D=323'3%0I!%0!$)='!#=223!&)2'&)304&)!>#!$>#J)!p!>P#34)!4)!X$)63#>/)>>2!6%BB)!4#02!>P)\)B$>)!63o4)22%=2!v!Public Sub CherchePlage1() Dim NomFichier As String, FeuilleSource As Worksheet, Plage As Range NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set FeuilleSource = Application.ActiveWorkbook.Worksheets(1) With FeuilleSource Set Plage = .Cells.Find("N_INS") If Not Plage Is Nothing Then Set Plage = .Range(Plage, Plage.End(xlDown)).SpecialCells(xlCellTypeConstants) Else Set Plage = Application.InputBox("Sélectionnez la plage du régime", Type:=8) End If End With MsgBox Plage.Address End Sub

F0!$)='!(134)BB)0'!&(6=$(&)&!2=&!=0!$&3063$)!#22)e!23B3>#3&)!4)2!$>#J)2!4)!$>=23)=&2!6%>%00)2*!/)>#!Q%06'3%00)!#=223!$%=&!>)2!$>#J)2!)0!>3J0)2I!3>!2=QQ3'!4)!6G#0J)&!>P#&J=B)0'!4)!>#!$&%$&3('(!L04*!

! +9+

Page 182: Cours VBA débutants.pdf

])!>#!B8B)!Q#q%0I!%0!$)='!#=223!6%02'&=3&)!4)2!$>#J)2!4326%0'30=)2!p!>P#34)!4)!>#!B('G%4)!g03%0I!2%3'! )0! 6%00#322#0'! >#! 1#>)=&! 4=! 4(6#>#J)! 4P=0)! $>#J)! $#&! &#$$%&'! p! =0)! $>#J)! 4(')&B30()I! 2%3'! $#&!&)6G)&6G)! 2=66)2231)*! V#&! )\)B$>)I! i)! $)=\! 6%02'&=3&)! =0)! $>#J)! D=3! &)01)&&#! >)2! 6%>%00)2! G)=&)I!OÖ7OXI!/FgV"LÖ7OX!)'!VKVÖ7OX!D=)>>)!D=)!2%3'!>)=&!$%23'3%0!4#02!>#!Q)=3>>)*!Public Sub PlageDiscontinue() Dim NomFichier As String, NomColonne As String, compteur As Long Dim FeuilleSource As Worksheet, tmpPlage As Range, DiscPlage As Range NomFichier = Application.GetOpenFilename("Fichier Morphee (*.0*), *.0*", , "Fichier d'acquisition") If StrComp(NomFichier, "Faux", vbTextCompare) = 0 Then Exit Sub Application.Workbooks.OpenText Filename:=NomFichier, StartRow:=2, DataType:=xlDelimited, Tab:=True, DecimalSeparator:="." Set FeuilleSource = Application.ActiveWorkbook.Worksheets(1) With FeuilleSource For compteur = 1 To 4 NomColonne = Choose(compteur, "heure", "n_ins", "couple_ins", "pap_ins") Set tmpPlage = .Cells.Find(What:=NomColonne, MatchCase:=False) If Not tmpPlage Is Nothing Then Set tmpPlage = .Range(tmpPlage, tmpPlage.End(xlDown)).SpecialCells(xlCellTypeConstants) If Not DiscPlage Is Nothing Then Set DiscPlage = Application.Union(DiscPlage, tmpPlage) Else Set DiscPlage = tmpPlage End If Else MsgBox "Colonne " & UCase(NomColonne) & " non trouvée" End If Next compteur End With MsgBox DiscPlage.Address End Sub

:%=2! 0%')&)e! D=)! i)! 0P#3! $#2! #E%&4(! >#! $&#'3D=)! $%=&'#0'! (134)0')! D=3! 6%0232')&#3! p! ')2')&! >)2!6)>>=>)2! 2=66)2231)B)0'!4#02!=0)! (0=B(&#'3%0! i=2D=Pp! #'')304&)!=0)! 6)>>=>)! 134)*!g0)! &)6G)&6G)!D=3!2)&#3'!23B3>#3&)!p!v! With FeuilleSource Set Plage = .Cells.Find("N_INS") For Each MaCell In Plage.EntireColumn.Cells If IsEmpty(MaCell.Value) Then Set Plage = .Range(Plage, MaCell.Offset(-1)) Exit For End If Next End With

](ip!$#&6)!D=)!6)!6%4)!6%0'3)0'!=0!S=JI!4#02!>)!2)02!%x!>)!6%4)!1#!$>#0')&!23!>#!6)>>=>)!6%0')0#0'!OÖ7OX!0P)2'!$#2!4#02! >#!$&)B3W&)! >3J0)I!B#32!$>=2!J(0(&#>)B)0'!$#&6)!D=)! >)2!6%4)2!4P(0=B(&#'3%02!2%0'!)\'&8B)B)0'! >)0'2*! h)!0P='3>32)&#3!$#2!0%0!$>=2!4)!E%=6>)2![%&ZO)\'!6>#223D=)!$%=&! >)2!B8B)2!$&%E>WB)2!4)!>)0')=&*!

K''#D=%02! B#30')0#0'! >)! 6#2! =0! $)=! $>=2! 6%B$>)\)! 4)2! $>#J)2! p! '&%=2! (1)0'=)>2I! 6P)2'opo43&)!$%=1#0'! 6%0')03&! 4)2! 6)>>=>)2! 134)2*!]#02! 6)! 6#2! 3>! 0P)2'! $>=2! $%223E>)! 4P='3>32)&! >#!B('G%4)!L04! )0!4(Q3>#0'! 1)&2! >)!E#2! j%=!1)&2! >#!4&%3')!$%=&! >)2! >3J0)2kI! 6#&!L04!1#! 2P#&&8')&! p! >#! 6)>>=>)!$&(6(4#0'! >#!$&)B3W&)!6)>>=>)!134)!)'!>#!$>#J)!0)!6%0'3)04&#!$#2!>)2!1#>)=&2!2=31#0')2*!

! +9?

Page 183: Cours VBA débutants.pdf

V#&!6%0'&)!3>!)2'!#22)e!23B$>)!4)!$#&'3&!1)&2!>)!E#2!$%=&!#>>)&!6G)&6G)&!>#!$&)B3W&)!6)>>=>)!0%0!134)!)0!&)B%0'#0'*!V%=&!D=)!6)'')!#$$&%6G)!Q%06'3%00)!p!'%='!6%=$I!3>!Q#='!#'')304&)!>#!4)&03W&)!6)>>=>)!4)!>#!6%>%00)!j%=!4)! >#! >3J0)k! ')2')&! 23!)>>)!)2'!134)!)'!#$$)>)&!L04!1)&2! >)!G#='! j%=!1)&2! >#!J#=6G)k! >)!6#2!(6G(#0'*!V#&!)\)B$>)!v!Public Sub CherchePlage2() Dim NomFichier As String, FeuilleSource As Worksheet Dim FirstCell As Range, LastCell As Range, Plage As Range Set FeuilleSource = ThisWorkbook.Worksheets(1) With FeuilleSource Set FirstCell = .Cells(1, 5) Set LastCell = .Cells(.Rows.Count, 5) If IsEmpty(LastCell.Value) Then Set LastCell = LastCell.End(xlUp) End If Set Plage = .Range(FirstCell, LastCell) End With MsgBox Plage.Address End Sub

"P#1#0'#J)!4)!6)'')! ')6G03D=)!)2'!D=P)>>)! Q%06'3%00)!4#02! '%=2! >)2! 6#2I! 2#=Q! 23! >#!$>#J)!0P)2'!$#2!4(>3B3'()!$#&!4)2!6)>>=>)2!134)2*!

Recherche de valeur "#!&)6G)&6G)!4)!1#>)=&!$)='!2)BE>)&!#22)e!'&313#>)!4#02!>P#E2%>=I!$%=&'#0'!)>>)!$)='!13')!2)!&(1(>)&!

$&%E>(B#'3D=)! 2)>%0! >)2! 6#2*! L0! )QQ)'I! )0! $&)B3W&)! #0#>-2)I! %0! #! '%=i%=&2! ')04#06)! p! $)02)&! D=)! >#!B('G%4)![304!6%&&)6')B)0'!='3>32()! &($%04!p! '%=2! >)2!$&%E>WB)2I!%&! ')>!0P)2'!$#2! >)!6#2*!"#!B('G%4)![304!$&(2)0')!$>=23)=&2!306%01(03)0'2*!

L>>)! $)='! 8'&)! 2)023E>)! #=! '-$)! 4)! 4%00()2I! #3023! =0! 6%4)! 4)! &)6G)&6G)! 4)! 4#')! $)='!(6G%=)&!23!>#!4#')!)2'!2%=2!Q%&B)!4)!6G#f0)!%=!2%=2!Q%&B)!4)!4#')!

L>>)!$)='!8'&)!>3B3'()!23!>#!1#>)=&!6G)&6G()!#$$#&#f'!4)!0%BE&)=2)2!Q%32I!2)>%0!>#!Q%&B)!4=!&(2=>'#'!D=P%0!2%=G#3')!&)01%-)&*!

L>>)!)2'!2%=1)0'!#22)e!>)0')*!7>!0)!Q#='!$#2!$%=&!#='#0'!>#!B($&32)&I!)>>)!&($%04!6%&&)6')B)0'!p!>#!$>=$#&'!4)2!6#2I!)06%&)!Q#='!3>!

>#!B#03$=>)&!6%&&)6')B)0'*!

! +9U

Page 184: Cours VBA débutants.pdf

V%=&!1%3&!>)2!431)&2)2!2%>='3%02!)0132#J)#E>)2I!&)$#&'%02!4P=0!)\)B$>)!6>#223D=)*!

!7>! 0P-! #! $#2! 4)! 2)02! #=\! )\)B$>)2! D=)! i)! 1#32! $&)04&)I! 6)=\o63! 2%0'! i=2')2! 4)2! )\)&636)2! 4)!

B#03$=>#'3%02*!O%=2!1%=>%02!&(6=$(&)&!>P)02)BE>)!4)2!6)>>=>)2!4)!>#!$>#J)!4)!4%00()2!D=3!6%0'3)00)0'!>#!1#>)=&!

?@*!"#!$&)B3W&)!6G%2)!p!Q#3&)!J(0(&#>)B)0'!)2'!4)!2#1%3&!23!6)>>)o63!)\32')!#=!B%302!=0)!Q%32!4#02!>#!

$>#J)! 4)! &)6G)&6G)*! L02=3')! 4)! D=%3! 0%=2! #>>%02! 6G)&6G)&! p! &)J&%=$)&! '%=')2! >)2! 6)>>=>)2! D=3!6%0'3)00)0'! 6)'')! 1#>)=&! 4#02! =0! %Ei)'! T#0J)*! O%=2! ='3>32)&%02! $%=&! 6)>#! =0)! Q%06'3%0! >#! $>=2!=031)&2)>>)!$%223E>)*!Public Sub TestRecherche() Dim MaPlage As Range, PlageReponse As Range, Zone As Range, Valeur As Variant Dim Message As String Valeur = 20 Set MaPlage = ThisWorkbook.Worksheets(1).UsedRange Set PlageReponse = PlageValeur(20, MaPlage) If Not PlageReponse Is Nothing Then For Each Zone In PlageReponse.Areas Message = Message & Zone.Address(False, False) & vbNewLine Next Else Message = "La valeur " & Valeur & " n'existe pas dans la plage " & MaPlage.Address(False, False) End If MsgBox Message End Sub

! +9,

Page 185: Cours VBA débutants.pdf

Public Function PlageValeur(ByVal ValeurCherchee As Variant, ByVal PlageRecherche As Range) As Range Dim TrouveCell As Range, PremAdresse As String If Application.WorksheetFunction.CountIf(PlageRecherche, ValeurCherchee) = 0 Then Exit Function Set TrouveCell = PlageRecherche.Find(What:=ValeurCherchee, LookAt:=xlWhole, MatchCase:=False) PremAdresse = TrouveCell.Address Set PlageValeur = TrouveCell Do Set TrouveCell = PlageRecherche.FindNext(TrouveCell) Set PlageValeur = Application.Union(PlageValeur, TrouveCell) Loop Until TrouveCell.Address = PremAdresse End Function

/)!D=3!4#02!0%'&)!)\)B$>)!&)01)&&#!v!

!/)!6%4)!)2'!&)>#'31)B)0'!)QQ36#6)!2#=Q!23!>#!1#>)=&!#$$#&#f'!4#02!$>=23)=&2!B3>>3)&2!4)!6)>>=>)2*!O%=2! $%=&&3%02! 6)$)04#0'! 6%06)1%3&! =0)! #='&)! #$$&%6G)! #22)e! 43QQ(&)0')I! B#32! 0)'')B)0'! $>=2!

&#$34)! '&#1#3>>#0'! )>>)! $#&! >P(>3B30#'3%0! 4)! 6)>>=>)2*! L0! )QQ)'I! >#! B('G%4)! /%>=B0]3QQ)&)06)2! $#&!)\)B$>)!$)&B)'!4)! '&%=1)&! '%=')2! >)2!6)>>=>)2!4P=0)!6%>%00)!0)!6%0')0#0'!$#2! >#!1#>)=&!4)! >#!6)>>=>)!4(23J0()*!F&! $#&! )\6>=23%0I! 6)>#! &)13)0'! #=!B8B)!D=)! >#! &)6G)&6G)!4)! 1#>)=&*!O%=2!$%=&&3%02! 4%06!(6&3&)!=0)!Q%06'3%0!')>>)!D=)!v!Public Function PlageValeur1(ByVal ValeurCherchee As Variant, ByVal PlageRecherche As Range) As Range

! +9N

Page 186: Cours VBA débutants.pdf

Dim Colonne As Range, TrouveCell As Range, NotEqual As Range If Application.WorksheetFunction.CountIf(PlageRecherche, ValeurCherchee) = 0 Then Exit Function For Each Colonne In PlageRecherche.Columns If Application.WorksheetFunction.CountIf(Colonne, ValeurCherchee) > 0 Then Set TrouveCell = Colonne.Find(What:=ValeurCherchee, LookAt:=xlWhole, MatchCase:=False) Set NotEqual = Colonne.ColumnDifferences(TrouveCell) NotEqual.EntireRow.Hidden = True If PlageValeur1 Is Nothing Then Set PlageValeur1 = Colonne.SpecialCells(xlCellTypeVisible) Else Set PlageValeur1 = Application.Union(PlageValeur1, Colonne.SpecialCells(xlCellTypeVisible)) End If NotEqual.EntireRow.Hidden = False End If Next Colonne End Function

L134)BB)0'!6)!6%4)!)2'!=0!$)=!('&#0J)*!/%BB)0'!Q%06'3%00)o'o3>!|!h)!1#32!'&#1#3>>)&!)0!6%>%00)I!B#32!4#02!>P#E2%>=!3>!Q#=4&#3'!4(')6')&!>#!43B)023%0!>#!B%302!J&#04)!

$%=&!'&#1#3>>)&!4#02!6)!2)02*!")!6%4)!$#&6%=&2!>)2!6%>%00)2!4)!>#!$>#J)!4)!&)6G)&6G)I!p!6G#D=)!6%>%00)!3>!1(&3Q3)!2P3>!)\32')!#=!B%302!=0)!Q%32!>#!1#>)=&!6G)&6G()!4#02!>#!6%>%00)*!X3!')>!)2'!>)!6#2I!3>!#$$)>>)!>#!B('G%4)! /%>=B0]3QQ)&)06)2! D=3! &)01%3)! >#! $>#J)! 4)! '%=')2! >)2! 6)>>=>)2! 0)! 6%0')0#0'! $#2! >#! 1#>)=&!6G)&6G()*!7>!B#2D=)!#>%&2!6)'')!$>#J)!)'!&(6=$W&)!>#!$>#J)!4)!6)>>=>)2!1323E>)!D=3!$#&!>#!Q%&6)!4)2!6G%2)2!6%0'3)00)0'! >#! 1#>)=&! 6G)&6G()*! 7>! &)2'#=&)! )02=3')! >#! 1323E3>3'(! 4)2! 6)>>=>)2*!S3)0!D=)! 6=&3)=2)I! 6)'')!B('G%4)!4)!&)6G)&6G)!)2'!)\'&8B)B)0'!&#$34)*!

/)2! 4)=\! B('G%4)2! 0P)0! %0'! $#2! B%302! =0! 306%01(03)0'I! )>>)2! 0)! Q%06'3%00)0'! D=)! $%=&! >#!&)6G)&6G)!4P=0)!1#>)=&*!X3!%0!&)6G)&6G)!$>=23)=&2!1#>)=&2I!=0)!$>#J)!4)!1#>)=&I!=0)!30(J#>3'(!)'!#3023!4)!2=3')I!q#!0)!B#&6G)!$>=2*!

O%=2! #>>%02! 4%06! '&#1#3>>)&! #1)6! =0)!B('G%4)! E)#=6%=$! $>=2! $=322#0')! D=3! $)&B)'! 4)! J(&)&! 4)!0%BE&)=\!6#2!4)!&)6G)&6G)I!>)!Q3>'&#J)*!:%=2!#>>)e!1%3&!D=)!4#02!>)!$&3063$)I!6P)2'!>#!B8B)!6G%2)!D=)!>)!6%4)!$&(6(4)0'*!

7>!)\32')!=0)!B('G%4)!4)!Q3>'&#J)!#1#06()!E)#=6%=$!$>=2!$=322#0')!D=)!0%=2!0P='3>32)&%02!$#2! 363!6#&!)>>)!)2'!=0!$)=!6%B$>)\)I!0%=2!0%=2!6%0')0')&%02!4P='3>32)&!>#!B('G%4)!K='%[3>')&!D=3!4(ip!4)1&#3'!&($%04&)!p!E3)0!4)2!#'')0')2*!

! +9.

Page 187: Cours VBA débutants.pdf

/%BB)0q%02!$#&!>)!6#2!34)0'3D=)!4)!>#!&)6G)&6G)!4)!1#>)=&*!Public Function PlageValeur2(ByVal ValeurCherchee As Variant, ByVal PlageRecherche As Range) As Range Dim Colonne As Range, TrouveCell As Range, NotEqual As Range If Application.WorksheetFunction.CountIf(PlageRecherche, ValeurCherchee) = 0 Then Exit Function For Each Colonne In PlageRecherche.Columns If Application.WorksheetFunction.CountIf(Colonne, ValeurCherchee) > 0 Then Colonne.AutoFilter 1, ValeurCherchee 'si ligne de titre PlageRecherche.Cells(1).EntireRow.Hidden = True If PlageValeur2 Is Nothing Then Set PlageValeur2 = Colonne.SpecialCells(xlCellTypeVisible) Else Set PlageValeur2 = Application.Union(PlageValeur2, Colonne.SpecialCells(xlCellTypeVisible)) End If Colonne.AutoFilter 'si ligne de titre PlageRecherche.Cells(1).EntireRow.Hidden = False End If Next Colonne End Function

K!$#&'!>)!Q#3'!4)!B#2D=)&!>#!>3J0)!4)!'3'&)!$%=&!0)!$#2!6%B$'#E3>32)&!4)!B#=1#32)2!6)>>=>)2I!6)!6%4)!)2'! '%='! p! Q#3'! 23B3>#3&)! #=! $&(6(4)0'*! "P#1#0'#J)! 4)! 6)'')! ')6G03D=)! )2'! D=)! 2#02!B%43Q36#'3%0I! )>>)!$)&B)'!4)2!&)6G)&6G)2!E)#=6%=$!$>=2!(1%>=()2*!L0!)QQ)'I!$%=&!&)6G)&6G)&!>)2!1#>)=&2!2=$(&3)=&)2!p!?@I!3>! 2=QQ3'!4)!$#22)&! 6%BB)!#&J=B)0'! rz?@r!p! >#! Q%06'3%0*!F0!$)='!4P#3>>)=&2! #>>)&!$>=2! >%30!$=32D=P%0!$)='!#=223!$#22)&!=0!6&3'W&)!4)!&)6G)&6G)!4)!6G#f0)!4=!'-$)!r�702r!$%=&!'%=')2!>)2!6G#f0)2!Q30322#0'!$#&!P302P*!!

Autres recherches V%=&!Q303&!#1)6!>)2!&)6G)&6G)2I!0%=2!#>>%02!0%=2!>31&)&!p!=0!$)'3'!)\)&636)!4)!2'->)!#B=2#0'I!$%=&!

1%3&!)0!D=%3!>#!6%06)$'3%0!4P=0!$&%J&#BB)!4($)04!4)!>#!Q#q%0!4)!6%06)$'=#>32)&!>)2!$&%E>WB)2!B#32!#=223!4)!>#!E%00)!6%00#322#06)!4=!B%4W>)!%Ei)'*!

/%BB)0q%02!$#&!(6&3&)!>)!6%4)!2=31#0'!v!Public Sub DisperseStyle() Dim MinRowCol As Long, MaxCol As Long, MaxRow As Long Dim NumCol As Long, NumRow As Long, compteur As Long MinRowCol = 1 MaxCol = 256 MaxRow = 65536 Randomize For compteur = 1 To 100 NumCol = Int((MaxCol - MinRowCol + 1) * Rnd) + MinRowCol NumRow = Int((MaxRow - MinRowCol + 1) * Rnd) + MinRowCol ThisWorkbook.Worksheets(1).Cells(NumRow, NumCol).Font.Bold = True Next compteur End Sub

"#!Q%06'3%0!T#04%B3e)!#6'31)!>)!J(0(&#')=&!4)!0%BE&)!#>(#'%3&)*!/)!6%4)!1#!B)''&)!)0!J&#2!>#!$%>36)!4)!+@@!6)>>=>)2!#>(#'%3&)B)0'!4#02!>#!Q)=3>>)*!!

! +95

Page 188: Cours VBA débutants.pdf

C#30')0#0'!0%=2!#>>%02!4)1%3&!(6&3&)!=0)!$&%6(4=&)!D=3!&)'&%=1)!2)2!6)>>=>)2*!"P#$$&%6G)!Q%&B)>>)!)2'!#22)e! 23B$>)I! 3>! 2=QQ3'!4)!$#&6%=&3&! >P)02)BE>)!4)2!6)>>=>)2!)'!4)! ')2')&! >#!$%>36)!4)!6#&#6'W&)*!V#&!)\)B$>)!v!Public Sub RechercheStyle1() Dim MaCell As Range, Plage As Range, MaFeuille As Worksheet Set MaFeuille = ThisWorkbook.Worksheets(1) For Each MaCell In MaFeuille.Cells If MaCell.Font.Bold = True Then If Plage Is Nothing Then Set Plage = MaCell Else Set Plage = Application.Union(Plage, MaCell) End If End If Next MaCell Plage.Select End Sub

/)!6%4)!)2'!304326='#E>)!4#02!2%0!Q%06'3%00)B)0'!23!6)!0P)2'!2=&!=0!$%30'I!3>!)2'!#E%B30#E>)B)0'!>)0'*! X=&! =0! $%2')! #22)e! &(6)0'I! 3>! >=3! Q#=4&#! $>=2! 4)! '&%32! B30=')2! $%=&! &)01%-)&! >#! $>#J)! 4)2! +@@!6)>>=>)2*!

L2'o3>!$%223E>)!4P#66(>(&)&!6)!6%4)I!)'!23!%=3!6%BB)0'!|!X3!1%=2!1%=2!&#$$)>)e!6)!D=)!0%=2!#1%02!43'!$%=&!>)2!$&%$&3('(2!4)!>P%Ei)'!T#0J)I!1%=2!#1)e!$)='!

8'&)!>#!2%>='3%0*!L0!)QQ)'I!=0)!$>#J)!&)01%3)!>#!1#>)=&!4)!>#!$&%$&3('(!23!)>>)!)2'!6%BB=0)!p!'%=')2!>)2!6)>>=>)2! 4)! >P%Ei)'! T#0J)! )'! =0)! 1#>)=&! $#&'36=>3W&)! 23! 0%0*! /)! D=3! 1)='! 43&)! D=)! 23! i)! $#&6%=&2!>P)02)BE>)!4)2!>3J0)2!4)!>#!Q)=3>>)I!>#!>3J0)!&)01)&&#![#>2)!23!#=6=0)!4)2!6)>>=>)2!0P#!2#!$%>36)!)0!J&#2!)'!O=>>! 23! )>>)! 6%0'3)0'! #=! B%302! =0)! 6)>>=>)! )0! b&#2*! L0! #$$>3D=#0'! >)! B8B)! &#32%00)B)0'! 2=&! >)2!6%>%00)2I! i)! 1#32! $%=1%3&! &(4=3&)! (0%&B(B)0'! >)! 0%BE&)! 4)! ')2'2! p! )QQ)6'=)&*! L\#B30%02! >)! 6%4)!2=31#0'!v!Public Sub RechercheStyle2() Dim PlageReduite As Range, MaFeuille As Worksheet, Plage As Range Dim EnumPlage As Range, MaCell As Range Set MaFeuille = ThisWorkbook.Worksheets(1) For Each EnumPlage In MaFeuille.Columns If IsNull(EnumPlage.Font.Bold) Then If PlageReduite Is Nothing Then Set PlageReduite = EnumPlage Else Set PlageReduite = Application.Union(PlageReduite, EnumPlage) End If End If Next For Each EnumPlage In MaFeuille.Rows If IsNull(EnumPlage.Font.Bold) Then For Each MaCell In Application.Intersect(EnumPlage, PlageReduite) If MaCell.Font.Bold Then If Plage Is Nothing Then Set Plage = MaCell Else Set Plage = Application.Union(Plage, MaCell) End If End If Next MaCell

! +99

Page 189: Cours VBA débutants.pdf

End If Next EnumPlage Plage.Select End Sub

O%=2! #>>%02! 4%06!$#&6%=&3&! >)2! 6%>%00)2! 4)! >#! Q)=3>>)! )'!B)''&)! '%=')2! 6)>>)2! D=3! &)01%3)0'!O=>>!4#02!=0!%Ei)'!T#0J)*!O%=2!#>>%02!)02=3')!$#&6%=&3&!>#!6%>>)6'3%0!4)2!>3J0)2!4)!>#!Q)=3>>)*!/G#D=)!Q%32!D=P=0)!>3J0)!1#!&)01%-)&!O=>>I!)>>)!6%0'3)04&#!#=!B%302!=0)!6)>>=>)!4%0'!>#!$%>36)!)2'!)0!J&#2*!/)'')!%=!6)2!6)>>=>)2!2)&%0'! Q%&6(B)0'!p! >P30')&2)6'3%0!4)! >#! >3J0)!)'!4)! >#!$>#J)!&(4=3')!4)2!6%>%00)2*! 7>! 2=QQ3'!4%06!4)!$#&6%=&3&!=0)!p!=0)!>)2!6)>>=>)2!4)!6)'')!30')&2)6'3%0!)'!4)!&(6=$(&)&!6)>>)2!D=3!&($%04)0'!#=!6&3'W&)*!!

/)! 6%4)! )2'! 0)'')B)0'! $>=2! 6%B$>)\)I!B#32! 3>! )2'! ?@@! Q%32! $>=2! &#$34)! D=)! >)! $&(6(4)0'*! X=&! >)!B8B)!$%2')I!3>!B)'!B%302!4)!?!2)6%04)2!$%=&!&)01%-)&!>#!$>#J)*!

Fonctions de feuille de calcul ]#02!6)&'#30!6#2I!3>!)2'!30'(&)22#0'!4)!$%=1%3&!(6&3&)!4)2!Q%06'3%02!='3>32#E>)2!4#02!4)2!6)>>=>)2!4)!

Q)=3>>)!4)!6#>6=>I!6%BB)!$%=&!>)2!Q%06'3%02!30'(J&()2!4PL\6)>*!!V#&!6%01)0'3%0I!%0!4(Q303'!'%=i%=&2!=0)!Q%06'3%0!4)!'-$)!:#&3#0'!$%=&!6)!'-$)!4)!Q%06'3%02*!X#=Q!

4#02! 6)&'#302! 6#2! $#&'36=>3)&I! %0! B#&D=)! >#! Q%06'3%0! 6%BB)! ('#0'! 1%>#'3>)I! 6P)2'opo43&)! 4)1#0'! 8'&)!&)6#>6=>()! 6G#D=)! Q%32! D=PL\6)>! 6#>6=>! >)2! Q%&B=>)2! 4=! 6>#22)=&*! F0! ='3>32)! $%=&! 6)>#! >#! B('G%4)!Volatile!4)!>P%Ei)'!Application*!!

7>! &)13)0'! #=! 4(1)>%$$)=&! 4)! J(&)&! >)2! )&&)=&2! $&%$&)2! p! >#! Q%06'3%0! )'! 4)! &)01%-)&! =0)! 1#>)=&!4P)&&)=&! 4#02! >#! 6)>>=>)! #$$)>#0')*! V&)0%02! >P)\)B$>)! 2=31#0'! D=3! 6%B$')! >)! 0%BE&)! 4)! 6)>>=>)2!6%0')0#0'!=0)!1#>)=&!0=B(&3D=)!4#02!>#!$>#J)!$#22()!)0!#&J=B)0'*!Public Function CompteNombre(ByVal Plage As Range) As Variant Application.Volatile If Not TypeOf Plage Is Range Then CompteNombre = CVErr(xlErrValue) Else Dim Cellule As Range For Each Cellule In PlageAr.Cells If IsNumeric(Cellule.Value) Then CompteNombre = CompteNombre + 1 Next Cellule End If End Fonction

O%')e!D=)! >)! ')2'!<-$)FQ!0P)2'! >p!D=)!$%=&!1%=2!4%00)e!=0!)\)B$>)!4=! &)01%3!4P)&&)=&I!4#02! >#!&(#>3'(!L\6)>!0P#$$)>>)&#!$#2!>#!Q%06'3%0!23!>P#&J=B)0'!0P)2'!$#2!4=!E%0!'-$)*!

! +9;

Page 190: Cours VBA débutants.pdf

Manipulation des graphiques ")2!J&#$G3D=)2!4PL\6)>!2%0'!#=223!$&(2)0'2!4#02!>)!B%4W>)!%Ei)'*!7>!0P)\32')!D=P=0!%Ei)'!J&#$G3D=)I!

0%BB(!/G#&'I!E3)0!D=P3>!-!)0!#3'!4)=\!Q%&B)2!v! "#! Q)=3>>)! J&#$G3D=)! D=3! &)01%3)! =0! FEi)'! /G#&'! #=! '&#1)&2! 4)! >#! 6%>>)6'3%0! /G#&'2! 4=!6>#22)=&!

")!J&#$G3D=)!306%&$%&(!jp!=0)!Q)=3>>)!4)!6#>6=>k!D=3!&)01%3)!=0!%Ei)'!/G#&'!6%0')0=!4#02!=0!%Ei)'!/G#&'FEi)6'!&)01%-(!$#&!>#!6%>>)6'3%0!/G#&'FEi)6'2!4)!>#!Q)=3>>)!4)!6#>6=>*!

b>%E#>)B)0'I!>#!$#&'3)!D=)!0%=2!#>>%02!2)!&)$&(2)0')&#!')>>)!D=)!v!

!")!B%4W>)! %Ei)'! 4($)04#0'! 4)2! J&#$G3D=)2! )2'! #22)e! 4)02)!B#32! 2#! $&%J&#BB#'3%0! &)2')! #22)e!

23B$>)*!L0!Q#3'!)>>)!2)!4(6%B$%2)!)0!4)=\!$#&'3)2!J(0(&#>)2I!>#!B#03$=>#'3%0!4)2!4%00()2!$)&B)''#0'!4)!6&()&!>)!J&#$G3D=)I!)'!>#!B32)!)0!Q%&B)*!

Créer un Graphique ]#02!>#!6&(#'3%0!4=!J&#$G3D=)I!%0!)0')04!p!B303B#I!>#!6&(#'3%0!4)!>P%Ei)'!J&#$G)!)'!>#!6&(#'3%0!4P#=!

B%302!=0)!2(&3)*!V%=&!6&()&!=0)!Q)=3>>)!J&#$G3D=)I!0%=2!#=&%02!4%06!=0!6%4)!4)!>#!Q%&B)!v!

Classeur.Charts.Add V%=&!6&()&!=0!J&#$G3D=)!306%&$%&(I!0%=2!#=&%02!=0!6%4)!4)!>#!Q%&B)!v!

Classeur.Feuille.ChartObjects.Add V%=&!$%=1%3&!B#03$=>)&!Q#63>)B)0'!0%'&)!J&#$G3D=)I!0%=2!#>>%02!>P#QQ)6')&!p!=0)!1#&3#E>)!%Ei)'!4)!

'-$)!/G#&'*!V%=&!6&()&!=0)!Q)=3>>)!J&#$G3D=)!0%=2!#>>%02!#1%3&!v!

Sub FeuilleGraphique() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MonGraphe = ThisWorkbook.Charts.Add End Sub

]#02! >)! 6#2!4=!J&#$G3D=)! 306%&$%&(!6P)2'!=0!$)=!43QQ(&)0'*!"%&2!4)! 2#! 6&(#'3%0!4#02! >#!B('G%4)!K44I!6)>>)o63!#'')04!D=#'&)!#&J=B)0'2!4(Q303'!')>2!D=)!v!

! +;@

Page 191: Cours VBA débutants.pdf

Function AddjLeft As Double, Top As Double, Width As Double, Height As Doublek!As ChartObject :%=2!4)1)e!4%06!4(Q303&!4)2!6%%&4%00()2!b#=6G)!)'!_#=')!#3023!D=P=0)!>#&J)=&!)'!=0)!G#=')=&*!F0!$)='!2%3'!$#22)&!4)2!1#>)=&2!43&)6')B)0'!')>>)2!D=)!v!

Sub GraphiqueIncorpore() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) PlageDonnees.Select Set MonGraphe = .ChartObjects.Add(100, 100, 300, 200).Chart End With End Sub

X%3'!#>3J0)&!>P%Ei)'!2=&!=0)!$>#J)!4)!6)>>=>)2!v!Sub GraphiqueIncorpore() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageGraphique As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageGraphique = .Range("H1:N20") Set MonGraphe = .ChartObjects.Add(PlageGraphique.Left, PlageGraphique.Top, PlageGraphique.Width, PlageGraphique.Height).Chart End With End Sub

]#02! >)2!4)=\! 6#2I! 1%=2!1%-)e!D=)! 6)! 0P)2'! $#2! >P%Ei)'! D=)! i)!13)02!4)! 6&()&!D=)! iP#QQ)6')! p!B#!1#&3#E>)!C%0b&#$G)!B#32! >#!1#>)=&!&)01%-()!$#&!2#!$&%$&3('(!/G#&'*!L0!)QQ)'I! >#!B('G%4)!K44!4)! >#!6%>>)6'3%0!/G#&'FEi)6'2!&)01%3)!=0!%Ei)'!/G#&'FEi)6'!D=3!>=3oB8B)!6%0'3)0'!>P%Ei)'!/G#&'*!

g0)! Q%32! >#! 1#&3#E>)! C%0b&#$G)! 6%&&)6')B)0'! #QQ)6'()I! 3>! 0P-! #=&#! $>=2! 4)! 43QQ(&)06)2! 4)!B#03$=>#'3%0! )0'&)! >#! Q)=3>>)! J&#$G3D=)! %=! >)! J&#$G3D=)! 306%&$%&(I! 4=! B%302! #=! 031)#=! 4)! >#!$&%J&#BB#'3%0!4=!J&#$G)*!

O%=2!#>>%02!4%06!6&()&!4)2!2(&3)2!)0!$#&'#0'!4)!0%'&)!4(2%&B#32!6>#223D=)!'#E>)#=*!

! +;+

Page 192: Cours VBA débutants.pdf

!

Utiliser la sélection "#!$&)B3W&)!B('G%4)!)2'!=0!$)=!2$(63)=2)I!4#02!>)!2)02!%=!)>>)!)0J)04&)!$>=2!2%=1)0'!4)2!)&&)=&2!

D=)!4)!E%02!&(2=>'#'2*!L0!)QQ)'I!>%&2D=)!1%=2!6&()e!=0)!Q)=3>>)!J&#$G3D=)!#>%&2!D=P=0)!$>#J)!4)!4%00()2!)2'!2(>)6'3%00()I!L\6)>!1#!='3>32)&!6)'')!2(>)6'3%0!$%=&!6&()&!4)2!2(&3)2*!7B#J30%02!>)!6%4)!2=31#0'!v!Sub CreeGrapheSelection() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) PlageDonnees.Select End With Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartType = xlXYScatter End Sub

! +;?

Page 193: Cours VBA débutants.pdf

h)!2(>)6'3%00)!=0)!$>#J)!6%0')0#0'!4)2!4%00()2!)'!i)!6&()!=0)!Q)=3>>)!J&#$G3D=)*!/)>>)o63!#=&#!#>%&2!6)'')!#$$#&)06)!v!

!"#!$&%$&3('(!/G#&'<-$)!$)&B)'!4)!4(Q303&!>)!'-$)!4)!J&#$G3D=)*!O%=2!>#!1)&&%02!>%&2!4)!>#!B32)!)0!

Q%&B)!4)2!J&#$G)2*!\>MáX6#'')&!4(Q303!=0!J&#$G3D=)!MIá!#$$)>(!0=#J)!4)!$%30'2*!!/)'')!B('G%4)! Q%06'3%00)!E3)0I!B#32! 23! 1%=2! &)J#&4)e! >#! >(J)04)I! 1%=2!1)&&)e!D=)! >)! ')B$2! )2'!

6%0234(&(! 6%BB)! =0)! 2(&3)! 4)! 4%00()2! )'! 0%0! 6%BB)! >P#E26322)! 4)2! #='&)2! 2(&3)2*! F0! (13')!J(0(&#>)B)0'!>P)B$>%3!4)!6)'')!')6G03D=)*!/)$)04#0'!6)>#!4%3'!1%=2!4%00)&!=0!2)6%04!&(Q>)\)*!/%BB)!L\6)>!1#!'%=i%=&2!')0')&!4)!6&()&!=0!J&#$G)!#1)6!2#!2(>)6'3%0I!1%=2!0P#1)e!$#2!>#!6)&'3'=4)!D=)!>P%Ei)'!J&#$G3D=)!D=)!1%=2!1)0)e!4)!6&()&!0)!6%0'3)04&#!$#2!=0)!2(&3)!#i%='()!$#&!L\6)>*!!

V%=&!6)>#I!%0!#$$)>>)!>#!B('G%4)!/>)#&!4)!>P%Ei)'!/G#&'!i=2')!#$&W2!2#!6&(#'3%0*!

Création par Copier Coller "#!4)=\3WB)!B('G%4)!6%0232')!p!='3>32)&!>)!6%$3)&!6%>>)&I!6P)2'opo43&)!6%$3)&!>)2!6)>>=>)2!4)!>#!$>#J)!

4)!4%00()2!)'!>)2!6%>>)&!4#02!>)!J&#$G3D=)*!]%06!0%=2!#=&%02!v!

Sub CreeGrapheCopy() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) End With Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartArea.Clear MonGraphe.ChartType = xlXYScatter PlageDonnees.Copy MonGraphe.Paste End Sub

d=3!0%=2!6&()&#!>)!J&#$G)!v!

! +;U

Page 194: Cours VBA débutants.pdf

!"p!)06%&)I!>#!6%>%00)!4)2!#E26322)2!0P)2'!$#2!6%&&)6')B)0'!30')&$&('()*!/)$)04#0'!0%=2!$%=&&3%02!

B%43Q3)&! 6)! 6%B$%&')B)0'! )0! Q#32#0'! =0! 6%>>#J)! 0%0! $>=2! 2=&! >P%Ei)'! /G#&'! B#32! 2=&! >#! 6%>>)6'3%0!X)&3)2/%>>)6'3%0I!')>!D=)!v!Sub CreeGrapheCopy() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) End With Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartArea.Clear MonGraphe.ChartType = xlXYScatter PlageDonnees.Copy MonGraphe.SeriesCollection.Paste Rowcol:=xlColumns, SeriesLabels:=True, CategoryLabels:=True, Replace:=False, NewSeries:=True End Sub

]#02! 6)! 6#2I! >)! J&#$G3D=)! ='3>32)&#! E3)0! >#! 6%>%00)! 4)! J#=6G)! 4)! >#! $>#J)! 4)! 4%00()2! 6%BB)!6%>%00)!4)2!#E26322)2*!

! +;,

Page 195: Cours VBA débutants.pdf

Définition d'une source de données O%=2! $%=1%02! #=223! #QQ)6')&! >#! $>#J)! 4)! 4%00()2! #=! J&#$G3D=)! $#&! >)! E3#32! 4)! >#! B('G%4)!

X)'X%=&6)]#'#*!/)>>)o63! #'')04!=0!%Ei)'!T#0J)!4(Q30322#0'! >#!$>#J)!4)!4%00()2!)'!(1)0'=)>>)B)0'!=0!#&J=B)0'!V>%'S-!4(Q30322#0'!>)!2)02!4)2!2(&3)2!j)0!>3J0)!%=!)0!6%>%00)k!Sub CreeGrapheDonneeSource()

ith

Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) End W Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartArea.Clear MonGraphe.ChartType = xlXYScatter MonGraphe.SetSourceData PlageDonnees End Sub

Par ajout de séries ]P=0)!B#03W&)!#22)e!23B3>#3&)I!0%=2!$%=1%02!#=223!$#22)&! >#!$>#J)!4)!4%00()2!6%BB)!#&J=B)0'!

4)!>#!B('G%4)!K44!4)!>P%Ei)'!X)&3)2/%>>)6'3%0*!Sub CreeGrapheAddSerie() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) End With Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartArea.Clear MonGraphe.ChartType = xlXYScatter MonGraphe.SeriesCollection.Add PlageDonnees End Sub

:%=2!0%')&)e!(J#>)B)0'!D=)!2#02!#='&)2!#&J=B)0'2I!6)'')!')6G03D=)!$&)042!)0!6%B$')!>#!$&)B3W&)!6%>%00)!6%BB)!=0)!2(&3)!304($)04#0')!)'!0%0!6%BB)!4)2!#E26322)2*!

:%=2!$%=1)e!6G#0J)&!6)>#!)0!='3>32#0'!v!MonGraphe.SeriesCollection.Add PlageDonnees, xlColumns, , True

Par définitions des séries <%=')2!6)2!B('G%4)2!2%0'!$&#'3D=)2I!B#32!)>>)2!0)!2%0'!$#2!'&W2!2%=$>)2*!L0!)QQ)'I!23!1%=2!1%=>)e!

4)2!#E26322)2!D=3!0)!2%3)0'!$#2!4#02!>#!$&)B3W&)!6%>%00)!4)!>#!$>#J)I!1%=2!0)!$%=1)e!$#2!>)2!='3>32)&*!"#!Q#q%0!>#!$>=2!&%E=2')!6%0232')!p!='3>32)&!=0)!1&#3)!$&%J&#BB#'3%0!4)2!%Ei)'2!2(&3)2I!=0!p!=0*!

T)$&)0%02! >#!E#2)!4)!6)!B%4W>)!%Ei)'*!"P%Ei)'!/G#&'!)\$%2)!=0)!$&%$&3('(!X)&3)2/%>>)6'3%0I!D=3!&)01%3)!>#!6%>>)6'3%0!4)2!2(&3)2!4=!J&#$G3D=)*!

")2! B)BE&)2! 4)! 6)'')! 6%>>)6'3%0! 2%0'! 4)2! %Ei)'2! X)&3)2*! g0! %Ei)'! X)&3)2! 6%0'3)0'! $>=23)=&2!$&%$&3('(2!)'!B('G%4)2!D=3!4(Q30322)0'!>P)02)BE>)!4)!>#!2(&3)!6P)2'opo43&)!2)2!4%00()2!)'!2%0!#$$#&)06)*!

V%=&! >)2! 4%00()2I! >P%Ei)'! X)&3)2! )\$%2)! =0)! $&%$&3('(!:#>=)2! D=3! 4(Q303)! 6)2! %&4%00()2I! )'! =0)!$&%$&3('(!M:#>=)2!D=3!4(Q303'!6)2!#E26322)2*!

])!Q#3'I!0%=2!0P#>>%02!4%06!$>=2!'&#1#3>>)&!#1)6!'%=')!>#!$>#J)!4)!6%>%00)2I!B#32!#1)6!4)2!6%>%00)2!2($#&()2*!

T)6&(%02!0%'&)!J&#$G3D=)!$&(6(4)0'!#1)6!6)'')!')6G03D=)*!

! +;N

Page 196: Cours VBA débutants.pdf

Sub CreeGrapheNewSerie() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Dim PlageX As Range, PlageY As Range, MaSerie As Series, compteur As Long Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 6) End With Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartArea.Clear MonGraphe.ChartType = xlXYScatter Set PlageX = PlageDonnees.Columns(1) For compteur = 1 To PlageDonnees.Columns.Count - 1 Set PlageY = PlageX.Offset(, compteur) Set MaSerie = MonGraphe.SeriesCollection.NewSeries With MaSerie .Values = PlageY .XValues = PlageX .Name = PlageDonnees.Cells(1, 1).Offset(, compteur) End With Next compteur End Sub

"#!$&%$&3('(!O#B)!4(Q303'!>)!0%B!D=3!#$$#&#f'&#!$#&!4(Q#='!4#02!>#!>(J)04)*!"P#i%='!4)!2(&3)!p!=0!J&#$G3D=)!4(ip!)\32'#0'!Q%06'3%00)!p!>P34)0'3D=)I!23!6)!0P)2'!D=)!1%=2!0P#1)e!

$#2!E)2%30!4)!6&()&!>P%Ei)'!J&#$G3D=)*!

Mise en forme ")!6%4)!4)!B32)!)0!Q%&B)!)2'!'&W2!23B$>)*!h)!0)!1#32!$#2!)0'&)&!4#02!>)!4('#3>!4=!B%4W>)!%Ei)'!B#32!

i=2')!1%=2!4%00)e!4)2!)\)B$>)2!4)!6%4)2!6>#223D=)2*!

Modifier l'apparence des séries ")!6%4)!2=31#0'!1#!6G#0J)&!>)!B#&D=)=&!4)!2(&3)!)'!>#!6%=>)=&!4=!'&#6(!$%=&!6G#D=)!2(&3)!>%&2!4)!2#!

6&(#'3%0*!Sub CreeGrapheNewSerie() Dim MonGraphe As Chart, MaFeuille As Worksheet, PlageDonnees As Range Dim PlageX As Range, PlageY As Range, MaSerie As Series, compteur As Long Set MaFeuille = ThisWorkbook.Worksheets("Tableau") With MaFeuille Set PlageDonnees = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(30, 6) End With Set MonGraphe = ThisWorkbook.Charts.Add MonGraphe.ChartArea.Clear MonGraphe.ChartType = xlXYScatter Set PlageX = PlageDonnees.Columns(1) For compteur = 1 To PlageDonnees.Columns.Count - 1 Set PlageY = PlageX.Offset(, compteur) Set MaSerie = MonGraphe.SeriesCollection.NewSeries With MaSerie .Values = PlageY .XValues = PlageX .Name = PlageDonnees.Cells(1, 1).Offset(, compteur) .Border.ColorIndex = compteur

! +;.

Page 197: Cours VBA débutants.pdf

.MarkerStyle = Choose(compteur, xlMarkerStylePlus, xlMarkerStyleTriangle, xlMarkerStyleCircle, xlMarkerStyleDiamond, xlMarkerStyleSquare) .MarkerSize = 3 .MarkerBackgroundColorIndex = compteur .MarkerForegroundColorIndex = compteur End With Next compteur End Sub

")!6%4)!2=31#0'!#QQ)6')!>#!2(&3)!P:3')22)P!p!=0!4)=\3WB)!#\)!á*!Public Sub ModifierSerie() Dim MonGraphe As Chart, MaSerie As Series Set MonGraphe = ThisWorkbook.Charts(1) For Each MaSerie In MonGraphe.SeriesCollection If InStr(1, MaSerie.Name, "vitesse", vbTextCompare) > 0 Then MaSerie.AxisGroup = xlSecondary End If Next MaSerie End Sub

/)!6%4)!#i%=')&!#=!$&(6(4)0'!4%00)&#3'!=0!J&#$G)!23B3>#3&)!p!v!

!/%BB)!1%=2!>)!1%-)eI!>)2!2(&3)2!$#&')0'!4P=0!$%30'!P@P!D=3!0P)\32')!$#2!4#02!>)!'#E>)#=!4)!4%00()2*!

/%BB)0'!6)>#!2)!Q#3'o3>!|!L0!Q#3'I!iP#3!2(>)6'3%00(!6%BB)!$>#J)!4)!4%00()2!4)2!6%>%00)2!6%0')0#0'!=0!'3'&)!$%=&!>#!2(&3)*!/)!

'3'&)! 0)! $%=1#0'! $#2! 8'&)! 6%01)&'3! )0! 4%00()2I! L\6)>! '&#6)! =0! $%30'! @! D=3! 0P)\32')! $#2*! h)! $%=&&#32!6%&&3J)&!6)>#I!2%3'!)0!B%43Q3#0'!>#!$>#J)!4)!4%00()2I!2%3'!)0!B%43Q3#0'!>#!$&)B3W&)!1#>)=&!4)!>#!2(&3)*!

]#02! >)2!4)=\!6#2I!6)'')!#$$&%6G)!0P)2'!$#2! Q#63>)!6#&!%0!0)!$)='!$#2! '&%$!B%43Q3)&! >#!6%>>)6'3%0!V%30'2!4)!>P%Ei)'!X)&3)*!V#&!#3>>)=&2I!>)2!$&%$&3('(2!:#>=)2!)'!M:#>=)2!4)!>#!2(&3)!0)!6%0'3)00)0'!$#2!=0)!&(Q(&)06)!1)&2!>P%Ei)'!T#0J)!D=3!>)2!#!6&(()2!B#32!=0!1#&3#0'!6%0')0#0'!=0!'#E>)#=!4)2!1#>)=&2*!!

V%=&!&)'&%=1)&!>)2!%Ei)'2!T#0J)!4P%&3J30)I!i)!1#32!4)1%3&!B#03$=>)&!=0)!#='&)!$&%$&3('(!4)!>P%Ei)'!X)&3)I![%&B=>#T+/+"%6#>*!/)>>)o63!1#!&)01%-)&!=0)!6G#f0)!4)!'-$)!v!

! +;5

Page 198: Cours VBA débutants.pdf

RXLT7Ljr<ã!+ru<#E>)#=â"+/+v"U@/+u<#E>)#=â"+/?v"U@/?u+k!/P)2'opo43&)!=0)!Q%06'3%0!6%B$&)0#0'!6%BB)!#&J=B)0'!v!

")!O%B!4)!>#!2(&3)! "#!$>#J)!4)2!#E26322)2! "#!$>#J)!4)2!%&4%00()2! "P%&4&)!4)!'&#q#J)!

7>! 2P#J3'! 4P=0)! 6G#f0)! 4)! 6#&#6'W&)I! i)! $)=\! 4%06! >#! B#03$=>)&! 6%BB)! ')>>)*! V%=&! 2=$$&3B)&! >)!$&)B3)&!$%30'!4)!6G#D=)!2(&3)I!3>!2=QQ3&#3'!$#&!)\)B$>)!4P(6&3&)!v!Public Sub ModifierSerie() Dim MonGraphe As Chart, MaSerie As Series Set MonGraphe = ThisWorkbook.Charts(1) For Each MaSerie In MonGraphe.SeriesCollection MaSerie.FormulaR1C1Local = Replace(MaSerie.FormulaR1C1Local, "L1C", "L2C") If InStr(1, MaSerie.Name, "vitesse", vbTextCompare) > 0 Then MaSerie.AxisGroup = xlSecondary End If Next MaSerie End Sub

/)!D=3!0%=2!4%00)&#3'!=0!J&#$G)!')>!D=)!v!

!

! +;9

Page 199: Cours VBA débutants.pdf

Ajouter un titre ou un fond au graphique /)! 6%4)! 1#! #i%=')&! =0! Q%04! p! >#! e%0)! )\'(&3)=&)! 4=! J&#$G)I! =0! #='&)! p! >#! e%0)! 30'(&3)=&)I! $=32!

#i%=')&!=0!'3'&)!)06#4&(!)'!%BE&(*!Public Sub TitreEtFond() Dim MonGraphe As Chart Set MonGraphe = ThisWorkbook.Charts(1) With MonGraphe With .ChartArea.Interior .ColorIndex = 34 .PatternColorIndex = 2 .Pattern = xlSolid End With With .PlotArea.Interior .ColorIndex = 15 .PatternColorIndex = 1 .Pattern = xlSolid End With .HasTitle = True With .ChartTitle .Text = "Titre" .Border.LineStyle = xlThin .Shadow = True End With End With End Sub

O%')e!D=)!i)!$%=&&#32!B)''&)!=0)!6)>>=>)!6%BB)!<3'&)!)0!(6&31#0'!v!.Text = "=Tableau!R13C11"

Manipuler la légende ")!6%4)!2=31#0'!#i%=')!=0)!>(J)04)!#=!J&#$G3D=)!)'!B)'!>)2!(>(B)0'2!4)!>#!>(J)04)!)0!J&#2*!

Public Sub AjoutLegende() Dim MonGraphe As Chart, Element As LegendEntry Set MonGraphe = ThisWorkbook.Charts(1) With MonGraphe .HasLegend = True With .Legend .Position = xlLegendPositionRight For Each Element In .LegendEntries Element.Font.Bold = True Next Element End With End With End Sub

Manipuler les axes ")!6%4)!2=31#0'!1#!B%43Q3)&!>)2!#\)2!)0!v!

Ki%='#0'!=0)!>(J)04)!#=\!'&%32!#\)2! C%43Q3#0'!>#!$%>36)!4)!>P#\)!4)2!#E26322)2! C%43Q3#0'!>)2!B#&D=)=&2!4)!>P#\)!4)2!%&4%00()2!4)!J#=6G)! ](Q30322#0'!=0!D=#4&3>>#J)!30')&0)! C%43Q3#0'!>P(6G)>>)!4)!>P#\)!4)2!%&4%00()2!4)!4&%3')!

! +;;

Page 200: Cours VBA débutants.pdf

Public Sub MiseEnFormeAxes() Dim MonGraphe As Chart, Axe As Axis Set MonGraphe = ThisWorkbook.Charts(1) With MonGraphe 'actions sur l'axe des X Set Axe = .Axes(xlCategory, xlPrimary) With Axe .HasTitle = True .AxisTitle.Text = "Temps (s)" .TickLabels.Font.ColorIndex = 7 .TickLabels.Font.Bold = True End With 'actions sur les ordonnées de gauche Set Axe = .Axes(xlValue, xlPrimary) With Axe .HasTitle = True .AxisTitle.Text = "Température (°C)" .MajorTickMark = xlTickMarkOutside .MinorTickMark = xlTickMarkInside .HasMajorGridlines = True End With 'actions sur les ordonnées de droite Set Axe = .Axes(xlValue, xlSecondary) With Axe .HasTitle = True .AxisTitle.Text = "Vitesse (rpm)" .MinimumScale = 2400 .MaximumScale = 2600 End With End With End Sub

<%=2!6)2!6%4)2!)06G#f0(2!4)!B32)!)0!Q%&B)!4%00)&#3)0'!v!

!

! ?@@

Page 201: Cours VBA débutants.pdf

Débogage K1#0'!4)!0%=2!&)$>%0J)&!4#02!4=!6%4)!$%=&!>#!Q30!4)!6)!6G#&B#0'!$)'3'!6%=&2I!&)'%=&0%02!D=)>D=)2!

302'#0'2! 4#02! >P)013&%00)B)0'! 4)! 4(1)>%$$)B)0'! p! >#! 4(6%=1)&')! 4)2! %='3>2! 4)! 4(E%J#J)*! V%=&!6%B$&)04&)! $>=2! Q#63>)B)0'! >)2! )&&)=&2! 4P)\(6='3%0I! >P)013&%00)B)0'!:SK!1#! 1%=2! Q%=&03&! D=)>D=)2!%='3>2!E3)0!$&#'3D=)2*!V%=&!6)>#I!0%=2!6%0'30=)&%02!#1)6!>)2!6%4)2!D=)!0%=2!#1%02!1=!$&(6(4)BB)0'I!D=3!2)&%0'!#$$)>(2!4P=0)!$&%6(4=&)!v!Public Sub CreerGraphe() Call CreeGrapheNewSerie Call ModifierSerie Call TitreEtFond Call AjoutLegende Call MiseEnFormeAxes End Sub

Exécution en mode pas à pas X3!1%=2!1%=>)e!1%3&!6)!D=)!Q#3'!1%'&)!6%4)!1%=2!$%=1)e!>)!Q#3&)!)\(6=')&!)0!B%4)!$#2!p!$#2!6P)2'opo

43&)!)0!#1#0q#0'! >)!6=&2)=&!4P)\(6='3%0!>3J0)!#$&W2!>3J0)*!V%=&!6)>#!1%=2!4)1)e!2(>)6'3%00)&!>)!B)0=!r](E%J#J)!s!V#2!p!$#2!4('#3>>(r!%=!#$$=-)&!2=&![9*!

:%=2!1)&&)e!#>%&2!>)!6=&2)=&!4P)\(6='3%0!D=3!1#!2=&>3J0)&!)0!i#=0)!>#!>3J0)!)0!#'')0')!4P)\(6='3%0*!

!K!6G#D=)!$&)223%0!2=66)2231)!2=&!>#!'%=6G)![9I!>)!6=&2)=&!1#!#1#06)&!4P=0)!>3J0)*!X3!1%=2!&)J#&4)e!

4#02!>)!B)0=!4(E%J#J)I!1%=2!1%-)e!v!

! ?@+

Page 202: Cours VBA débutants.pdf

!")! $#2! p! $#2! 4('#3>>(! 2=3'! )\#6')B)0'! >)! 6=&2)=&! 4P)\(6='3%0I! 6P)2'opo43&)! D=)! >%&2D=)! >)! 6%4)!

#$$)>>)! =0)! Q%06'3%0I! >)! 6=&2)=&! 1#! 4#02! 6)'')! Q%06'3%0*!K3023! 4#02! >#! 6#$'=&)! 4P(6&#0!$&(6(4)0')I! 23!iP#$$=3)!=0)!Q%32!2=&![9I!iP%E'3)04&#32!v!

!")!$#2!p!$#2!$&3063$#>I!>=3!&)2')!4#02!>)!6%&$2!4)!>#!Q%06'3%0!%=!>)!6=&2)=&!2)!'&%=1)*!"%&2D=P3>!$#22)!

2=&!=0)!Q%06'3%0I!6)>>)o63!)2'!)\(6='()!)'!>)!6=&2)=&!1#!2=&!>#!>3J0)!2=31#0')!4)!>#!B8B)!$&%6(4=&)*!X3!iP#1#32!#$$=-(!2=&!C#it[9I!iP#=&#32!%E')0=!v!

! ?@?

Page 203: Cours VBA débutants.pdf

!"#! $)'3')! Q>W6G)! i#=0)! D=)! 1%=2! 1%-)e! 2=&! >#! J#=6G)! 4)! >#! Q)08'&)! 1%=2! $)&B)'! 4)! 4($>#6)&! >)!

6=&2)=&! #1)6! >#! 2%=&32*! X3! >)! 6%0')\')! >)! $)&B)'I! 1%=2! $%=1)e! 4%06! 1%=2! $>#6)&! 2=&! =0)! >3J0)!$#&'36=>3W&)!)'! #$$=-)&! 2=&![9!$%=&! >P)\(6=')&*!"#!E#&&)!J&32)!4#02! >#D=)>>)! 2)! '&%=1)! >#! Q>W6G)! i#=0)!2P#$$)>>)!E#&&)!4)!4(E%J=#J)*!]#02!6)&'#302!6#2I!1%=2!$%=1)e!B%43Q3)&!>)2!>3J0)2!4)!6%4)2!2#02!#&&8')&!>P)\(6='3%0*!

Les points d'arrêts X3!1%'&)!6%4)!)2'!=0!$)=!>%0J!%=!2P3>!6%0'3)0'!4)2!E%=6>)2I!6)>#!$)='!8'&)!13')!Q#2'343)=\!4P#$$=-)&!

2=&![9! i=2D=Pp!#'')304&)! >)!$%30'!4=!6%4)!D=3!1%=2! 30'(&)22)*!V%=&! >#06)&! >P)\(6='3%0! i=2D=Pp!=0!$%30'!4%00()! 1%=2! $%=1)e! %=! $>#6)&! >)! 6=&2)=&! 2=&! >#! >3J0)! )'! ='3>32)&! r](E%J=#J)! s! L\(6=')&! i=2D=P#=!6=&2)=&r!%=!='3>32)&!4)2!$%30'2!4P#&&8'2*!

V%=&!$>#6)&!=0!$%30'!4P#&&8'I!3>!2=QQ3'!4)!6>3D=)&!4#02!>#!E#&&)!4)!4(E%J=#J)!#=!031)#=!4)!>#!>3J0)!%x!1%=2!2%=G#3')e!E>%D=)&!>P)\(6='3%0u!

! ?@U

Page 204: Cours VBA débutants.pdf

!/G%32322)e! )02=3')! )\(6=')&! 4#02! >)! B)0=! L\(6='3%0! j[NkI! >)! 6%4)! 2P)\(6=')&#! i=2D=P#=! $%30'!

4P#&&8'*!

!:%=2!$%=1)e!$>#6)&!$>=23)=&2!$%30'2!4P#&&8'2!4#02!1%'&)!6%4)!)'! >)2!)QQ#6)&! '%=2!)0!#$$=-#0'!2=&!

/'&>tC#it[;*!

! ?@,

Page 205: Cours VBA débutants.pdf

Variables locales :%=2!$%=1)e!1%3&!#=! Q=&!)'!p!B)2=&)!4=!$#2!p!$#2! >#!1#>)=&!4)!1%2!1#&3#E>)2I! 2%3'!)0!$>#q#0'! >)!

6=&2)=&!#=!4)22=2!4)!6)>>)!D=3!1%=2!30'(&)22)!

!X%3'!)0!#$$)>>#0'!>#!Q)08'&)!4)2!1#&3#E>)2!>%6#>)2!j4#02!>)!B)0=!#QQ36G#J)k!

!"%&2D=P3>!2P#J3'!4)!1#&3#E>)2!%Ei)'2I!)>>)2!%0'!=0!23J0)!t!p!6%'(!4P)>>)2!>%&2D=)!>P%Ei)'!)2'!302'#063(*!

L0!6>3D=#0'!4)22=2I!1%=2!1)&&)e!#$$#&#f'&)!>#!>32')!4)2!$&%$&3('(2!4)!>P%Ei)'!)'!>)=&2!1#>)=&2!p!6)'!302'#0'!4)!>P)\(6='3%0!v!

!

! ?@N

Page 206: Cours VBA débutants.pdf

Les espions :%=2!$%=1)e!#=223!6G%323&!=0!(>(B)0'!)0!>)!2=&>3J0#0'I!Q#3&)!=0!6>36!4&%3'!)'!2(>)6'3%00)&!Ki%=')&!

=0!)2$3%0*!

!/)>=3o63!#$$#&#f'&#!#>%&2!4#02!>#!Q)08'&)!4)2!)2$3%02!i=2D=Pp!6)!D=)!1%=2!>)!2=$$&3B3)e*!

!

! ?@.

Page 207: Cours VBA débutants.pdf

Manipuler les évènements O%=2! #>>%02! B#30')0#0'! #>>)&! =0! $)=! $>=2! >%30! )0! B#03$=>#0'! D=)>D=)2! (1W0)B)0'2! 4)2! %Ei)'2!

L\6)>!D=)!0%=2!#1%02!1=*!g0! (1W0)B)0'I! 6P)2'! =0)! $&%6(4=&)! D=3! 2P)\(6=')! 6G#D=)! Q%32! D=P=0! (1W0)B)0'! $#&'36=>3)&! 2)!

$&%4=3'*!X)=>2!>)2!B%4=>)2!%Ei)'2!$)=1)0'!6%0')03&!4)2!$&%6(4=&)2!(1W0)B)0'3)>>)2*!]#02!>#!$#&'3)!4=!B%4W>)! %Ei)'! D=)! 0%=2! #1%02! 1=I! 2)=>! >)2! %Ei)'2! `%&aS%%aI! `%&aXG))'! )'! /G#&'! JW&)0'! 4)2!(1W0)B)0'2*!"P%Ei)'!K$$>36#'3%0!)0!JW&)!#=223!B#32!0%=2!0)!>)2!1)&&%02!$#2!4#02!6)!6%=&2*!!

V%=&! J(&)&! =0! (1W0)B)0'! 4=! 6>#22)=&I! 4%=E>)! 6>3D=%02! 4#02! >P)\$>%&#')=&! 4)! $&%i)'2! 6)! D=3! 1#!#QQ36G)&!>)!B%4=>)!4)!6%4)!%Ei)'!4)!>P(>(B)0'!<G32`%&aE%%a!

!X3!1%=2!6>3D=)e!2=&!>#!>32')!4(&%=>#0')!4)2!%Ei)'2I!1%=2!1)&&)e!#$$#&#f'&)!=0!%Ei)'!`%&aE%%a*!

!X(>)6'3%00)&!>)I!1%=2!#>>)e!#>%&2!1%3&!#$$#&#f'&)!>)!6%4)!v!

! ?@5

Page 208: Cours VBA débutants.pdf

!O%')e!D=)! >#!1#>)=&!F$)0!#$$#&#f'!4#02! >#! >32')!4)2!B)BE&)2*!X3! 1%=2!6>3D=)e! 2=&! 6)>>)o63!1%=2!

1%-)e! #$$#&#f'&)! >#! >32')! 4)2! (1W0)B)0'2! 432$%03E>)! $%=&! >)! 6>#22)=&*! X(>)6'3%00)e! =0!B)BE&)! )'! >)!J(0(&#')=&!1%=2!(6&3&#!>)!2D=)>)'')!4)!>P(1W0)B)0'!v!

!!

!/ ! 4)2! #&J=B)0'2! $&(4(Q3032I! 4P#='&)2! 0%0*! "#!

4(Q303'3%0!4)!>P(1W0)B)0'!0)!$)='!8'&)!6G#0J()*!V&)0%02!4%06!D=)>D=)2!)\)B$>)2!$%=&!>P%Ei)'!`%&aE%%a*!")!6%4)!2=31#0'!B#2D=)!>#!Q)=3>>)!'#E>)#=!23!>)!6>#22)=&!)2'!%=1)&'!)0!>)6'=&)!2)=>)!

Private Sub Workbook_Open()

%BB)! 1%=2! >)! 1%-)eI! 6)&'#302! (1W0)B)0'2! %0'

If Me.ReadOnly Then Me.Worksheets("Tableau").Visible = xlSheetVeryHidden End If End Sub

! ?@9

Page 209: Cours VBA débutants.pdf

" )&!6%BB)!4#02!0P3B$%&')!D=)>>)!$&%6(4=&)I!p!>#!6%043'3%0! 4)! 2#1%3&! p! D=%3! 3>2! 2)&1)0'*! V#&! )\)B$>)I! >P#&J=B)0'!/#06)>! 4)! >P(1W0)B)0'!S)Q%&)/>%2)!#00=>)! >#! Q)&B)'=&)!4=!6>#22)=&*!")!6%4)! 2=31#0'!$)&B)'!4)! Q%&6)&! >#! 2#323)!4P=0! 34)0'3Q3#0'!#1#0'! 2#!Q)&B)'=&)*!Private Sub Workbook_BeforeClose(Cancel As Boolean)

%&2D=P3>!-!#!4)2!#&J=B)0'2I!1%=2!$%=1)e!>)2!='3>32

or Each Nom In Me.Names

Dim Reponse As String, Nom As Name Reponse = Application.InputBox("Entrez votre identifiant", "Contrôle", , , , , , 2) Cancel = True F If StrComp(Mid(Nom.RefersTo, 2), Reponse, vbTextCompare) = 0 Then Cancel = False Exit For End If Next Nom End Sub

/)! 6%4)! )2'! =0! J#4J)'I! %0! ='3>32)! $>=2! J(0(&#>)B)0'! 6)'! (1W0)B)0'! $%=&! &)2'#=&)&! >P%Ei)'!#$$>36#'3%0!>%&2D=P%0!>P#!B%43Q3(*!

Evènements de feuille de calcul O%=2! #>>%02! 1%3&! 363! D=)>D=)2! (1W0)B)0'2! J(&(2! $#&! >#! Q)=3>>)! 4)! 6#>6=>*! X#6G)e! D=P3>! )0! )\32')!

4P#='&)2I!)'!D=)!'%=2!6)2!(1W0)B)0'2!&)B%0')0'!#=223!1)&2!4)2!(1W0)B)0'2!J(&(2!#=!031)#=!4=!6>#22)=&!$&(Q3\(!$#&!>)!B%'!PXG))'P!)'!#66)$'#0'!=0!#&J=B)0'!P2GP!34)0'3Q3#0'!>#!Q)=3>>)!4#02!>)D=)>!>P(1W0)B)0'!2)!$&%4=3'*!K='&)B)0'!43'!>P(1W0)B)0'!K6'31#')!4)!>#!Q)=3>>)!+!>W1)&#!#=223!>P(1W0)B)0'!XG))'K6'31#')!4=!6>#22)=&!)0!$#22#0'!=0!#&J=B)0'!2G!D=3!2)&#!=0)!&(Q(&)06)!p!>#!Q)=3>>)!+*!

Activation de la feuille ](Q303!$#&!

Private Sub Worksheet_Activate() X)!$&%4=3'!>%&2D=)!>#!Q)=3>>)!)2'!#6'31()I!6P)2'opo43&)!D=)!>#!Q)=3>>)!)2'!2(>)6'3%00()!$#&!>)!6%4)!%=!

$#&! >P='3>32#')=&*! F0! >P='3>32)! J(0(&#>)B)0'! >%&2D=P%0! 2%=G#3')! )\(6=')&! 4)2! #6'3%02! j6#>6=>2I! B32)! )0!Q%&B)I!6%00)\3%0!p!=0)!2%=&6)!4)!4%00()2I!)'6*k! 2=&! >#! Q)=3>>)!=03D=)B)0'! >%&2D=)!6)>>)o63!$)='!8'&)!#66)223E>)!p!>P='3>32#')=&!6P)2'opo43&)!>%&2D=P)>>)!4)13)0'!>#!Q)=3>>)!#6'31)*!

7B#J30%02!$#&!)\)B$>)!D=)!0%=2!#1%02!=0)!Q)=3>>)!#$$)>()!rT(6#$3'=>#'3QrI!D=3!6%0'3)0'!=0!J&#04!0%BE&)!4)!6#>6=>2! 322=2!4)!4%00()2! 23'=()2!4#02!4P#='&)2! Q)=3>>)2!4=!6>#22)=&*!O%=2!#1%02!E>%D=(! >)!B%4)! 4)! 6#>6=>! 4=! 6>#22)=&! $%=&! D=)! >)! 6G#0J)B)0'! 4)2! 4%00()2! 0P)0J)04&)! $#2! p! 6G#D=)! Q%32! =0!&)6#>6=>!#22)e!>%0J*!"%&2D=)!>P='3>32#')=&!1#!#>>)&!1%3&!2%0!&(6#$3'=>#'3QI!3>!1#!E3)0!Q#>>%3&!Q%&6)&!>)!6#>6=>!$%=&! D=)! >)2! (>(B)0'2! 132=#>32(2! &)Q>W')0'! E3)0! >)2! 1#>)=&2! #6'=#>32()2*! O%=2! (6&3&%02! 4%06! 4#02! >)!B%4=>)!%Ei)'!4)!>#!Q)=3>>)*!Private Sub Worksheet_Activate() Me.Calculate End Sub

/)$)04#0'!2)!6%4)!$)='!$%2)&!=0!$&%E>WB)!4)!6%B$%&')B)0'I!6#&!>#!Q)=3>>)!#6'31)!$#&!4(Q#='I!6P)2'opo43&)!6)>>)!D=3!2P#QQ36G)!>%&2!4)!>P%=1)&'=&)!4=!6>#22)=&!0)!>W1)!$#2!>P(1W0)B)0'!K6'31#')*!S3)0!D=P)0!'%=')!&3J=)=&I!6)>#!0)!$%2)!$#2!4)!$&%E>WB)!2#=Q!)0!6#2!4)!>3#32%0!)\')&0)I!3>!6%013)0'!J(0(&#>)B)0'!4)!2P#22=&)&! D=)! >#! Q)=3>>)! 6%0')0#0'! 6)'! (1W0)B)0'! 0)! 2%3'! $#2! >#! Q)=3>>)! #6'31)! p! >P%=1)&'=&)I! )'! 4%06!D=P)>>)!0)!2%3'!$#2!>#!Q)=3>>)!#6'31)!>%&2!4)!>P)0&)J32'&)B)0'!4=!6>#22)=&*!V%=&!6)>#!%0!='3>32)!>P(1W0)B)0'!S)Q%&)X#1)!4=!6>#22)=&!')>!D=)!v!Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Me.ActiveSheet Is Me.Worksheets("Recapitulatif") Then Me.Worksheets("Donnees").Activate End If End Sub

! ?@;

Page 210: Cours VBA débutants.pdf

Gestion du clic droit "P(1W0)B)0'!S)Q%&)T3JG'/>36a!2)!4(6>)06G)!>%&2D=)!>P='3>32#')=&!Q#3'!=0!6>36!4&%3'!2=&!=0)!6)>>=>)!

%=!2=&!=0)!2(>)6'3%0!4)!6)>>=>)!avant!D=)!>)!B)0=!6%0')\'=)>!0)!2P#QQ36G)*!"#!4(Q303'3%0!)2'!v!Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Fx!<#&J)'!)2'!=0!%Ei)'!T#0J)!D=3!4(23J0)!>#!6)>>=>)!%=!>#!2(>)6'3%0!&)6)1#0'!>P(1W0)B)0'I!)'!/#06)>!=0!E%%>()0!$)&B)''#0'!4P#00=>)&!>P#QQ36G#J)!4=!B)0=!6%0')\'=)>*!!

b(0(&#>)B)0'I! %0!='3>32)! 6)'! (1W0)B)0'!$%=&! &)2'&)304&)!%=!$%=&! #i%=')&! 4)2! (>(B)0'2! #=!B)0=!6%0')\'=)>*!V&)0%02!>P)\)B$>)!2=31#0'!D=3!2=$$&3B)!>P#66W2!p!>#!Q%06'3%0!P6%=$)&P!4=!B)0=!6%0')\'=)>!>%&2D=P%0!6>3D=)!2=&!=0)!6)>>=>)!4)!>#!$>#J)!rK+vLNr*!Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect(Target, Me.Range("A1:E5")) Is Nothing Then Application.CommandBars("Cell").Controls(1).Visible = False Else Application.CommandBars("Cell").Controls(1).Visible = True End If End Sub

F='&)! >P)\)B$>)!43&)6'I!0%=2! '&%=1%02!=0!)\)B$>)!6>#223D=)!4)! >P='3>32#'3%0!4)! >P#&J=B)0'!<#&J)'!4#02! >)2! (1W0)B)0'2!4)! Q)=3>>)*!]('#3>>%02o)0!=0!$)=! >)!$&3063$)*!b(0(&#>)B)0'! >P(1W0)B)0'!0)!4%3'!6%06)&0)&!D=)!D=)>D=)2!6)>>=>)2!)'!0%0! '%=')2! >)2!6)>>=>)2!4)! >#! Q)=3>>)*!V%=&!J(&)&!6)>#I!%0!6&()!=0)!$>#J)!0%BB()!$%=&!>)2!6)>>=>)2!D=3!4%31)0'!J(&)&!>P(1W0)B)0'!%x!%0!#$$)>>)!43&)6')B)0'!>P%Ei)'!T#0J)!6%BB)!4#02!>P)\)B$>)!2P3>!2P#J3'!4P=0)!$>#J)!&)6'#0J=>#3&)*!F0!&(6=$W&)!>P30')&2)6'3%0!)0'&)!>P#&J=B)0'!<#&J)'!)'! >#!$>#J)!63E>)I!23!6)'')!30')&2)6'3%0!1#='!O%'G30JI!6P)2'!D=P#=6=0)!6)>>=>)!4)!>#!$>#J)!4)1#0'!>)1)&!>P(1W0)B)0'!0)!>P#!&)q=I!230%0!#=!B%302!=0)!4)2!6)>>=>)2!>P#!&)q=*!

O%')e!#=223!D=)!>P%Ei)'!T#0J)!)2'!D=#>3Q3(!$#&!>)!B%'!6>(!C)*!L0!)QQ)'I!>)!6%4)!4)!>P(1W0)B)0'!)2'!Q%&6(B)0'!6%0')0=!4#02!>)!B%4=>)!%Ei)'!4)!>#!Q)=3>>)*!")!B%'!6>(!C)!Q#3'!4%06!&(Q(&)06)!p!>#!Q)=3>>)!6)!D=3!$)&B)'!4)!>P='3>32)&!)0!D=#>3Q36#')=&!4)!>#!$&%$&3('(!T#0J)*!

Changement de sélection "P(1W0)B)0'! X)>)6'3%0/G#0J)! 2)! $&%4=3'! >%&2D=P#=!B%302! =0)! 0%=1)>>)! 6)>>=>)! )2'! 2(>)6'3%00()*!

/)'!(1W0)B)0'!2=3'!>#!4(Q303'3%0!v!Private Sub Worksheet_SelectionChange(ByVal Target As Range)

/)'!(1W0)B)0'!E3)0!D=)!'&W2!$&#'3D=)!$)='!#1%3&!4)2!)QQ)'2!4)!E%&42!0(Q#2')2!4#02!6)&'#302!6#2I!23!%0!4(6>)06G)!=0)!6#26#4)!4P(1W0)B)0'2*!V&)0%02!>P)\)B$>)!2=31#0'!v!Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Application.Intersect(Target, Me.Columns("A:J")) Is Nothing Then Target.Offset(1).Select End If End Sub

/)! 6%4)! 1#! )0'&#f0)&! =0! 4($>#6)B)0'! &#$34)! 4)! >#! 2(>)6'3%0! 1)&2! >)! E#2! 4)! >#! Q)=3>>)*! L0! )QQ)'I!>P#$$)>!4)!>#!B('G%4)!X)>)6'!1#!>)1)&!p!0%=1)#=!=0!(1W0)B)0'!X)>)6'3%0/G#0J)!D=3!1#!>=3oB8B)!>)1)&!#=223!=0!(1W0)B)0'!X)>)6'3%0/G#0J)!)'!#3023!4)!2=3')I!6P)2'!>#!6#26#4)!4P(1W0)B)0'*!b(0(&#>)B)0'!%0!$)='!6%0'%=&0)&!>)!$&%E>WB)!)0!'&#1#3>>#0'!2=&!>#!J)2'3%0!4)!>P#&J=B)0'!<#&J)'I!B#32!$#&Q%32!%0!0)!$)='!$#2*! ]#02! 6)! 6#2! %0! 4(2#6'31)! ')B$%&#3&)B)0'! >#! J)2'3%0! 4)2! (1W0)B)0'2! 4PL\6)>! )0! i%=#0'! 2=&! >#!$&%$&3('(!L0#E>)L1)0'2!4)!>P%Ei)'!K$$>36#'3%0I!')>!D=)!v!Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False If Not Application.Intersect(Target, Me.Columns("A:J")) Is Nothing Then Target.Offset(1).Select End If Application.EnableEvents = True End Sub

! ?+@

Page 211: Cours VBA débutants.pdf

Changement de valeur "P(1W0)B)0'!/G#0J)I!2%=1)0'!6%0Q%04=!#1)6!>P(1W0)B)0'!$&(6(4)0'I!2)!$&%4=3'!>%&2D=)!>#!1#>)=&!

4P=0)!6)>>=>)!6G#0J)*!X=3'!>#!4(Q303'3%0!v!Private Sub Worksheet_Change(ByVal Target As Range)

"P(1W0)B)0'! )2'! >)1(! #$&W2! >)! 6G#0J)B)0'! 4)! >#! 1#>)=&I! 3>! 0P)2'! $#2! $%223E>)! 4)! &)2'#=&)&!23B$>)B)0'!>#!1#>)=&!$&(6(4)0')!4)!>#!6)>>=>)*!<%='!6%BB)!>)!$&(6(4)0'I!6)'!(1W0)B)0'!)2'!2=26)$'3E>)!4)!4(6>)06G)&!#22)e!#32(B)0'!4)2!(1W0)B)0'2!)0!6#26#4)I!%0!(13')!4%06!J(0(&#>)B)0'!4P#QQ)6')&!=0)!1#>)=&!#=\!6)>>=>)2!4)!>P#&J=B)0'!<#&J)'!#=!2)30!4)!6)'!(1W0)B)0'*!

! ?++

Page 212: Cours VBA débutants.pdf

Manipuler les contrôles V%=&!Q303&!6)!6%=&2!4(ip!#22)e!>%0JI!0%=2!#>>%02!'&#3')&!#22)e!2=66306')B)0'!4)!>#!B#03$=>#'3%0!4)2!

6%0'&m>)2!)'!4)2!Q%&B=>#3&)2*!F0!#$$)>>)!6%0'&m>)!4)2!(>(B)0'2!J&#$G3D=)2!#-#0'! >)=&!$&%$&)!6%4)!4)!Q%06'3%00)B)0'!D=3!2P30'WJ&)!#=\!(>(B)0'2!L\6)>*! 7>!)\32')!$>=23)=&2!B3>>3)&2!4)!6%0'&m>)2! 30'(J&#E>)2!4#02! L\6)>I! $=32D=)! '%=2! >)2! 6%0'&m>)2! K6'31)M! >)! 2%0'I! B#32! 0%=2! 0)! '&#3')&%02! D=)! 4)2! 6%0'&m>)2!$&%$%2(2!$#&!4(Q#='!$#&!L\6)>*!!

Deux familles de contrôles _32'%&3D=)B)0'I! L\6)>! $%22(4#3'! =0! i)=! 4)! 6%0'&m>)2! 2$(63Q3D=)2! $)&B)''#0'! 4)! Q#3&)! 4)2!

Q%&B=>#3&)2! 23B$>3Q3(2*! V%=&! 4)2! &#32%02! 4)! 6%B$#'3E3>3'(! #26)04#0')I! 6)2! 6%0'&m>)2! 2%0'! '%=i%=&2!432$%03E>)2I!B8B)!23!=0)!$#&'3)!4)!>)=&!4%6=B)0'#'3%0!0P)2'!$>=2!#66)223E>)*!C36&%2%Q'!&)6%BB#04)!4)!$&313>(J3)&!>P='3>32#'3%0!4)2!6%0'&m>)2!K6'31)MI!6)$)04#0'!>)2!6%0'&m>)2!Q%&B=>#3&)2!&)2')0'!E3)0!#4#$'(2!)'!#22)e!23B$>)!4P='3>32#'3%0!4#02!D=)>D=)2!6#2*!!

Les contrôles formulaires X3!1%=2!0P#1)e!i#B#32!='3>32(!>)2!6%0'&m>)2!Q%&B=>#3&)2I!1%=2!$%=1)e!2#=')&!6)'')!$#&'3)*!

!!")2!6%0'&m>)2!Q%&B=>#3&)2!2%0'!#66)223E>)2!#=!'&#1)&2!4)!>#!6%>>)6'3%0!XG#$)2*!/)&'#302!6%BB)!>)2!

e%0)2! 4P(43'3%0! %=! >)2! e%0)2! 6%BE30()2! %0'! ('(! &)04=2! 30#66)223E>)2! $%=&! >)2! 0%=1)#=\! 6>#22)=&2*!/)$)04#0'!3>!&)2')!D=#'&)!6%0'&m>)2!)06%&)!='3>32(2!4)!')B$2!)0!')B$2*!

")!6%0'&m>)!E%='%0*!!"#!6#2)!p!6%6G)&!!"#!6#2)!4P%$'3%0!!"#!e%0)!6%BE30()!4(&%=>#0')!

Avantages 7>! Q#='! E3)0! &)6%00#f'&)! D=P3>2! 0P)0! %0'! $#2! E)#=6%=$*! 7>! 0P-! #! &3)0! D=P%0! $=322)! Q#3&)! #1)6! 6)2!

6%0'&m>)2! D=P%0! 0)! $=322)! $#2! %E')03&! #1)6! >)=&2! G%B%>%J=)2! C2o[%&B2! 23! 6)! 0P)2'! =0)! 6)&'#30)!23B$>363'(!4)!>3#32%0!#1)6!>)2!4%00()2!4)!>#!Q)=3>>)*!

L0!)QQ)'I!>)=&!>%J3D=)!4P='3>32#'3%0!)2'!=0!$)=!43QQ(&)0')!4)!6)>>)!4)2!6%0'&m>)2!K6'31)M*!/%BB)!3>!2P#J3'! 4)! 6%0'&m>)2! P$=&)B)0'P! L\6)>I! 3>2! '&%=1)0'! >)=&2! 4%00()2! 4)! Q%06'3%00)B)0'! 4#02! L\6)>!%E>3J#'%3&)B)0'!)'!J(0(&#>)B)0'!4#02!>)!6>#22)=&!D=3!>)2!6%0'3)0'*!

")!6%0'&m>)!E%='%0! >=3!J#&4)!=0!#1#0'#J)!6)&'#30I! 3>!)2'!$%223E>)!4)! >=3!#QQ)6')&!0P3B$%&')!D=)>>)!$&%6(4=&)! $=E>3D=)! 6%BB)! (1W0)B)0'! />36*! ])! Q#3'I! 3>! 0P)2'! $#2! %E>3J#'%3&)! 4)! J(&)&! =0! 6%4)!(1W0)B)0'3)>!2$(63Q3D=)I!>=3!#''&3E=)&!=0)!$&%6(4=&)!6%BB)!$&%$&3('(!F0K6'3%0!2=QQ3'*!

/)2!6%0'&m>)2! 2%0'!)06%&)!='3>32(2!$#&6)!D=)!D=#04!%0! >)2!6%00#f'!E3)0I! 3>2! 2%0'!#22)e! 23B$>)2!p!B#03$=>)&*!

Inconvénients 7>2!2%0'!0)'')B)0'!B%302!Q#63>)2!j)06%&)!D=)k!p!B#03$=>)&!$#&!>)!6%4)!)'!#22)e!$)=!6%0Q3J=&#E>)2*!

K!$#&'!6)>#!3>!0P-!#!$#2!J&#04o6G%2)!p!>)=&!&)$&%6G)&*!!

Exemples h)!1%=2!432#32!$>=2!G#='!D=P3>2!2%0'!#22)e!43QQ363>)2!p!B#03$=>)&*!/%BB)!'%=i%=&2I!'%='!4($)04!4)!

6%BB)0'!%0!2P-!$&)04*!X=&!E3)0!4)2!#2$)6'2I!3>2!2%0'!#=223!23B$>)2!p!J(&)&!D=)!>)2!6%0'&m>)2!K6'31)M*!"#!43QQ36=>'(!#$$#&)0')!13)0'!4)!>#!B('G%4)!p!)B$>%-)&!$%=&!%E')03&!=0)!&(Q(&)06)!2=&!>)!6%0'&m>)!

p!B#03$=>)&!)'!4)!'&%=1)&!2)2!$&%$&3('(2!2$(63Q3D=)2*!

! ?+?

Page 213: Cours VBA débutants.pdf

"P)&&)=&!13)0'!2%=1)0'!4=!Q#3'!D=P%0!')0')!4P#66(4)&!p!>P%Ei)'!#=!'&#1)&2!4)!>#!6%>>)6'3%0!XG#$)2*!L0!)QQ)'I!3>2!2%0'!4)!'-$)!J(0(&3D=)!XG#$)*!!

F0!-!#66W4)!4%06!)0!(6&31#0'!Feuille.Shapes(Nom contrôle")

X)=>)B)0'!6)>#!&)01%3)!=0!%Ei)'!XG#$)!D=3!0)!$&(2)0')!$#2!#32(B)0'!>)2!$&%$&3('(2!30'(&)22#0')2!4)!0%2!6%0'&m>)2*!L0!Q#3'I!>)2!6%0'&m>)2!Q%&B=>#3&)2!306%&$%&(2!2%0'!)\$%2(2!p!'&#1)&2!$>=23)=&2!6%>>)6'3%02!2$(63Q3D=)2! 4)! >P%Ei)'!`%&a2G))'*! ]#02! >)! 6#2! D=3! 0%=2! 30'(&)22)I! 3>! 2P#J3'! 4)2! 6%>>)6'3%02I! S=''%02I!/G)6aS%\)2I!F$'3%0S=''%02!)'!]&%$]%Y02*!

L>>)2!2)!B#03$=>)0'!6%BB)!'%=')2!>)2!6%>>)6'3%02!6)!D=3!23B$>3Q3)!(0%&B(B)0'!>#!$&%J&#BB#'3%0*!")!6%4)!2=31#0'!1#!B)''&)!)0!$>#6)!=0!Q%&B=>#3&)*!

Public Sub Calculer() ThisWorkbook.Worksheets("Recapitulatif").Calculate End Sub Public Sub ConstructForm()

ulatif")

'ajoute un bouton de calcul Dim Feuille As Worksheet, rngPos As Range, rngVal As Range Dim zlist As DropDown, compteur As Long, Opt As OptionButton Set Feuille = ThisWorkbook.Worksheets("Recapit Set rngPos = Feuille.Cells(1, 1) 'ajout du bouton With Feuille.Buttons.Add(rngPos.Left, rngPos.Top, rngPos.Resize(, 2).Width, rngPos.Height) .Caption = "Calculer maintenant" .OnAction = "Calculer" End With 'ajout d'une case à cocher Set rngPos = rngPos.Offset(2) Set rngVal = Feuille.Range("F1") Feuille.CheckBoxes.Add rngPos.Left, rngPos.Top, rngPos.Width, rngPos.Height With Feuille.CheckBoxes(1) .Caption = "Jours feriés inclus" .Display3DShading = True .LinkedCell = rngVal.Address(True, True, xlA1) .Value = False End With 'ajout de sept bouton d'option Set rngPos = rngPos.Offset(-2, 3) Set rngVal = rngVal.Offset(2) For compteur = 1 To 7 Set Opt = Feuille.OptionButtons.Add(rngPos.Left, rngPos.Top, rngPos.Width, rngPos.Height) Opt.Caption = WeekdayName(compteur, False, vbMonday) Opt.LinkedCell = rngVal.Offset(compteur - 1).Address(True, True, xlA1) Opt.Value = False Set rngPos = rngPos.Offset(1) Next compteur 'ajout d'une zone de liste Set rngPos = Feuille.Range("A5") Feuille.Range("G1").Value = "Janvier" Feuille.Range("G2").Value = "Février" Feuille.Range("G1:G2").AutoFill Destination:=Feuille.Range("G1:G12"), Type:=xlFillDefault Set zlist = Feuille.DropDowns.Add(rngPos.Left, rngPos.Top, rngPos.Resize(, 2).Width, rngPos.Height) With zlist .DropDownLines = 6

! ?+U

Page 214: Cours VBA débutants.pdf

.LinkedCell = rngVal.Offset(10) .ListFillRange = "G1:G12" End With End Sub

Les contrôles MsForms /)!2%0'!>)2!6%0'&m>)2!D=)!>P%0!='3>32)!$%=&!>)2!Q%&B=>#3&)2!:SK*!/)2!6%0'&m>)2!2%0'!4)!>#!Q#B3>>)!

4)2! 6%0'&m>)2!K6'31)MI! 6P)2'opo43&)! 4)2! 6%0'&m>)2! Q%=&032! $#&! =0! 6%B$%2#0'*! ")! 6%B$%2#0'! 2P#$$)>>)!C2[%&B2I!3>!)2'!#66)223E>)!3043QQ(&)BB)0'!$%=&!>)2!Q)=3>>)2!%=!$%=&!>)2!Q%&B=>#3&)2*!

d=)>!D=)!2%3'!>)=&!6%0')0)=&!j[)=3>>)!4)!6#>6=>!%=!g2)&[%&BkI!3>2!$)=1)0'!8'&)!#i%='(2!p!>#!6&(#'3%0!j])23J0!<3B)k!$#&Q%32! #$$)>(! #i%='! 2'#'3D=)I!%=!p! >P)\(6='3%0! jT=0!<3B)k!D=3! )2'! >P#i%='!4-0#B3D=)*!V%=&!6&()&!4-0#B3D=)B)0'!=0!6%0'&m>)I!3>!Q#='!4)!'%=')!Q#q%0!6%00#f'&)!>)!0%B!4)!2#!6>#22)*!!

!O%=2!0)!'&%=1)&%02!4#02!6)!'#E>)#=!D=)!>)2!6%0'&m>)2!Q%=&032!$#&!>)!6%B$%2#0'!C2[%&B2*!Contrôle Classe

S%='%0! [%&B2*/%BB#04S=''%0*+!Ü%0)!4)!')\')! [%&B2*<)\'S%\*+!/#2)!p!6%6G)&! [%&B2*/G)6aS%\*+!/#2)!4P%$'3%0! [%&B2*F$'3%0S=''%0*+!"32')! [%&B2*"32'S%\*+!"32')!4(&%=>#0')! [%&B2*/%BE%S%\*+!S%='%0!E#26=>)! [%&B2*<%JJ>)S=''%0*+!g$]%Y0! [%&B2*X$30S=''%0*+!S#&&)!4)!4(Q3>)B)0' [%&B2*X6&%>>S#&*+!

"#!B#03$=>#'3%0!4)2!6%0'&m>)2!)2'! )02=3')! 2)023E>)B)0'! 34)0'3D=)I!$=32D=)!6)! 2%0'!4)!%Ei)'2I!%0!#J3'!4%06!2=&!>)2!$&%$&3('(2!)'!B('G%4)2!4)2!6%0'&m>)2!)'!%0!JW&)!>)=&2!(1W0)B)0'2*!

")2!6%0'&m>)2!306%&$%&(2!2%0'!4)2!6%06%>>)6'3%0! F"LFEi)6'2! 4)! >P%Ei)'! `%&a2G))'*! 7>! 0P)\32')! $#2! 4)! 6%>>)6'3%0! 2$(63Q3D=)! $#&! '-$)! 4)!6%0'&m>)! 23B3>#3&)! p! 6)! D=)! 0%=2! #1%02! 1=! $&(6(4)BB)0'I! 1%=2! 4)1)e! 4%06!$#22)&! $#&! >#! 6%>>)6'3%0!F"LFEi)6'2! !=0!6%0'&m>)!)\32'#0'*!

/%BB)0q%0 B)!Q%&B=>#3&)!D=)!4#02!>P)\)B$>)!$&(6(4)0'*!Public Sub ConstructFormActiveX()

Contrôles incorporés '&m>)2!$>#6(2!2=&!=0)!Q)=3>>)!4)!6#>6=>*!7>2!#$$#&'3)00)0'!p!>#!

$%=&!6&()&!%=!$%=&!#'')304&)2!$#&!&)6&()&!>)!B8

Dim zlist As MSForms.C

'ajoute un bouton de calcul Dim Feuille As Worksheet, rngPos As Range, rngVal As Range omboBox, compteur As Long, Opt As MSForms.OptionButton Set Feuille = ThisWorkbook.Worksheets("Recapitulatif") Set rngPos = Feuille.Cells(1, 1) 'ajout du bouton With Feuille.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=rngPos.Left, Top:=rngPos.Top, Width:=rngPos.Resize(, 2).Width _ , Height:=rngPos.Height).Object .AutoSize = True .Caption = "Calculer maintenant" End With 'ajout d'une case à cocher Set rngPos = rngPos.Offset(2) Set rngVal = Feuille.Range("F1") Feuille.OLEObjects.Add "Forms.CheckBox.1", , , , , , , rngPos.Left, rngPos.Top, rngPos.Width, rngPos.Height With Feuille.OLEObjects(Feuille.OLEObjects.Count).Object

! ?+,

Page 215: Cours VBA débutants.pdf

.AutoSize = True .Caption = "Jours feriés inclus" .Value = False End With 'ajout de sept bouton d'option Set rngPos = rngPos.Offset(-2, 3) Set rngVal = rngVal.Offset(2) For compteur = 1 To 7 rngPos.EntireRow.RowHeight = 15 Set Opt = Feuille.OLEObjects.Add("Forms.OptionButton.1", , , , , , , rngPos.Left, rngPos.Top, rngPos.Width, rngPos.Height).Object Opt.Caption = WeekdayName(compteur, False, vbMonday) Opt.Value = False Set rngPos = rngPos.Offset(1) Next compteur 'ajout d'une zone de liste Set rngPos = Feuille.Range("A5") Set zlist = Feuille.OLEObjects.Add("Forms.ComboBox.1", , , , , , , rngPos.Left, rngPos.Top, rngPos.Resize(, 2).Width, rngPos.Height).Object With zlist .ListRows = 6 For compteur = 1 To 12 zlist.AddItem MonthName(compteur) Next compteur End With End Sub

/%BB)!1%=2! >)!1%-)eI! >P)02)BE>)!4)2!6%0'&m>)2!)2'!#i%='(!$#&! >)!E3#32!4)! >#!B('G%4)!K44!4)! >#!6%>>)6'3%0!F"LFEi)6'2*!:%=2!0%')&)e!(J#>)B)0'!D=)!>)2!6%0'&m>)2!0P='3>32)0'!$>=2!4)!4%00()2!>3()2!2=&!>#!Q)=3>>)!4)!6#>6=>*!O%0!D=P3>2!0)!2#=&#3)0'!$#2!>)!Q#3&)I!B#32!$#&6)!D=P3>2!0P)0!%0'!$#2!0(6)22#3&)B)0'!E)2%30*!L0!)QQ)'I!>)2!6%0'&m>)2!K6'31)M!JW&)0'!>)=&2!$&%$&3('(2!)0!30')&0)I!6)>>)2o63!2%0'!2#=1)J#&4()2!>%&2D=P%0! 2#=1)J#&4)! >)! 6>#22)=&I! 3>! 0P-! #! 4%06! $>=2! 0(6)223'(! 4)! >)2! 2'%6a)&! 4#02! 4)2! 6)>>=>)2! 4=!6>#22)=&*!

X3!>P#$$&%6G)!&)2')!#22)e!23B3>#3&)I!1%=2!0%')&)e!D=)!$%=&!>#!J)2'3%0!4=!E%='%0!4)!6%BB#04)I!>)!6#2!)2'!0)'')B)0'!$>=2!6%B$>)\)*!L0!)QQ)'I!$%=&!D=P=0!E%='%0!K6'31)M!4(6>)06G)!=0)!#6'3%0!>%&2D=P%0!6>3D=)!4)22=2I!3>!Q#='!J(&)&!2%0!(1W0)B)0'!6>36*!F&!2=&!=0!6%0'&m>)!#i%='(!4-0#B3D=)B)0'I!3>!0P)2'!$#2!#32(!4P#i%=')&!4-0#B3D=)B)0'!>)!6%4)!4)!>P(1W0)B)0'!/>36*!/)63!1%=4&#3'!43&)!D=P%0!4)1&#3'!(6&3&)!4#02!>)!B%4=>)!4)!>#!Q)=3>>)!D=3!1#!6%0')03&!>)!E%='%0!>#!$&%6(4=&)!(1W0)B)0'3)>>)!/>36!#1#0'!D=)!>)!E%='%0!0P)\32')*!/)63!0P#!$#2!1&#3B)0'!4P30'(&8'*!F0!0)!J(0W&)!4%06!D=)! '&W2! &#&)B)0'!4)2!6%0'&m>)2!E%='%02!4-0#B3D=)B)0'*!

V%=&! J(&)&! =0! (1W0)B)0'! 4)! 6%0'&m>)! K6'31)M! 306%&$%&(2! 4#02! L\6)>I! 3>! Q#='! (6&3&)! >)! 6%4)!4P(1W0)B)0'!4#02!>)!B%4=>)!4)!>#!Q)=3>>)!D=3!6%0'3)0'!>)!6%0'&m>)I!6)!D=3!4#02!0%'&)!6#2!4%00)&#3'!=0!6%4)!4=!'-$)!v!Private Sub CommandButton1_Click() Call Calculer End Sub

7>! )2'! $%223E>)! 4)! &(#>32)&! 4)2! %$(&#'3%02! &)>#'31)B)0'! 6%B$>)\)2! #1)6!4)2! 6%4)2! #22)e! 23B$>)2*!7B#J30%02! >)!26(0#&3%!2=31#0'*!O%=2!#1%02!=0)!2(&3)!4)!4%00()!$2)=4%! >30(#3&)I!D=)!0%=2!$%=&&3%02!&)$&(2)0')&!2%=2!>#!Q%&B)!2=31#0')!v!

! ?+N

Page 216: Cours VBA débutants.pdf

!7>! Q#=4&#3'! $%=1%3&! 6&()&! =0! 2-2'WB)! $)&B)''#0'! 4)! 4(Q303&! 23B$>)B)0'! =0)! >3B3')! G#=')! )'! =0)!

>3B3')!E#22)!4P=0)!e%0)!4)!>#!6%=&E)!2=&!>#D=)>>)!0%=2!1%=4&3%02!6#>6=>)&!=0)!&(J&)223%0!>30(#3&)*!]3'!6%BB)!6)>#I!q#!p!>P#3&!6%B$>3D=(!)'!$%=&'#0'!6P)2'!&)>#'31)B)0'!23B$>)!p!Q#3&)*!!

V%=&!D=)!>)2!>3B3')2!#$$#&#322)0'!2=&!>)!J&#$G3D=)I!0%=2!4)1%02!J(0(&)&!4)=\!$2)=4%2!2(&3)2!6&(#0'!4)2! '&#3'2! 1)&'36#=\! )0! 4(E='! )'! )0! Q30! 4)! 6%=&E)*! V%=&! 0)! $#2! J80)&! >P='3>32#')=&I! 0%=2! (6&3&%02! >)2!4%00()2!4)!2)2!2(&3)2!4#02!4)2!6)>>=>)2!23'=()2!2%=2!>)!J&#$G3D=)!#Q30!D=P)>>)!0)!2%3'!$#2!1323E>)I!)'!0%=2!>)2!B#2D=)&%02!#=223!4#02!>#!>(J)04)*!/%BB)!3>!0P)\32')!$#2!4)!B('G%4)!23B$>)!$%=&!Q#3&)!J>322)&!>)2!>3B3')2!)0!$#&'#0'!4=!J&#$G3D=)I!0%=2!#>>%02!='3>32)&!4)=\!6%0'&m>)2!E#&&)!4)!4(Q3>)B)0'!jX6&%>>S#&k!D=3!23B=>)&%0'!6)!4($>#6)B)0'*!L0Q30!0%=2!#i%=')&%02! >)!6#>6=>!4)! &(J&)223%0!)'!=0!#QQ36G#J)!4)!6)>=3o63!4#02!>)!J&#$G3D=)*!Public Sub Regression() Dim Feuille As Worksheet, LimBasse As Range, LimHaute As Range Dim Graphique As Chart, MaSerie As Series, Barre As MSForms.ScrollBar Dim Graphe As ChartObject, Affichage As String Set Feuille = ThisWorkbook.Worksheets("Feuil3") Set Graphe = Feuille.ChartObjects(1) Set Graphique = Graphe.Chart 'crée deux plages de deux couples de valeur pour les limites Set LimBasse = Feuille.Range("E1:F2") Set LimHaute = Feuille.Range("E4:F5") 'récupére les valeurs max des axes pour initialiser les limites LimBasse.Cells(1).Value = Graphique.Axes(xlCategory).MinimumScale LimBasse.Cells(2).Value = Graphique.Axes(xlValue).MinimumScale LimBasse.Cells(3).Formula = "=" & LimBasse.Cells(1).Address LimBasse.Cells(4).Value = Graphique.Axes(xlValue).MaximumScale LimHaute.Cells(1).Value = Graphique.Axes(xlCategory).MaximumScale LimHaute.Cells(2).Value = Graphique.Axes(xlValue).MinimumScale LimHaute.Cells(3).Formula = "=" & LimHaute.Cells(1).Address LimHaute.Cells(4).Value = Graphique.Axes(xlValue).MaximumScale 'ajoute les limites au graphe Set MaSerie = Graphique.SeriesCollection.NewSeries With MaSerie

! ?+.

Page 217: Cours VBA débutants.pdf

! ?+5

.Values = LimBasse.Cells(2).Resize(2) .XValues = LimBasse.Cells(1).Resize(2) .MarkerStyle = xlMarkerStyleNone With .Border .LineStyle = xlContinuous .Weight = xlMedium End With End With Set MaSerie = Graphique.SeriesCollection.NewSeries With MaSerie .Values = LimHaute.Cells(2).Resize(2) .XValues = LimHaute.Cells(1).Resize(2) .MarkerStyle = xlMarkerStyleNone With .Border .LineStyle = xlContinuous .Weight = xlMedium End With End With 'ajout du premier controle scrollbar Set Barre = Feuille.OLEObjects.Add(ClassType:="Forms.ScrollBar.1", Left:=Graphe.Left, Top:=Graphe.BottomRightCell.Offset(2).Top, Width:=Graphe.Width, Height:=Graphe.BottomRightCell.Offset(2).Height).Object With Barre .BackColor = vbBlue .Min = LimBasse.Cells(1).Value .Max = LimHaute.Cells(1).Value .LinkedCell = LimBasse.Cells(1).Address(True, True, xlA1) End With 'ajout du second controle scrollbar Set Barre = Feuille.OLEObjects.Add(ClassType:="Forms.ScrollBar.1", Left:=Graphe.Left, Top:=Graphe.BottomRightCell.Offset(4).Top, Width:=Graphe.Width, Height:=Graphe.BottomRightCell.Offset(4).Height).Object With Barre .BackColor = vbGreen .Min = LimBasse.Cells(1).Value .Max = LimHaute.Cells(1).Value .LinkedCell = LimHaute.Cells(1).Address(True, True, xlA1) End With 'gestion de la regression With Feuille.Range("G1") .FormulaR1C1Local = "=INDEX(L2C1:L3601C2;L1C5;1)" .Offset(1).FormulaR1C1Local = "=INDEX(DROITEREG(DECALER(L1C2;L1C5;;L4C5-L1C5);DECALER(L1C1;L1C5;;L4C5-L1C5);VRAI;VRAI);1)" .Offset(2).FormulaR1C1Local = "=INDEX(DROITEREG(DECALER(L1C2;L1C5;;L4C5-L1C5);DECALER(L1C1;L1C5;;L4C5-L1C5);VRAI;VRAI);2)" .Offset(3).FormulaR1C1Local = "=""y = "" & ARRONDI(L(-2)C;6) &""x + "" & ARRONDI(L(-1)C;6)" Affichage = "=" & Feuille.Name & "!" & .Offset(3).Address(True, True, xlA1) With Graphique.TextBoxes.Add(10, 10, 200, 50) .Formula = Affichage End With End With End Sub

Page 218: Cours VBA débutants.pdf

! ?+9

7>!2P#J3'!4P=0!6%4)!#22)e!23B$>)!$%=&!J(&)&!=0)!%$(&#'3%0!D=3!)>>)!)2'!6%B$>)\)*!"#!6%B$>)\3'(!4)!6)'!)\)&636)!&(234)!$>=2!4#02!>P(6&3'=&)!4)2!Q%&B=>)2!$)&B)''#0'!4P%E')03&!>#!&(J&)223%0!D=)!4#02!>)!6%4)!)0!>=3oB8B)*!!

UserForm O%=2!0P#>>%02!363!D=)!2=&1%>)&!>#!$&%J&#BB#'3%0!4)2!Q%&B=>#3&)2*!7>!2P#J3'!4P=0!2=i)'!)\'&8B)B)0'!

1#2')!D=)!0%=2!0)!'&#3')&%02!$#2!)0!4('#3>!4#02!6)!6%=&2*!V#&Q%32! #$$)>()2!E%f')2!4)!43#>%J=)I! Q%&B=>#3&)I! Q)=3>>)Z>)!g2)&[%&B!2)&'! p! J(0(&)&!=0)! Q)=3>>)!

6%0')0#0'!4)2!6%0'&m>)2!$)&B)''#0'!J(0(&#>)B)0'!4P30')&#J3&!#1)6!>P='3>32#')=&*!/%BB)0q%02!4%06!$#&!6&()&!=0!g2)&[%&B*!F=1&)e!=0!6>#22)=&!6%0')0#0'!4)2!2(&3)2!4)!4%00()2!

D=)!>P%0!2%=G#3')!'&#6)&I!4#02!0%'&)!6#2!v!

!K>>)e!4#02! >P(43')=&!:SK!jK>'t[++k*!]#02! >)!B)0=!702)&'3%0I!6>3D=)e!2=&!g2)&[%&B*!:%=2!#>>)e!

%E')03&!v!

Page 219: Cours VBA débutants.pdf

! ?+;

!/%BB)! 1%=2! >)! 1%-)eI! >P%Ei)'! g2)&[%&B! )2'! =0)! E%f')! 4)! 43#>%J=)! 134)*! "P)013&%00)B)0'! 4)!

4(1)>%$$)B)0'! 1%=2! $&%$%2)! #=223! =0)! E%f')! p! %='3>! D=3! 6%0'3)0'! >)2! 6%0'&m>)2! D=P3>! )2'! $%223E>)!4P#i%=')&!p!>#!E%f')!4)!43#>%J=)*!:%=2!4)1)e!#1%3&!#=223!6%BB)!4#02!>P)\)B$>)!>P#QQ36G#J)!4)!>#!Q)08'&)!4)2!$&%$&3('(2!4)!>P%Ei)'!g2)&[%&B*!X3!')>!0P)2'!$#2!>)!6#2I!Q#3')2!>#!#QQ36G)&!)0!#$$=-#0'!2=&![,*!

KJ&#04322)e! =0!$)=! >)! Q%&B=>#3&)*!:%=2!$%=1)e! >)! Q#3&)! )0! '3&#0'! >)! 6%30! 30Q(&3)=&!4&%3'! #1)6! >#!2%=&32I!%=!)0!B%43Q3#0'!>)2!$&%$&3('(2!_)3J'G!)'!`34'G*!

X=&!>)!Q%&B=>#3&)I!#i%='%02!=0!E%='%0*!V%=&!Q#3&)!6)>#I!1%=2!4)1)e!2(>)6'3%00)&!>)!6%0'&m>)!E%='%0!4)! 6%BB#04)! 4#02! >#! E%f')! p! %='3>2! )'! >)! '&#6)&! 2=&! >)! Q%&B=>#3&)*! Ki%='%02! #=223I! $>=23)=&2! #='&)2!6%0'&m>)2!$%=&!%E')03&!=0!Q%&B=>#3&)!D=3!&)22)BE>)!p!v!

Page 220: Cours VBA débutants.pdf

! ??@

!")!6%0'&m>)!23'=(!2%=2!>P30'3'=>(!P"#E)>UP!)2'!=0)!e%0)!4)!>32')*!O%=2!#>>%02!6%BB)06)&!$#&!B%43Q3)&! >)2! ')\')2*!V%=&!6)>#! 3>! Q#='!B%43Q3)&! >#!$&%$&3('(! P/#$'3%0P!

4)2!6%0'&m>)2!4#02! >#! Q)08'&)!4)2!$&%$&3('(2*!/)>>)o63!#QQ36G)! >)2!$&%$&3('(2!4=!6%0'&m>)!#6'3QI! 3>! 2=QQ3'!4%06!4)!2(>)6'3%00)&!>)!6%0'&m>)!$%=&!#1%3&!#66W2!p!2)2!$&%$&3('(2*!O%=2!1%=>%02!%E')03&!v!

!L'! 1%3>#! &(#>32(! 0%'&)! Q%&B=>#3&)*! V%=&! >P302'#0'! 3>! 0)! Q#3'! &3)0*! V%=&! D=P3>! $=322)! 30')&#J3&! #1)6!

>P='3>32#')=&I!0%=2!#>>%02!4)1%3&!J(&)&!2%0!6%4)!4)!Q%06'3%00)B)0'I!2%0!#QQ36G#J)!)'!(1)0'=)>>)B)0'!2#!6%BB=036#'3%0*!

Page 221: Cours VBA débutants.pdf

! ??+

!Affichage du formulaire V%=&!$%=1%3&!#QQ36G)&! >)!Q%&B=>#3&)I!0%=2!#>>%02!4%06!#$$)>)&!6)>=3o63!4)$=32!=0)!$&%6(4=&)*!F0!

4(6>)06G)! >P#QQ36G#J)!4P=0! Q%&B=>#3&)!)0!#$$)>#0'! >#!B('G%4)!XG%Y!4)! >P%Ei)'!g2)&[%&B*!Ki%='%02!p!0%'&)!$&%i)'!=0!B%4=>)!2'#04#&4I!)'!(6&31%02!>)!6%4)!2=31#0'*!Public Sub TraceCourbe() UserForm1.Show End Sub

/)'')!B('G%4)!XG%Y! #'')04! =0! #&J=B)0'! Q#6=>'#'3Q! 0%BB(!C%4#>! D=3! )2'! =0! E%%>()0! J(&#0'! >#!B%4#>3'(*!

g0! Q%&B=>#3&)! C%4#>! )2'! =0! Q%&B=>#3&)! D=3! E>%D=)! >P)\(6='3%0! 4=! 6%4)! #$$)>#0'! '#0'! D=)! >)!Q%&B=>#3&)!)2'!1323E>)*!h)!0P3&#32!$#2!$>=2!>%30!4#02!>)!4('#3>!$=32D=)!0%=2!0)!1)&&%02!$#2!363!>#!J)2'3%0!4)2!Q%&B=>#3&)2!0%0!B%4#=\*!X3!>P#&J=B)0'!)2'!%B32I!>)!Q%&B=>#3&)!)2'!'%=i%=&2!B%4#>*!

X3!1%=2!)\(6=')e!6)!6%4)I!1%=2!1%-)e!D=)!1%'&)!Q%&B=>#3&)!2P#QQ36G)I!B#32!D=%3D=)!1%=2!Q#223)e!3>!0)!2)!$#22)!&3)0*!V%=&!D=P3>!-!#3'!>#!$%223E3>3'(!4P30')&#J3&I!3>!Q#='!(6&3&)!=0!6%4)!4P30')&#6'3%0*!

!Gestion des évènements ")2! 6%0'&m>)2! 2%0'! 4)2! (>(B)0'2! #$$#&')0#0'! #=! Q%&B=>#3&)*! ")2! (1W0)B)0'2! D=P3>2! &)q%31)0'!

4%31)0'!4%06!8'&)!J(&(!4#02! >)!B%4=>)!4)!6%4)!4)!6)>=3o63*!")! Q%&B=>#3&)! #=223!$%22W4)! 2)2!$&%$&)2!(1W0)B)0'2*!/%BB)0q%02!$#&!J(&)&!>P303'3#>32#'3%0!4=!Q%&B=>#3&)I!6P)2'opo43&)!>P(1W0)B)0'!D=3!2)&#!>)1(!D=#04! >)! Q%&B=>#3&)! 2)&#! #6'31(*! V%=&! 6)>#I! &)'%=&0)&! 4#02! 1%'&)! Q%&B=>#3&)! )'! #$$=-)e! 2=&! [5! $%=&!#QQ36G)&!>)!B%4=>)!4)!6%4)!4=!Q%&B=>#3&)*!:%=2!4)1&3)e!1%3&!#$$#&#f'&)!v!Option Explicit Private Sub UserForm_Click() End Sub

V#&!4(Q#='!>P)013&%00)B)0'!1%=2!4%00)!>#!4(Q303'3%0!4)!>P(1W0)B)0'!$#&!4(Q#='!4)!>P(>(B)0'!#6'3QI!4#02!0%'&)!6#2!>P(1W0)B)0'!/>36a!4)!>P%Ei)'!g2)&[%&B*!

:%=2!$%=1)e!#66(4)&!p!>#!>32')!4)2!%Ei)'2!$#&!>#!>32')!4(&%=>#0')!4)!J#=6G)!

!

Page 222: Cours VBA débutants.pdf

! ???

L'!p!>#!>32')!4)2!(1W0)B)0'2!4=!6%0'&m>)!$#&!6)>>)!4)!4&%3')!v!

!b(&%02! 4%06! 0%'&)! (1W0)B)0'! 703'3#>3e)*! ]#02! 6)'! (1W0)B)0'! 0%=2! #>>%02! (6&3&)! >)! 6%4)!

4P303'3#>32#'3%0*!Option Explicit Private Plage As Range Private Sub UserForm_Initialize() Dim Feuille As Worksheet, cmpt As Long Set Feuille = ThisWorkbook.Worksheets(1) Set Plage = Feuille.UsedRange Me.ComboBox1.Style = fmStyleDropDownList Me.ListBox1.MultiSelect = fmMultiSelectMulti 'rempli les zones de liste avec les noms des séries For cmpt = 1 To Plage.Columns.Count Me.ListBox1.AddItem Plage.Cells(cmpt).Value Me.ComboBox1.AddItem Plage.Cells(cmpt).Value Next cmpt 'Bloque la zone d'option tant que CheckBox1 n'est pas cochée Me.Frame1.Enabled = False End Sub

Page 223: Cours VBA débutants.pdf

! ??U

X3!0%=2!)\(6='%02!0%'&)!$&%6(4=&)I!0%=2!#>>%02!%E')03&!>P#QQ36G#J)!4=!Q%&B=>#3&)!6%BB)!v!

!C#32!$%=&!>P302'#0'!3>!0P)2'!'%=i%=&2!$#2!$%223E>)!4P30')&#J3&!#1)6!>)!Q%&B=>#3&)*!O%=2!4)1%02!#=223!

(6&3&)!>)2!(1W0)B)0'2!2=31#0'2!v!'affiche la zone d'option quand la case légende est cochée Private Sub CheckBox1_Change() Me.Frame1.Enabled = Me.CheckBox1.Value End Sub 'gère le bouton annuler Private Sub CommandButton2_Click() Unload Me End Sub 'gère le bouton de tracé Private Sub CommandButton1_Click() Dim Graphe As Chart, compteur As Long Dim PlageX As Range, PlageY As Range, MaSerie As Series For compteur = 0 To Me.ListBox1.ListCount - 1 If Me.ListBox1.Selected(compteur) Then If Graphe Is Nothing Then Set Graphe = ThisWorkbook.Charts.Add Graphe.ChartArea.Clear Graphe.ChartType = xlXYScatter End If Set PlageX = Plage.Columns(Me.ComboBox1.ListIndex + 1) Set PlageY = Plage.Columns(compteur + 1) Set MaSerie = Graphe.SeriesCollection.NewSeries With MaSerie .Values = PlageY .XValues = PlageX

Page 224: Cours VBA débutants.pdf

! ??,

End With End If Next compteur If Not Graphe Is Nothing Then If Len(Me.TextBox1.Text) > 0 Then Graphe.HasTitle = True Graphe.ChartTitle.Characters.Text = Me.TextBox1.Text End If Graphe.HasLegend = Me.CheckBox1.Value If Graphe.HasLegend And Me.OptionButton2 Then Graphe.Legend.Position = xlLegendPositionLeft End If End If Me.Hide End Sub

O%=2!$%=&&%02!#>%&2!p!>P)\(6='3%0!&)B$>3&!0%'&)!Q%&B=>#3&)!6%BB)!v!

!L'!)0!6>3D=#0'!2=&!P<&#6)&P!0%=2!%E'3)04&%02!v!

Page 225: Cours VBA débutants.pdf

! ??N

!h=2D=)!>pI!$#2!4)!J&%22)!43QQ36=>'(*!/)$)04#0'!23!6)!Q%&B=>#3&)!Q%06'3%00)I!3>!)2'!#='%0%B)I!6P)2'opo

43&)!D=P3>!0)!6%BB=03D=)!$#2!#1)6! >P#$$>36#'3%0!#$$)>#0')*!L0! >P%66=&&)06)!6)!0P)2'!$#2!J80#0'I!B#32!2=$$%2%02!D=P3>!-!#3'!E)2%30!4)!2#1%3&!23!>P='3>32#')=&!p!'&#6)&!=0)!6%=&E)!%=!2P3>!#!6>3D=(!2=&!>)!E%='%0!PK00=>)&P*!

:%=2! >P#1)e!$)='!8'&)!%=E>3(I!B#32! >)!B%4=>)!4)!6%4)!4P=0!g2)&[%&B!)2'!=0!B%4=>)!%Ei)'*!/)>#!1)='!43&)I! )0'&)!#='&)I!D=P3>! )2'!$%223E>)!4P#i%=')&!4)2!B)BE&)2!p! 2%0! 30')&Q#6)*!O%=2!#>>%02!4%06! >=3!#i%=')&!=0)!$&%$&3('(!PK00=>)&P!)0!>)6'=&)!2)=>)!D=3!&)01)&&#!:&#3!23!>)!E%='%0!K00=>)&!#!('(!6>3D=(*!

V%=&!(6&3&)!=0)!$&%$&3('(I!%0!='3>32)!>P302'&=6'3%0!V&%$)&'-!)0!>3)=!)'!$>#6)!4)!>P302'&=6'3%0!X=E*!F0!4%3'!#i%=')&!=0!B%'!6>(!4%00#0'!>)!2#02!4)!>P#6'3%0I!)0!>P%66=&&)06)!b)'!$%=&!>3&)!>#!$&%$&3('(!)'!")'!$%=&!>P(6&3&)!j%=!X)'!2P3>!2P#J3'!4P=0!%Ei)'k*!

O%=2!#>>%02!4%06!B%43Q3)&!0%'&)!6%4)!4)!Q%&B=>#3&)!')>!D=)!v!Private Plage As Range, m_Cancel As Boolean Public Property Get Annuler() As Boolean Annuler = m_Cancel End Property 'gère le bouton annuler Private Sub CommandButton2_Click() m_Cancel = True Me.Hide End Sub

L'!0%'&)!6%4)!#$$)>#0'!#3023!v!Public Sub TraceCourbe() UserForm1.Show If UserForm1.Annuler = True Then MsgBox "tracé annuler par l'utilisateur" End If Unload UserForm1 End Sub

O%=2! $%=&&3%02! ='3>32)&! =0! 6%4)! 23B3>#3&)! $%=&! D=)! >)! 6%4)! #$$)>#0'! )01%3)! 4)2! 30Q%&B#'3%02!4P303'3#>32#'3%0!#=!Q%&B=>#3&)*!

Page 226: Cours VBA débutants.pdf

! ??.

Conclusion O%=2!#1%02!1=!)02)BE>)!>#!E#2)!4)!>#!$&%J&#BB#'3%0!:SK*!/%BB)!0%=2!>P#1%02!1=!)>>)!)2'!#22)e!

23B$>)! $=32D=)! >)! >#0J#J)! 0)! 6%0'3)0'! $#2! (0%&B(B)0'! 4P302'&=6'3%0*! <%='! &)$%2)! )0! Q#3'! 2=&! 1%'&)!6%00#322#06)!4=!B%4W>)!%Ei)'!4PL\6)>!)'!4%06!2=&!1%'&)!6%00#322#06)!4PL\6)>*!

7>! )\32')! E3)0! 2=&! 4)! 0%BE&)=2)2! $%223E3>3'(2! 4)! $>=2! 4)! $&%J&#BB#'3%0! #1)6! :SK! D=)! 0%=2!0P#1%02!$#2!'&#3'(!363*!:%=2!)0!'&%=1)&)e!4)!0%BE&)=\!)\)B$>)2!2=&!"#!>P)\6)>>)0'!23')!4)!C36G)>!<#0J=-!#"*!