Cours VBA débutants.pdf

Post on 13-Aug-2015

688 views 60 download

Transcript of 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!

! +

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!

! ?

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

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 ************************************************************************************************************************************ +?;!

! ,

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

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****************************************************************************************************************************** +;;!

! .

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

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

/)$)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!

!

! ;

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)'*!

!

! +@

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!

!

! ++

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*!

! +?

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

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!)&&)=&*!!

! +,

/%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

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!

!

! +.

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

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

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!

!

! +;

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

! ?@

")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!

! ?+

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

! ??

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

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

! ?,

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

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*!

! ?.

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

")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

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*!

! ?;

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@

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+

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?

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

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,

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

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.

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

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

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;

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

! ,@

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

! ,+

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*!

! ,?

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

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

! ,,

:%=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

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

! ,.

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

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

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

! ,;

É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@

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+

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?

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

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,

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

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.

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

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

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;

"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

!

! .@

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

! .+

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*!

! .?

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

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

! .,

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

]#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

! ..

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

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

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

! .;

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@

"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+

")!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?

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

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,

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

")!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.

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

'**************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

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;

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@

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+

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?

"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

])! !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,

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

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.

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

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

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;

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!

! ;@

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(*!!

! ;+

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

! ;?

]#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

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!>#!>

! ;,

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

")!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)

! ;.

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

/%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

!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*!

! ;;

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)*!

! +@@

/)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')*!

! +@+

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!

! +@?

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

"#!23B$>)!6%>>)6'3%0!`%&aXG))'2!2)!4(6%B$%2)!')>>)!D=)!v!

!

! +@,

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

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'*!

! +@.

!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

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

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)>#!|!

! +@;

"%&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

! ++@

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

! +++

/)!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!

! ++?

!/%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

:%=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'!

! ++,

]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

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

! ++.

"#!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

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

")!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)>*!

! ++;

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

! +?@

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'*!

! +?+

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#>)!

! +??

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

"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

! +?,

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

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>>)*!

! +?.

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

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

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)*!

! +?;

:%=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@

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+

"#! 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?

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

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,

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

")! 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.

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

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

!!

!!

! +U;

!!/)!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

! +,@

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!

! +,+

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)>*!

! +,?

")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

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)*!

!

! +,,

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

/)>>)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

! +,.

]('#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

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

:%=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)!

! +,;

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@

/)!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+

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?

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

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,

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

/)!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.

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

/)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

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;

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!

!

! +.@

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!

!!

! +.+

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!

! +.?

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

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

! +.,

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

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!

!!

!

! +..

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

.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

]#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&*!

! +.;

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@

"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+

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?

")!'&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

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,

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

")! 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.

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

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

/)! 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;

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@

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+

])!>#!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?

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

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,

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

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.

/%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

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

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;

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!

! +;@

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>)#=*!

! +;+

!

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

! +;?

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

!"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*!

! +;,

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

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

! +;.

.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

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

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')!

! +;;

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!

!

! ?@@

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!

! ?@+

!")! $#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!

! ?@?

!"#! $)'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

!/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[;*!

! ?@,

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

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*!

!

! ?@.

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

!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

" )&!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

! ?@;

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

! ?+@

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'*!

! ?++

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*!

! ?+?

"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

.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

! ?+,

.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

!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

! ?+.

! ?+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

! ?+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!

! ?+;

!/%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!

! ??@

!")!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*!

! ??+

!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)!

!

! ???

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

! ??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

! ??,

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!

! ??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&)*!

! ??.

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=-!#"*!