WordProLWP7. YƤ1]Word Pro Text File/DFBAo@PPPPP-P*@(un peu de programmation ludique avec 123P @nbonnin?$-?SI@@@ @ SmartMasterH@ASMH @FnbonninH@@nXP p@@UNIVERSAL_ALL_OTHERS_EDITOR@FOTRX@@@q pcPP`@@q pcPP` @UNIVERSAL_SMARTMASTER_EDITOR@ESMX@@@q pcPP`@@q pcPP` @Gnbonnin@DnX@@@q pcPP`@@q pcPP`B@QCB PP p {A@Fp= !Ap@FFp= yqp~ qPHPHPHPH(x qQdIZ+  UpFYp= U Fp= UFp= Fp= jCF~p= jF{p= j@Fp= Fp= PF{p= PFY&p= PFYp= OFp= OBBp= COF$p= Fwqp= {pCF@gp= pA{@B43Bp=  q@Tp= APHBPHBgf ( xAQdHHAQdHHq !A@Bz$Bp= A!@B?Bp= ~APHBgf PHB(`zP(4BR1BP(4B|.(bUVFS|.cf UobFSR1 e AAk qAy}- ?@E n8 xP@P@@@ P@@@P @@@PpP@@@Pps>LHs@@@d*p  lC|@@@ 0 ?A@@@@ 6P E===H@Pp@Pp@Pp@Pp`d 33B33B33B33P@@p @ @@@ plq@@@@P CmP@@@rP"q !@@ @@P@ $ #A C@@@@P@P AIBAA A&PHPH'ABBBBRBBBQr/owBMBs U$D]H3BAVb^ -1B6B:?  yx@Hx@Hx@Hx@Hx` 0A @@@@@@@]Ug6Bo A^VqB.B23:Bx  C $C@@@P@ c xpp  @@@PppP @@@ fq cP`R@ d H@d= PPPq@AJBZZ Z Z Z pH@PZ  pH@P pH@P pH@P pH@PZZZZ(( /!("(# ($(%(&('Z( Z)Z*`Z,Z- fZ. cZ/ dZ0 eZ17Z2 Z3Z4Z5S Z6 nZ7 *Z8TZ9%Z:Z;ZZ=Z  >H@@ ??X@P`@@P`@@Pp@P`@@Hx``@@Hx``PC q@@P@ A@A%x@@@Q$$ %DUyq%@@@@QB`7o!A *@EH@ Default Text IA 6@E???H@PPPP 33B33B33B33P@@p @|C@@@P  M 6CS E???H@Pp@Pp@Pp@Pp`33B33B33B33P@@p @m Cy@CFFxP !"A O@@ @@P@ # !A $@@@@P@ ]A%AHHPHAOPAA6A(zI PDA@5BA&ApEH @ Heading 1Tp@@@P@&$ p`@x@% ]A$Az& p`@x@ A%@p@ <&AoBpB s-ExP : A @P@P@@@ P@@@P @@@ P@@@PpymS@@xP O !A#@@ @@P@ !#A #@@@@P@OA3BA pAH6BuAABffbff,PX\BY7Be  LOB8B~ pgy5BAzqΌLB28B[ } ΌzI1BBN |G g-BAjP@@@P Aff, 7q @P@P@@@ P@@@P @@@PpP@@@ yj@CDDxP# OA !@@@@P@OY4BDAp|AA0E ABffbff€BBBPL Ό2B27BA  qF ΌzB9B yp5B AzΌ.ΌB2:B3 }qL̾B6Bh& |pDH3BόAyY7B7Aq}FΌSBY4Cgf H$@P@P P P  DADxQE @QDs*D@@FCorpstBPP@FCorps@pA'F oI o qqPV uAuxpA@P#AyU@@Pied de page par dfautXA@BQJA+AP@EFooter%A@@"@ Style de pied de page par dfaut$@aAAAyA@ @YA fA dA e@ XQ$@c.X+u@pA@A XRA=A+P@EFooterI/A#A%Iyy@ @Y XQ@c /*BA,yd@Q. ,@FStoryBA,Y0A0AmU iAxpA@Pq#yU@@En-tte par dfautXA@BQJPA#AP@EHeaderA@@@Style d'en-tte par dfaut$@aAAAyA@ @YA fA dA e@ XQ@c+Wq.yu@pA@A XRPA.A#P@EHeaderI,AAIyy@ @Y XQ@c ,,/Bqd@Q+ ,@FStory/BQ-A-Amu .A+AV@@Page par dfautQA@JIXA @CPageH@+@)Style de la cellule de tableau par dfaut$@@ Default TextIxAA~AyA c@ iA fA dA e@ @Printer Folder SettingH$@@ +yqD d@Q ,@FStory D mT  xpA@PC\=@i A@B PRAiA=P@EFooterIHA#A%Jbqy@ @Z XQ@c H*AByd@QC @@FStoryABYIAIAm=[qCy@i A@B PRPACA.P@EHeaderIBAAJUqy@ @Z XQ@c B*HA/yd@Q= ,@@FStoryHA/YKAKAmJqrACA=AT@i(A@IP`AAuP@CPageIAu`  B p@t q@@Px m@B0Squence rcrative : tableur et programmation. TPIdtA 0DPNumA $DPAlnAlDPBrdA 6DPBakFSEndKSmF(AB@ASSEnd/d Ajx @mqk@Texte par dfautP@@@i@@Style de texte par dfaut@@@pE A@x`aA nD}AA"x@@@PP@@@  r H@@a ISmF(AH@ASSEndr"APRm@B'Programmation et scripts pour Lotus 123TPIdtA 0DPNumA $DPAlnAlDPBrdA 6DPBakFSEnd"7(APRmF33 A@CHdPIdtA 0DPNumA $CSEnd(,A"PRm@D@H7Cration dA Oun bouton et association dA Oun scriptHdPBlt@@@@QTPNumA $DPIdtA CSEnd'0A@Plan par dfautI@ O%H 'AHyd@l@FStoryAHYAAmaSm@D@@ap@PT@@apE.@@ap@PT@@apE.@@ap@PT@@apE.@@ap@PT@@apE.@@ap@PT@@apE.@@ap@PT@@apE)@@ap@PT@@apE)@@ap@PT@@apE)@@apE(@@ap@P T@@apB)SSEnd,H0A(PRmF33 A@CHdPNumA $DPBlt@@@@QTPIdtA CSEnd0{A,PKmF33 A@CHH)Crer un classeur vierge dans Lotus 123. HdPNumA $DPBlt@@@@QTPIdtA CSEnd:A0IKmF33 A@CHHFDans la barre de boutons choisir A Ocrer un bouton de scriptA M. HdPNumA $DPBlt@@@@QTPIdtA CSEnd:MAPKmFffA@CHHDans la feuille de calcul , tracer le contour du bouton Lotus en haut gauche en dplaant la souris, bouton de gauche enfonc. HdPNumA $DPBlt@@@@QTPIdtA CSEndMA:I@KmF33 A@CHHOn peut ventuellement HB@@@@A` redimensionnerHHG le bouton tant que les poignes (petits carrs noirs) sont affiches. HdPNumA $DPBlt@@@@QTPIdtA CSEndZAMIDKmF33 A@CHB@@@@A` CliquerHHm sur le bouton Lotus ainsi cr avec le bouton droit de la souris et choisir A OProprits du dessinA M. HdPNumA $DPBlt@@@@QTPIdtA CSEndZWAIHKmFffA@CHHLa proprit A JNomA O est le nom sous lequel Lotus connat le bouton. Nous allons conserver la valeur par dfaut A OBouton 1A M. HdPNumA $DPBlt@@@@QTPIdtA CSEndWIAZIPRmF33 A@CHdPNumA $DPBlt@@@@QTPIdtA CSEndAWITKmFffA@CHH La proprit A LTexteA O concerne le texte qui sA Oaffiche sur le dessin. Nous allons changer cette valeur en A LEssaiA O , qui doit sA Oafficher maintenant sur le bouton Lotus. HdPNumA $DPBlt@@@@QTPIdtA CSEndBAIXRmF33 A@CHB@@@@A` CliquerHHg sur le bouton Lotus avec le bouton droit de la souris et choisir A OAfficher diteur de scriptA L.HdPNumA $DPBlt@@@@QTPIdtA CSEndBfAP KmF33 A@CHH;@LA Oditeur de scripts sA Oouvre sur le sous-programme HB@@@@A` (Sub)HH Click du bouton 1 : HdPNumA $DPBlt@@@@QTPIdtA CSEndfSFABB uZm@CHHArCHdPNumA $DPBlt@@@@QTPIdtA CSEndF@AfP KmFffA@CHH: Ce sous-programme sera excute lorsque le bouton 1 sera HB@@@@A` cliquHH1E (on lA Oappelle aussi gestionnaire de lA MvHHDHHLnement Click). Il reste le complter pour lui faire excuter une action. HdPNumA $DPBlt@@@@QTPIdtA CSEndá#AyU@@Cadre par dfautQ A@IQXAAP@DFrameH@@Style du cadre par dfaut$@@ Default TextIAAAA c@ @YA fA dA e@ A ]@iU@@Graph./OLE par dfautQ" H@IQ XArACP@DFrameIjAxH@@Style du cadre Graphique/OLEaoAyyxA=`@Yp A ]@rTAyT@i" A@IQXAAiP@DFrameIqAiQA @RfA{ XQP@ZG   Z )q{@Qr @ @GraphicAjY @C.pngX@G.png IH6@4E:\Nathalie\Documents\MPI\doc2002\progtab\image1.pngAFP RmF33 A@CHH9Complter comme ci-dessous en ajoutant la ligne du milieu@dPNumA $DPBlt@@@@QTPIdtA CSEndVA@@ Rm@D@HG@dPNumA $DPBlt@@@@QTPIdtA CSEndh1P KB=޷B33 A@D@H Script 1a@HE @dPNumA CDPBlt@@@@QTPIdtA CSEndPBJqT@i" A@IP`DJP@DFrameLV @RB CU +Ky@R @@StoryK_'% mF$p CD@B@@@@A` GSub@HE @B@@@@A` Click(Source@H As @B@@@@A` Buttoncontrol)HHD HdPIdtA 0DPNumA $DPBakFSEnd%i&@SF$p CD@B@@@@A` [F17].contents="Bonjour"HHE @dPBakFSEndI @ Default Text`P@Y@@Style du texte par dfautx`$ &`'%@ZF$p CD@HFEndHHE @B@@@@A` GSub@dPBakFSEnd' r&@SF$(CASSEnd1I4I RB=޷B33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEnd4J;1A RB=޷B33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEnd;JB4A RB=޷B33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndB;A RF33 A@CHB@@@@A` CliquerHHP sur le bouton : le message A NBonjourA I sA Oaffiche dans la cellule F17.HdPNumA CDPBlt@@@@QTPIdtA CSEndAI KFp A@D@H[F17]HH, dsigne lA Mobjet A Ocellule F17A M. HdPNumA CDPBlt@@@@QTPIdtA CSEndBI RFp A@CHH La notation @B@@@@A` [F17].contentsHH dsigne la proprit @HcontentsHH (contenu) de lA Oobjet [F17]HdPNumA CDPBlt@@@@QTPIdtA CSEndI KFHA@CHH@LA Ooprateur @HE= HHva ici le rle dA Oun oprateur dA Oaffectation : il affecte (il donne) la valeur A NBonjourA O la proprit @B@@@@A` [F17].contentsHHD HdPNumA CDPBlt@@@@QTPIdtA CSEndJ@A RF33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndZA KF33 A@CHHGLa proprit A OcontentsA O peut galement tre lue par le script. HdPNumA CDPBlt@@@@QTPIdtA CSEndZgA KF33 A@CHHmPar exemple tapez A OComment tA Oappelles-tuA O dans F15 et compltez le script prcdent comme suit : HdPNumA CDPBlt@@@@QTPIdtA CSEndgVGZ QRm@D@HGJ@dPNumA $DPBlt@@@@QTPIdtA CSEndG]bgA RBB33 A@D@H Script 1bHdPNumA CDPBlt@@@@QTPIdtA CSEndJQqT@i" A@IP`EH@DFrameLK^ @VgO C] K-q@RJ @@StoryWT%T] mBBp CKD@B@@@@A` GSub@HE @B@@@@A` Click(Source@H As @B@@@@A` Buttoncontrol)HHD HdPIdtA 0DPNumA $CSEnd]o^T@SBBp CKD@B@@@@A` '[F17].contents="Bonjour"&[F16].contentsHHE @cSEnd^N%]@ZBB33 CKD@HEnd @B@@@@A` GSub@cSEnd% r^@SBB(CKASSEndbJeGA RBB33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndeJybA RBB33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndyJeA RBB33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndyA RF33 A@CHH6Tapez votre nom dans F16 puis appuyez sur le bouton 1.HdPNumA CDPBlt@@@@QTPIdtA CSEndA KF{(A@CHH"Remarque : le contenu de F16 incluHHxt la petite apostrophe que le tableur ajoute au dbut des textes. Si vous ne voulez pas voir cette apostrophe, utilisez @B@@@@A` [F16].cellvalueHH au lieu de @B@@@@A` [F16].contentsHB@@@@A` D.HH Contrairement @H contents,HHE @B@@@@A` cellvalueHH" peut tre lue mais non modifie. HdPNumA CDPBlt@@@@QTPIdtA CSEndNg I F33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndgJA RF33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndgA K@D@HTraitement des erreursHHD HdPBakGPBrdGPNumA CDPBlt@@@@QTPIdtA CSEndBA K@CHHiGEn cas dA Oerreur de syntaxe dans le script, les lignes au contenu incorrect sA Oaffichent en rouge. H[H[HO4Pour une erreur apparue au cours de lA Oexcution, le script se bloque, apparat sur fond gris dans lA Oditeur avec une flche blanche dans la marge pour dsigner lA Oendroit de lA Oerreur, et un message indique (en anglais...) la nature de celle-ci. Pour arrter alors le script , utiliser le Menu HB@@@@A` Debug/StopHHD HB@@@@A` ExecutionHHD de lA Oditeur de script. HdPBrdGPBakGPNumA CDPBlt@@@@QTPIdtA CSEnd}A R@CHHJPour arrter un script en cours dA Oexcution appuyer en mme temps sur HB@@@@A` GCtrlHH et PauseHdPBrdGPBakGPNumA CDPBlt@@@@QTPIdtA CSEnd}IbAI RF33 A@CHdPNumA CDPBlt@@@@QTPIdtA CSEndbuB}A K@D@H'Modifier les proprits dA Oun objet HdPBlt@@@@QTPNumA CDPIdtA CSEndIbI RF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndI KFףA@CHH;Un objet cellule possde beaucoup dA Oautres proprits. H[HH,Toujours dans le mme script, insrez avant @HFEndHH les lignes suivantes : HdPBlt@@@@QTPNumA CDPIdtA CSEndrHBA@q q qD oA PP  N s@B:ZHZOZI u _J F A@CHHE @B@ @ @ @@@xWend@B@@@xE :HH fin de boucle SSEnd s i@BA@I  I t B PP YmZLZP ZNZW AxpA@PX AxpA@P\[u^_`abZJZKZQb(Ru(S Mk(e(f c(gq(h(i(j]  # '' Ayd@l@FStory AY(A(Am0Sm/@ASSEndAiyU@@Lettrine par dfautQ A@IQXAAP @FDropCapIAxH@@Style de lettrine par dfaut$@@ Default TextI&AAAyA@!A fA dA e@ X@Dzb%@@ ),Bqd@l@FStory,BWm-Sm,@ASSEnd 'Ayd@l@FStoryAYAAm  (r q@R  @@DStoryr W  z   QJ J K@CHHToutefois on peut se servir de HB@ @ @ TimerHHY pour raliser une temporisation plus rgulire : modifier le script 6b comme ci-dessous HHF HdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd L T@i" A@IP`zH@DFrameL   @Vz   C  j'q yd@Qi ,@FStoryqA _ppmk0mAo@ Note Initials`P@Y@x`al2 -q@Default OutlineA@ OP2A @Numrotation lgaleI@ OX ''Ayd@l@FStory'AYAAmu r@-S(B9 Z@CHHACHdPBlt@@@@QTPNumA CDPIdtA CSEndUrBqT@i" A@IQXDrP@DFrameIAiP @R-A XSOqyX@@Cellule par dfautQAA@@@R@0@AAP@CCellH@+@)Style de la cellule de tableau par dfaut$@@ Texte tableauI#BI F]A@D@B@@@@A` CurrentApplicationHO  dsigne lA Oapplication courante, autrement dit Lotus 123, qui dispose dA Oune palette de 240 couleurs numrotes de 0 239 (ce sont les mmes que vous utilisez quand vous modifiez la couleur du texte ou des cellules). Pour obtenir le numro dA Oune couleur au hasard, on utilise HB@@@@A` Rnd*239.HHX Cependant, le n de couleur doit tre un entier. CA Oest pourquoi on ajoute la ligne @HDim @B@@@@A` codecouleur@H As @B@@@@A` IntegerHB@@@@A` D,HH& pour signifier que le n de couleur, HB@@@@A` codecouleur,HHZ est un entier : cette ligne peut se traduire par A Ocrer une variable entire appele HB@@@@A` codecouleurA L.HHF LorsquA Oon fait Ă@B@@@@A` codecouleur=Rnd*239HB@@@@A` D,HH le rsultat de HB@@@@A` Rnd*239HH2 est alors arrondi lA Oentier le plus proche. HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndrHBA@q AAA PP  vpA KF33 A@CHHyPour y voir plus clair, il devient ncessaire dA Oeffacer tous ces rectangles, ce qui est un peu fastidieux la main. HdPBlt@@@@QTPNumA CDPIdtA CSEndIpIRF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd @N sp@Bp: rz HBA@r z    B PP  SD AQRB=^B33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEndSD ?AQRF33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEndG  E NF  sD @BD :   A_KFO$A@D@B@@@xSet @B@ @ @ @@@xdessin=@B@@@xF Currentdocument.drawnobjects(Currentdocument.drawnobjects.count-dc) :HH\ On cre une variable appele Dessin qui est un des objets de la liste : initialement quand HB@ @ @ Gdc=1HH il s'agit du dernier objet de la liste. On pourrait appeler directement l'objet par son numro mais le mot Dessin est moins long crire par la suite !HcSEndZa "  k   RSm @D@@ap@PT@@apF.0@@apE.@@ap@PT@@apE.@@ap@PT@@apE.@@ap@PT@@apE.@@ap@PT@@a?pE.@@a?p@PT@@apE.@@ap@PT@@apE.@@ap@PT@@apE.@@ap@P QSSEndSm@ASSEnd SmCH HBSSEnd Q- q@RP @@Story W[m!" F{(C DR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEnd(Ar'HYF{(C DXEnd R@@@@A` DSubSSEnd Z  HYFY(C DlXFor i=0 R@@@@A` FToXF 4sSEnd B  H YFY(C DlR@@@@A` NextsSEndG] @Q WR@CHHFPHdPBakGPBlt@@@@QTPIdtGPNumA CCSEndPPqT@i" A@IP`EH@DFrameLQ} @VGU A|@*d+TIKYBeB33 A@D@H Script 6bHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndHSTB AKRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd   ,  R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd   AQKFffA@CHHCe genre de temporisation a le dfaut de dpendre troitement de la vitesse de lA Oordinateur et de ne pas tre constante selon que lA Oordinateur est plus ou moins occup. HdPBlt@@@@QTPIdtGPNumA CDPBakFSEndHoA@ Texte simplep@i@P@@@pE A@Am@D= BA:RFp A@D@HDim @B@@@@A` decal@H as LongHdPBlt@@@@QTPNumA CDPIdtA CSEnd(AI7KF= 5A@CHH+Cela vient du fait que la variable appele @B@@@@A` decalHK nA Oapparat que dans le script Click du bouton 1 : pour Lotus 123 cette variable appartient donc uniquement ce script. Elle est dtruite aprs chaque excution du script et recre lors de chaque excution. Pour quA Oelle soit conserve en mmoire il faut la dclarer comme @Hvariable globaleHHE. HdPBlt@@@@QTPNumA CDPIdtA CSEndXw +@DTitreP@@@i@P@@@pEAm@Dd B}q *A# @@@  f]Uw @ Liste numrop@i@P@@@pE A@Am@D  ! @@@QP ET9A1B2- RR@CHHFKHdPBlt@@@@QTPNumA CDPIdtA CSEndKQqT@i" A@IP`EH@DFrameLL @VEP CJARAIJ33 A@D@dPBlt@@@@QTPNumA CDPIdtA CSEndIKFffA@CHHNous pouvons maintenant revenir au script Click du tout premier bouton (Script 2) et obtenir un rsultat encore plus diversifi en modifiant ce script comme ci-dessous @H (Script 4)HHD HdPBlt@@@@QTPNumA CDPIdtA CSEnd JA`RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndJAIRBIB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd L-q@RK @@StoryWVh"/ FY(CDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEnd9 r8@ SFY(CASSEndV@ZF CD@ HE @ B@@@@A` comptebouton=0@ cSEndIHSF CD@ B@@@@A` Wend@ \@ cSEndqA RF(A@DR@@@@A` [F17].columnwidth=10tPBlt@@@@QTPNumA CDPIdtA CSEndXAB:3IRR@D@HG@dPBlt@@@@QTPNumA CDPIdtA CSEndqPBA@q AAA PP  #hA!KFףA@D@HSet @B@@@@A` 2r.edgecolor=currentapplication.colors(codecouleur)HH donne la couleur de bord @B@@@@A` edgecolorHH de r la couleur ayant le n HB@@@@A` codecouleurHH+ dans la palette de couleurs de Lotus 123. HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndIRFp A@D@HSet @B@@@@A` 2r.edgecolor=currentapplication.colors(codecouleur)HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEnd @N s@B:vAARF'A@CHH^Pour faciliter lA Oeffacement , crer un autre bouton et complter son gestionnaire dA MvHHDHHnements Click comme suit : @HE @H (Script 3a). HHAttention ce script ne fonctionne que sA Kil nA Oy a pas de rectangles dj crs et non effacs au moment o vous crez le bouton.HdPBlt@@@@QTPNumA CDPIdtA CSEndvAKF33 A@CHHRemarquons que la mthode HB@@@@A` newRectangleHH' accepte les coordonnes non entires. HdPBlt@@@@QTPNumA CDPIdtA CSEnd qTPBA@r z  AB  PP  N  sz @Bz :S$AQRB=^B33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd?)Q MR@CHHFFHH%Ce script cre 11 rectangles appels HB@@@@A` table(0),HHD HB@@@@A` table(1),table(2)....table(10)HdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd &  A_KFPA@D@B@ @ @ @@@xWhile@B@@@xE @B@ @ @ @@@x/Currentdocument.drawnobjects.count>comptebouton@B@@@xE :HHW On continue tant que le nombre d'objets dessin est suprieur au nombre de boutons HcSEnd " {U - b ! -QGq@R @@StoryQGW[b F(CQDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEndmCtl F(CQDXEnd R@@@@A` DSubSSEnd"Z#!HYF{(C DlXFor i=0 R@@@@A` FToXF 4sSEnd'B(&HYF{(C DlR@@@@A` NextsSEnd O  HYFY(C DllR@@@@A` debut=TimersSEnd H  HYFY(C DllR@@@@A` WendsSEnd]8+Q R@CHHFHdPBakGPBlt@@@@QTPIdtGPNumA CCSEndPFPqT@i" A@IP`EPFH@DFrameLq @V Ap@ B GAQRB=B33 A@CHdPIdtGPNumA CDPBakFSEnd@G9AQKF33 A@CHH9Crer un troisime bouton et modifier son script Click : @HScript 9HHD HdPBakGPBlt@@@@QTPIdtGPNumA CCSEndW P+S?*AKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd SHB AKRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd   AQK@D@HBoucle @B@@@@A` While...Wend@HG . @B@@@@A` Timer@H et temporisation HdPBlt@@@@QTPIdtGPNumA CDPBakFSEndXB @EPuce 1p@i@P@@@pE A@Am@D  " @@@RH KAB;F33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndAI6KF33 A@CHHToutefois si vous HB@@@@A` cliquezHHI sur le bouton vous constatez que les ellipses sont toujours identiques. HdPBlt@@@@QTPNumA CDPIdtA CSEndwRf @ Texte tableaup@i@P@@@pE A@Am@Db|r}# UYDf @FTitre 3P@@@i@P@@@pEAm@D B}t> # @@@  QKqT@i" A@IP`EKH@DFrameL @RB C9_pEA-KBB33 A@D@H Script 5a HdPBlt@@@@QTPNumA CDPIdtA CSEnd1E,I,RF33 A@CHHnCrer un nouveau classeur . Crer un bouton dans le coin haut gauche et complter le script Click comme ceci :HdPBlt@@@@QTPNumA CDPIdtA CSEndR KBAHRFp A@CHHsCe script fait tourner chaque rectangle cr, modifie la couleur des bords et du fond , et le motif de remplissage.@dPBlt@@@@QTPNumA CDPIdtA CSEndIAYF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndBAKFffA@CHH@CA Oest un peu plus long taper , mais un seul clic efface tous les rectangles dA Oun coup ! De plus il fonctionne mme pour effacer des rectangles dj visibles au moment de sa cration. HdPBlt@@@@QTPNumA CDPIdtA CSEndJAHRBIB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd -Lq@R @@StoryLWVa FY&(CLDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEndh rg@SFY&(CLASSEnd/}0"@ZFY(CDXOSet r=[a].newRectangle(2000+Rnd*5000,2000+Rnd*5000,2800+Rnd*5000,2900+Rnd*5000)sSEnd8M97@ ZFYffCBE XEnd R@@@@A` GSubsSEnd@ZF CD@ HFor i=0 @ B@@@@A` FTo@ HE @ B@@@@A` Current@ B@@@@A` ED@ B@@@@A` ocument.drawnobjects.count-1@ cSEnd@ZF CD@ \@ HGIf @ B@@@@A` not(@ B@@@@A` dessin@ HE @ B@@@@A` GIsa@ HE @ B@@@@A` E"@ B@@@@A` Eb@ B@@@@A` utto@ B@@@@A` En@ B@@@@A` Control")@ HE @ B@@@@A` Then@ HE @ B@@@@A` dessin.clear@ HE @ B@@@@A` else@ HE @ B@@@@A` dc=dc+1@ cSEndrBA RF(A@DR@@@@A` [F17].rowheight=200@dPBlt@@@@QTPNumA CDPIdtA CSEndFhOg>J F33 A@CHHOn crit alors HdPBlt@@@@QTPNumA CDPIdtA CSEndrFHBA@ry AB PP  IIv3RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndA%I2KF 'A@CHHzEPour lA Oinstant chaque clic cre la mme ellipse. On va modifier un peu le script en introduisant une variable appele @B@@@@A` decalHB@@@@A` D,HHE que lA Oon va ajouter aux coordonnes et dont on modifiera la valeur chaque clic sur le bouton. Modifier le script comme ceci : HdPBlt@@@@QTPNumA CDPIdtA CSEnd @ N q@@A;B#A"KFףA@CHHLe mot @HFSetHH est utilis dans une opration dA Oaffectation lorsquA Oon a des deux cts du signe = un objet ou une proprit dA Oobjet. HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEnd|AIRF33 A@D@B@@@@A` codecouleur=Rnd*239@dPBakGPBlt@@@@QTPNumA CDPIdtA CSEndVB R@D@HG@dPBlt@@@@QTPNumA CDPIdtA CSEndvAI@KF33 A@CHHfChaque clic cr maintenant un rectangle de taille et de position diffrente, dtermine au hasard. HdPBlt@@@@QTPNumA CDPIdtA CSEndN  qT@@AT;$S+AQRB=^B33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd)?AQKF33 A@CHH/Crer un bouton et complter son script Click :@H Script 7 HdPBakGPBlt@@@@QTPIdtGPNumA CCSEndM FFT:qT@i" A@IP`E:H@DFrameLG @V? XS   A _KFQ A@D@B@ @ @ @@@xGdc=1HH : cr une variable appele HB@ @ @ EdcHH et lui donne la valeur 1HcSEnd  A "CD- )#! " G-<q@RF @@Story<WQq F(CDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEndBr@ZF(CDXEnd R@@@@A` DSubSSEndb\c[@ZF(CQDlXFor a=0 R@@@@A` FToXG 20sSEndlCmk@ ZF(CQDlR@@@@A` NextsSEnd#$"HYF{(C DllXSet R@@@@A` 3r=[a].newRectangle(2000+100*i,1000,2400+100*i,1400)sSEnd&'%HYF{(C DllXSet R@@@@A` 5r.background.color=currentApplication.colors(i*16+16)sSEnd   HYFY(C DllXSet R@@@@A` 3r=[a].newRectangle(2000+100*i,1000,2400+100*i,1400)sSEnd u  HYFY(C DllR@@@@A` WhileXE R@@@@A` (Timer-debut)<5sSEnd8S2AQRB=^B33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd+R$AQYB=^B33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd  A  AQYB=B33 A@CHdPIdtGPNumA CDPBakFSEnd9@2AQKF33 A@CHH ! @@@  YUBB R@D@HFHdPBlt@@@@QTPNumA CDPIdtA CSEndQqT@i" A@IP`EH@DFrameL @RYB CpIv9Iv.RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd,I1A'I+RF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndKYAhRF33 A@D@dPBlt@@@@QTPNumA CDPIdtA CSEndKACRBIB33 A@D@dPBlt@@@@QTPNumA CDPIdtA CSEnd -q@R @@StoryW F{(CDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEnd r@ SF{(CASSEndapbV@ZFY&(CLDlXSet R@@@@A` %r=[a].newellipse(7000,2000,9000,4000)sSEndgHhf@ZFY&(CLDXEnd R@@@@A` GSubsSEnd0o1/@SFY(CDlR@@@@A` ErR@@@@A` .rotation=360*RndXE sSEnd7m86@ ZFY(CDlR@@@@A` ErR@@@@A` .background.pattern=motifsSEndP@ZF CD@ H If @ B@@@@A` Current@ B@@@@A` ED@ B@@@@A` ocument.drawnobjects(i)@ HE @ B@@@@A` GIsa@ HE @ B@@@@A` "buttonControl"@ HE @ B@@@@A` Then@ HE @ B@@@@A` Comptebouton=comptebouton+1@ cSEndB@SF CD@ \@ HSet @ B@@@@A` dessin=@ HE Currentdocument.drawnobjects(Currentdocument.drawnobjects.count-dc) @ cSEndJA RF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndOaFAg>RFp A@D@HGIf @B@@@@A` Motif<73@HE @B@@@@A` ET@B@@@@A` Ghen@HE @B@@@@A` Motif=Motif+1HdPBlt@@@@QTPNumA CDPIdtA CSEndFAg>KFffA@CHHOn va modifier cette ligne en ajoutant une condition pour augmenter Motif : quA Oil ne soit pas dj gal sa valeur maximale 73. HdPBlt@@@@QTPNumA CDPIdtA CSEnd N sF@BF:\I{4RB=]B33 A@D@H Script 5bHdPBlt@@@@QTPNumA CDPIdtA CSEnd%IAI2RF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndSA#RF33 A@CHdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndAIRF33 A@D@HDim @B@@@@A` codecouleur@H As @B@@@@A` Integer@dPBakGPBlt@@@@QTPNumA CDPIdtA CSEnd Q:qT@i" A@IP`E:H@DFrameL @V CgIvIRF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd)AQRF33 A@CHHqCette ligne signifie quA Oon va utiliser un tableau appel table, contenant 11 rectangles numrots de 0 10.HdPBakGPBlt@@@@QTPIdtGPNumA CCSEndp&B> DR@D XG:@H Script 6a@dPIdtGPBlt@@@@QTPNumA CDPBakFSEnd:QFqT@i" A@IP`EFH@DFrameL<  @V C   i A _KFA@CHHOn a utilis ici une boucle HB@ @ @ While...wend,HH qui HB@ @ @ redtermineHH chaque passage la valeur de HB@ @ @ "Currentdocument.drawnobjects.countHcSEnd  q C2) %-" !# <-Gq@R: @@StoryGW=AQk F(CGDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEndqCrp@S F(CGDXEnd R@@@@A` DSubSSEnd\@ZF(CDlXFor i=0 R@@@@A` FToXG 10sSEndC@ZF(CDlR@@@@A` NextsSEndcbdb@ZF(CQDllXFor i=0 R@@@@A` FToXG 10sSEndkIlj@ ZF(CQDllR@@@@A` WendsSEnd$Y%#HYF{(C DllR@@@@A` r.edgedashstyle=$nonesSEnd%Z&$HYF{(C DllR@@@@A` r.background.pattern=1sSEnd Y  HYFY(C DllR@@@@A` r.edgedashstyle=$nonesSEnd   HYFY(C DllXSet R@@@@A` 5r.background.color=currentApplication.colors(i*16+16)sSEnd2S98AQRB=^B33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd R, AQYB=B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndFSM?AKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd S  AKRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndq  c AzQRFffA@CHHCette deuxime boucle, insre dans la premire, ne fait rien mais elle est excute 100001 fois, ce qui retarde lA Oexcution du script : on dit quA Oelle sert de temporisation.HdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd(X2 @Retrait premire lignep@i@P@@@pE A@Am@D-# c P?I=KF33 A@CHHpSi on clique sur le bouton 1, chaque nouvelle ellipse cre est maintenant dcale par-rapport la prcdente. HdPBlt@@@@QTPNumA CDPIdtA CSEndBA5KFffA@CHHFLa HB@@@@A` E3 @B@@@@A` FmeHH1 ligne du script signifie quA Oon va augmenter HB@@@@A` decalHH. de 100 chaque clic : la nouvelle valeur de HB@@@@A` decalHHZ ( gauche du signe gal) sera gale sa valeur actuelle ( droite du signe gal) + 100. HdPBlt@@@@QTPNumA CDPIdtA CSEnd2Y(D @FTitre 1P@@@i@P@@@pEAm@D B}t># @@@  fYIKBDB33 A@D@HScript 2HHD HdPBlt@@@@QTPNumA CDPIdtA CSEndBYA9IKF33 A@CHH"Compltez le gestionnaire dA MvHHDHHnement Click du bouton ainsi : HdPBlt@@@@QTPNumA CDPIdtA CSEnd vJzpA.RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd',A"I*K@D@HCUn dessin un peu mieux contrl . Dclaration de variables globalesHHE. HdPBlt@@@@QTPNumA CDPIdtA CSEndYsAIpKF33 A@D@HExplications sur le script 4: @dPBlt@@@@QTPNumA CDPIdtA CSEnd -<q@R @@Story<W F(CD@B@@@@A` GSub@HE @B@@@@A` Click(Source@H As @B@@@@A` Buttoncontrol)ISSEnd r@SF(CASSEnds@ZF{(CDXESet r=[a].newellipse(7000+2*decal,2000+2*decal,9000+decal,4000+decal)sSEndH@ZF{(CDXEnd R@@@@A` GSubsSEndbjca@ZFY&(CLDlR@@@@A` r.edgecolor.colorname="darkX orange"sSEndfVge@ZFY&(CLDlR@@@@A` r.background.pattern=35sSEnd1}20@ZFY(CDlXDim R@@@@A` codecouleurX As R@@@@A` IntegersSEnd6_75@ZFY(CDlR@@@@A` motif=Rnd*R@@@@A` F73sSEndAB@ZF CD@ B@@@@A` Next@ cSEndHZF CD@ B@@@@A` While@ HE @ B@@@@A` /Currentdocument.drawnobjects.count>comptebouton@ cSEndIKFffA@CHH3La proprit font concerne la police de caractre. HB@@@@A` I OBrushHHfF ScriptA O peut tre remplac par nA Oimporte quel nom de police disponible sur lA Oordinateur. HdPBlt@@@@QTPNumA CDPIdtA CSEndaOAh>RF33 A@CHHSCette ligne signifie A OSi Motif est infrieur 73 alors ajouter 1 MotifA L.HdPIdtGmPNumA CDPBlt@@@@QSSEndO[Ag>RFףA@CHH"Supposons que votre variable globaHHDlHHe contenant le n de motif sA Oappelle Motif. Cette variable doit augmenter de 1 chaque clic sur le bouton : il doit y avoir dans votre script 5b une ligne @B@@@@A` Motif=Motif+1@dPBlt@@@@QTPNumA CDPIdtA CSEndJA4RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndO%AI1RFAA@CHOLa ligne 7 modifie le motif de remplissage. Il existe aussi une liste de noms dsignant les valeurs possibles pour Pattern mais ils sont peu pratiques : il vaut mieux chercher le n en regardant dans la bote de proprits les motifs disponibles, ils sont numrots de gauche droite et de haut en bas en partant de 0. Les motif n49 et 50 ne figurent pas parmi les motifs proposs dans la bote de proprits, qui passe directement du n48 au 51. Les motifs 62 73 sont des dgrads ou des rayures.HdPBlt@@@@QTPNumA CDPIdtA CSEndmI$KFףA@CHHLigne @HSet @B@@@@A` r.background.color=r.edgecolor@HG : HH3donne au motif qui remplit lA Oarrire-plan de r HB@@@@A` E(@B@@@@A` backgroundHB@@@@A` D)HH* la mme couleur que celle de ses bords. HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndpAIKFp A@CHHLignes@HG : @dPBakGPBlt@@@@QTPNumA CDPIdtA CSEndAIRF33 A@D@HOSet r=[a].newRectangle(2000+Rnd*5000,2000+Rnd*5000,2800+Rnd*5000,2900+Rnd*5000)@dPBlt@@@@QTPNumA CDPIdtA CSEndAQRF(A@DXDim R@@@@A` table(0XE R@@@@A` FToX 10) As rectangleHdPBlt@@@@QTPNumA CDPIdtA CSEndSA>RB=^\B33 A@CHdPIdtGPBlt@@@@QTPNumA CDPBakFSEnd&?Io>KF33 A@CHH\On va maintenant utiliser une boucle afin de crer plusieurs rectangles dA Oun seul clic :@HG @dPIdtGPBlt@@@@QTPNumA CDPBakFSEndD :i   A _KFGA@CHH On va ensuite effectuer une boucle qui efface tous les objets dessins qui ne sont pas des boutons. Il faut donc passer de nouveau en revue tous les lments du tableau HB@ @ @ currentdocument.drawnobjectsHO et effacer ceux qui ne sont pas des boutons. Les deux problmes rencontrs sont d'une part que les objets sont rangs dans le tableau par ordre de cration : il est donc possible qu'on ait des dessins intercals au milieu des boutons. D'autre part chaque effacement d'un objet HB@ @ @ "Currentdocument.drawnobjects.countHHo diminue de 1 : il faut faire attention de ne pas risquer d'appeler un numro qui n'existe plus dans la liste. HcSEnd% ')# "$=> F~(C<DR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEndAAr@HYF~(C<DXEnd R@@@@A` DSubSSEndk\lQ@ZF(CGDlXFor i=0 R@@@@A` FToXG 10sSEndpJqo@SF(CGDlR@@@@A` NextlsSEndS@ZF(CDllR@@@@A` table(i).clearsSEnddpec@ZF(CQDlllR@@@@A` %table(10-i).left=table(10-i).left+100sSEndjxki@ ZF(CQDllR@@@@A` WhileXE R@@@@A` (Timer-debut)<0.5sSEnd Z  HYFY(C DllR@@@@A` r.background.pattern=1sSEnd,9 AQRB=B33 A@CHdPIdtGjPNumFTSEndMSTFAKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd S  AKRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndc q [ A6QKFffA@CHH&Si vous ne voyez pas de diffrence en HB@@@@A` cliquantHHE sur le bouton, changez la valeur finale de j, par exemple 1000000. HdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd?HFP>RF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndJA~5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndJARBDB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd9BBAKF33 A@CHH;Crez un nouveau bouton dans le haut gauche de la feuille. HdPBlt@@@@QTPNumA CDPIdtA CSEndzJvA /RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd"J'B)A)RF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndBYAxRFp A@CHHLigne :@HE @B@@@@A` r.rotation=360*Rnd@dPBakGPBlt@@@@QTPNumA CDPIdtA CSEnd F(CDR@@@@A` GSubXE R@@@@A` Click(SourceX As R@@@@A` Buttoncontrol)sSEnd rHKF(CASSEnd@ZF(CDXSet R@@@@A` r=[A].newRectangle(R@@@@A` E2R@@@@A` 000,2000,R@@@@A` F28R@@@@A` 00,2R@@@@A` E9R@@@@A` F00)HcSEndX@ZFp CD@HFEndHHF @B@@@@A` GSub@cSEndH@ZF{(CDR@@@@A` decal=decal+100sSEndV@ZF{(CDlR@@@@A` r.background.pattern=35sSEndcTdb@ZFY&(CLDlR@@@@A` r.edgelinewidth=$thinsSEndedfd@ZFY&(CLDlR@@@@A` %r.background.color.colorname="orange"sSEnd2z31@ZFY(CDlR@@@@A` EcR@@@@A` odecouleurR@@@@A` =Rnd*239sSEnd5U64@SDlX Dim motif As R@@@@A` IntegersSEndA@ZF CD@ B@@@@A` dc=1@ cSEnd AKF33 A@CHHFPour les autres lignes, faites appel vos connaissances en anglais : HdPBlt@@@@QTPNumA CDPIdtA CSEndJaAl>RF33 A@CHdPIdtGmPNumA CDPBlt@@@@QSSEnd[=Ag>KF33 A@CHH7On va modifier le script 5b pour viter cette erreur . HdPBlt@@@@QTPNumA CDPIdtA CSEndJA>5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndAwI0KFffA@CHHQLes lignes 5 et 6 modifient les deux couleurs dA Oarrire-plan : celle du fond HB@@@@A` (backcolor)HH. et celle du motif qui remplit lA Oellipse. HdPBlt@@@@QTPNumA CDPIdtA CSEnd] A%RFףA@CHHNRemarque : il existe une autre couleur pour lA Oarrire plan, celle du fond @B@@@@A` background.backcolorHB@@@@A` D,HHi qui est la couleur du fond derrire le motif. Dans ce script on ne la modifie pas : elle reste en blanc.HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndSAIRF33 A@D@dPBakGPBlt@@@@QTPNumA CDPIdtA CSEndAIKF33 A@CHH4Modifier comme ceci la ligne ajoute dans le script HdPBlt@@@@QTPNumA CDPIdtA CSEnd~AQKF33 A@CHH*EDans lA Oditeur, entrer la dclaration HdPBlt@@@@QTPNumA CDPIdtA CSEndSA>RB=^\B33 A@CHdPIdtGPBlt@@@@QTPNumA CDPBakFSEnd?&B8Ao>RF33 A@CHH:Fermer le classeur prcdent et crer un nouveau classeur.HdPIdtGyPBakGPBlt@@@@QTPNumA CCSEnd 'i  A _RF A@CHcSEnd' &%u$ #%>Z?=HYF~(C<DlXFor i=0 R@@@@A` FToXF 4sSEnd@BA?HYF~(C<DlR@@@@A` NextsSEndlmk@ZF(CGDllXSet R@@@@A` 9table(i)=[A].NewRectangle(1000+200*i,600,1500+200*i,1050)sSEndopn@ZF(CGDllXSet R@@@@A` KFp A@D@HGUn peu dA Oentranement : HdPBlt@@@@QTPNumA CDPIdtA CSEndJA}5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndJ ARBDB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd9A1IR@CHHgFermez le classeur prcdent (enregistrez le si vous souhaitez le garder) et ouvrir un classeur vierge.HdPBlt@@@@QTPNumA CDPIdtA CSEndJzA!/RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd)"BA(KFףA@CHH8Ces lignes modifient le motif de remplissage (proprit @HpatternHH du @B@@@@A` backgroundHH; de r) . Il existe 74 possibilits numrotes de 0 73. HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndLAIRFffA@CHHtPour faire tourner le rectangle on modifie sa proprit rotation en lui donnant une valeur entre 0 et 360 : puisque HB@@@@A` FRndHH" renvoie une valeur entre 0 et 1, HB@@@@A` 360*RndHH est entre 0 et 360.HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndHRF(CDlXMSet dessin=currentdocument.drawnobjects(currentdocument.drawnobjects.count-1)sSEndHHRF(CDXEnd R@@@@A` GSubsSEndd@ZF{(CDR@@@@A` r.edgecolor.colorname="darkX orange"sSEndd@ZF{(CDlR@@@@A` %r.background.color.colorname="orange"sSEnddgec@ZFY&(CLDlR@@@@A` (r.background.backcolor.colorname="black"sSEnd342@ZFY(CDlXSet R@@@@A` 'r.edgecolor=currentapplication.colors(cR@@@@A` odecouleurR@@@@A` E)sSEnd4i53@ZFY(CDlXSet R@@@@A` r.background.color=r.edgecolorsSEnd ARF33 A@CHB@@@@A` Font.sizeHH% est la taille de la police en pointsHdPBlt@@@@QTPNumA CDPIdtA CSEndAn>KF33 A@CHHuOn peut vrifier alors que lA Oerreur ne se produit plus : une fois la valeur 73 atteinte le motif ne change plus. HdPBlt@@@@QTPIdtGyPNumA CCSEnd=[Af>RFffA@CHH Si vous aveHHz russi faire changer le n du motif, vous avez pu tre confront assez vite un problme : un n suprieur 73 dclenche une erreur puisque les n de motif ne vont pas au-del.HdPNumA CDPIdtA DPBlt@@@@QSSEndJA_5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndwAI/RF33 A@CHH@La ligne 4 permet de modifier la largeur de la ligne de contour.ÁHdPBlt@@@@QTPNumA CDPIdtA CSEnd S$A&RF33 A@CHdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndIAnIRF33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndAQKF33 A@CHH+EDans lA Oditeur de script, slectionner HB@@@@A` (Globals)HHG et HB@@@@A` (Declarations)HH comme page 5. HdPBlt@@@@QTPNumA CDPIdtA CSEndSA>RB=^\B33 A@CHdPIdtGPBlt@@@@QTPNumA CDPBakFSEnd8S?B3Ao>RF33 A@CHdPIdtGyPBakGPBlt@@@@QTPNumA CCSEnd <  A_KFPA@D@B@ @ @ @@@xGNextHH+ : Fin de la boucle. Lorsque i est gale HB@ @ @ $currentdocument.drawnobjects.count-1HH) alors tous les objets ont t vrifis, HB@ @ @ compteboutonHH* contient maintenant le nombre de boutons.HcSEnd& %'% $&?@>HYF~(C<DllXSet R@@@@A` r=[a].newRectangle(2000+R@@@@A` E1R@@@@A` 00*i,1000,2400+R@@@@A` E1R@@@@A` 00*i,1400)sSEndmbnl@ZF(CGDllR@@@@A` table(i).background.pattern=1sSEndnaom@ZF(CGDllR@@@@A` table(i).edgedashstyle=$nonesSEndfge@SF(CQDlllR@@@@A` WhileXE R@@@@A` (Timer-debut<0.5)lsSEndhIig@ZF(CQDllR@@@@A` NextsSEndP "Y HSRB=B(A@ASSEnd[SkTAKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd S  AJRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndG i[ 9 APRF(A@D@B@@@@A` ENextTPBlt@@@@QTPIdtGPNumA CDPBakFSEndKxFA`>K@CHH En utilisant @Hle mme principeHHB, cA Oest dire en crant une nouvelle variable globale qui contiendra le n du motif, modifier le script 5b pour faire augmenter de 1 chaque nouvelle ellipse trace le numro du motif HB@@@@A` E(@B@@@@A` background.pattern)HH utilis. HdPBlt@@@@QTPNumGPIdtA CSEndJA{5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd JjBARBDB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd1AK@D@HXUn peu de dessin : valeurs alatoires, dclaration de variables, proprits graphiques @dPBlt@@@@QTPNumA CDPIdtA CSEndJA-/RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEnd)A'RF33 A@D@B@@@@A` r.background.pattern=motif@dPBakGPBlt@@@@QTPNumA CDPIdtA CSEndHRF(CDlX If dessin R@@@@A` GIsaX "rectangle" R@@@@A` ThenXE R@@@@A` dessin.clearsSEndT@ZF{(CDlR@@@@A` r.edgelinewidth=$thinsSEndg@ZF{(CDlR@@@@A` (r.background.backcolor.colorname="black"sSEnd ARF33 A@CHB@@@@A` ColumnwidthHH5 est la largeur de la colonne en nombre de caractresHdPBlt@@@@QTPNumA CDPIdtA CSEndJ6Ao>RF33 A@CHdPIdtGyPBlt@@@@QTPNumA CCSEndi=Af>R@D@HInstructions conditionnellesHdPBlt@@@@QTPNumA CDPIdtA CSEndJAo5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndWwA|Iz/KF= 5A@CHHLA la ligne 3, on voit une autre faon de dsigner une couleur, en utilisant @B@@@@A` colornameHB@@@@A` D.HH La valeur de @B@@@@A` colornameHHѿ doit tre crite entre guillemets. Elle doit faire partie de la liste des noms de couleurs de Lotus, en anglais. Pour accder la liste des noms, dans lA Oaide de lA Oditeur de script choisir Lotus 123 HB@@@@A` ObjectsHH et chercher HB@@@@A` ColorHH Palette dans lA Oindex. HdPBlt@@@@QTPNumA CDPIdtA CSEnd$f A0'KF33 A@CHH Lignes : HdPBakGPBlt@@@@QTPNumA CDPIdtA CSEndnaB$AKFףA@CHHrPour rendre les choses plus intressantes, on va modifier les coordonnes des rectangles en utilisant la fonction @B@@@@A` GRnd@HD HH9qui renvoie une valeur alatoire relle comprise entre 0 HB@@@@A` (inclu)HH et 1 (exclu). HdPBlt@@@@QTPNumA CDPIdtA CSEndsAQKF33 A@CHHCration du tableau : HdPBakGPBlt@@@@QTPIdtGPNumA CCSEndSA>RB=^\B33 A@CHdPIdtGPBlt@@@@QTPNumA CDPBakFSEnd38Ao>K@D@HAutomatisation : boucle FOR @B@@@@A` ....NEXT@HD HdPIdtGyPBakGPNumA CDPBlt@@@@QSSEnd   A_KFz0A@D@B@@@xGIf @B@ @ @ @@@xcurrentdocument.drawnobjects(i)@B@@@xE @B@ @ @ @@@xGIsa@B@@@xE @B@ @ @ @@@x"buttonControl"@B@@@xE @B@ @ @ @@@xThen@B@@@xE @B@ @ @ @@@xcomptebouton=comptebouton+1@B@@@xE :HH On passe en revue chaque objet dessin en vrifiant s'il s'agit d'un bouton. A chaque bouton rencontr, on ajoute 1 la valeur HB@ @ @ comptebouton.HHD HB@ @ @ currentdocument.drawnobjectsHH@ est un tableau contenant tous les objets dessins du document. ÂHB@ @ @ currentdocument.drawnobjects(i)HH dsigne l'objet de numro i.HcSEndgOhf@ZF(CQDlllR@@@@A` WendsSEndY "b P HTRB=B(A@ASSEndkSr[AKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd S AIRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd9 G ) AAORF33 A@D@HFor j=0 @B@@@@A` Fto@H 100000@dPBlt@@@@QTPIdtGPNumA CDPBakFSEndxKAd>K@CHH1Crer un autre bouton dont le script Click remet @B@@@@A` decalHH 0 et le n de motif 35 HdPBlt@@@@QTPNumGPIdtA CSEndJAw5RB=]B33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndjK@CHHCette ligne contient une @Hinstruction conditionnelleHHG : @H@lA OinstructionHHE @B@@@@A` motif=motif+1HHA nA Oest excute que si la @H conditionHHE @B@@@@A` motif<73HH est vrifie . HdPIdtGyPBlt@@@@QTPNumA CDPBrdGPBakFSEndJAe>RF33 A@CHdPBlt@@@@QTPNumGPIdtA CSEnd| BA:/KFffA@CHHɿOn a choisi cette fois de tracer une ellipse pour changer un peu. Les proprits et mthodes sont peu prs les mmes que pour un rectangle. Comme la hauteur et la largeur sont gales on a un cercle. HdPBlt@@@@QTPNumA CDPIdtA CSEnd$A'RF33 A@D@H Dim motif As @B@@@@A` Integer@dPBakGPBlt@@@@QTPNumA CDPIdtA CSEnd$nAtIRF(A@B8Un nouveau rectangle identique est ajout chaque clic.TPBlt@@@@QTPNumA CDPIdtA CSEndAQYFffA@CHHEn programmation un tableau est un ensemble de variables ou dA Oobjets identiques, que lA Oon manipule en les dsignant par un numro.HdPBakGPBlt@@@@QTPIdtGPNumA CCSEndSA>RB=^\B33 A@CHdPIdtGPBlt@@@@QTPNumA CDPBakFSEndS3Ao>RF33 A@CHdPIdtGyPBakGPBlt@@@@QTPNumA CCSEnd   A_KFO$A@D@B@@@xFor i=0 @B@ @ @ @@@xFTo@B@@@xE @B@ @ @ @@@x$currentdocument.drawnobjects.count-1HH : Boucle : HB@ @ @ "currentdocument.drawnobjects.countHH} est le nombre d'objets dessins sur la feuille, incluant les boutons, les ellipses, les rectangles. La boucle est effectue HB@ @ @ "currentdocument.drawnobjects.countHH foisHcSEndb "k Y HURB=B(A@ASSEndrSykAKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndk >F)A@B{On dit que le programme fait une boucle car il revient en arrire pour rpter plusieurs fois la ou les mmes instructions.HH. Ici on a fait dpendre la position du rectangle de la valeur du compteur de boucle , pour que les rectangles successifs soient dcals. HdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd) 9  AuNRFp A@CHH4Par exemple, dans le script 6b, insrer juste avant HB@@@@A` GNextHH les lignes suivantes :@dPBlt@@@@QTPIdtGPNumA CDPBakFSEndBxAd>K@CHHPour faciliter lA Outilisation de la feuille, crer un troisime bouton pour effacer les rectangles : son script Click doit tre identique au script 3a, en remplaant simplement @B@@@@A` GIsA@H@ A OrectangleE HH par @B@@@@A` GIsA@H@ A NellipseE HH# , ou bien identique au script 3b. HdPBlt@@@@QTPNumGPIdtA CSEnd<tAjIKFffA@CHHLes valeurs numriques indiques entre parenthses sont les coordonnes des bords du rectangle : dans lA Oordre, gauche, haut, droite, bas. HdPBlt@@@@QTPNumA CDPIdtA CSEndJA6/RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndg6Ao>Y@CHHOn utilise la syntaxe @HEIFHHE  @H conditionHHE @B@@@@A` THEN @H instructionHdPIdtGyPBlt@@@@QTPNumA CDPBrdGPBakFSEndIId>RF33 A@CHdPBlt@@@@QTPNumGPIdtA CSEndJ|BA9/RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndt$RB=^\B33 A@CHdPIdtGPBlt@@@@QTPNumA CDPBakFSEnd Ao>KF33 A@CHHoA prsent si la valeur maximale de Motif est dpasse, Motif est remis 0 et peut ensuite continuer varier. HdPIdtGyPBakGPBlt@@@@QTPNumA CCSEnd  5 A_KF A@D@B@ @ @ comptebouton=0@HF : HHcre une variable appele HB@ @ @ compteboutonsHH et lui donne la valeur 0@HF @cSEndk "t b HVRB=B(A@ASSEndySrAKRBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndA>KF(A@BKSi i est gale 4, le programme poursuit son excution la ligne suivant @ @ @ ENextSSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd J)  AMKF'A@CHHRemarque: on peut imbriquer des boucles les unes dans les autres condition de ne pas utiliser la mme variable comme compteur de boucle et de respecter la rgle A Ola dernire boucle commence est la premire boucle termineA N HdPBlt@@@@QTPIdtGPNumA CDPBakFSEndJAd>RF33 A@CHdPBlt@@@@QTPNumGPIdtA CSEndJA8/RBB33 A@CHdPBlt@@@@QTPNumA CDPIdtA CSEndgTo>F33 A@CHdPBakGPIdtGyPBlt@@@@QTPNumA CCSEndQFffA@CHHLe script suivant va faire bouger les rectangles aprs leur cration. On va donc avoir besoin de leur donner un nom diffrent pour chacun, pour pouvoir les manipuler aprs cration. HdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd8A>KF EA@CHHDRemarquez que quand vous appuyez sur la touche Entre aprs For i=0 HB@@@@A` EtoHHG 4, HB@@@@A` GNextHHJ est ajout automatiquement. A lA Oexcution la ligne 3, comprise entre @B@@@@A` FForHB@@@@A` ....etHHF @B@@@@A` GNextHB@@@@A` D,HH est rpte 5 fois .La variable ici appele i est le compteur de boucle : initialement i vaut 0 (For i=0... ). Lorsque le programme rencontre l'instruction @ @ @ FNext7 , il compare i la valeur finale indique 4 (For i=0 @ @ @ Dtot 4). Si i est infrieur 4, le programme revient en arrire l'instruction suivant immdiatement la ligne For i=0 @ @ @ DtoC 4TPBlt@@@@QTPIdtGPNumA CDPBakFSEnd IAo>YF33 A@CHdPIdtGPNumA CDPBlt@@@@QSSEnd5 v  A@^R@D@H;Complment : Analyse du script 3b (effacement des dessins)tPBrdGS PBakFSEndt "} k HWRB=B(A@ASSEndR yAKYBeB33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AMYF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndgAo>KF33 A@CHHkOn peut galement indiquer une seconde instruction, excuter lorsque la condition nA Oest pas remplie. HdPBakGPIdtGyPBlt@@@@QTPNumA CCSEndAQKF33 A@CHH:Fermer le classeur prcdent et crer un classeur vierge. HdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd Ao>HA@CHHOn utilise la syntaxe @HEIFHHE  @H conditionHHE @B@@@@A` THEN @H instruction 1 @B@@@@A` ELSE @H instruction 2 HdPIdtGyPBlt@@@@QTPNumA CDPBrdGPBakFSEnd "5  H^RF(A@ASSEnd} " t HXRB=B(A@ASSEnd  AKKFzBA@CHH%A la ligne 4 on dfinit la proprit @B@@@@A` edgedashstyleHHn du rectangle r cr ligne 3 dtermine le style de ligne qui entoure le rectangle: ici on a choisi la valeur HB@@@@A` $none,HHЏ qui signifie quA Kil nA Oy a pas de ligne. Les lignes 5 et 6 permettent dA Oobtenir des rectangles de couleur uni : la ligne 5 choisit le motif de remplissage 1 qui signifie remplissage par la couleur @B@@@@A` background.colorHB@@@@A` D,HHq et la ligne 6 donne cette couleur une valeur dpendant de i, ce qui permet ici dA Oobtenir un joli dgrad. HdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R  AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd o z AMR@D@B@@@@A` GNextHdPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEndtAo>KF33 A@CHHModifier la ligne en : HdPBakGPIdtGyPBlt@@@@QTPNumA CCSEndAQR@D@H1GUn peu dA Oanimation. Cration dA Oun tableau@dPBlt@@@@QTPBakGPIdtGPNumA CCSEndAo>K@D@H@lA OinstructionHHE @B@@@@A` motif=motif+1HHA nA Oest excute que si la @H conditionHHE @B@@@@A` motif<73HH) est vrifie sinon cA Oest la seconde @H instruction@HE @B@@@@A` motif=0HH qui est excute . HdPIdtGyPBlt@@@@QTPNumA CDPBrdGPBakFSEnd   H\RF33 A@CHHeCe dernier script dplace successivement chaque rectangle, crant une impression de A OreptationE HcSEnd " } HYRB=B(A@ASSEnd Sg  A[MRF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd R AQYB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndz x n AMK@D @H Instructions@HE @dPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEnd+Ao>RFp A@D@HGIf @B@@@@A` Motif<73@HE @B@@@@A` ET@B@@@@A` Ghen@HE @B@@@@A` Motif=Motif+1HHE @B@@@@A` Else@HE @B@@@@A` Motif=0@dPIdtGyPBlt@@@@QTPNumA CCSEndS7AQRF33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEndJAo>RF33 A@CHdPIdtGPNumA CDPBlt@@@@QSSEnd "  H[RB=B(A@ASSEnd "  HZRB=B(A@ASSEndg n  AMR@D@HSyntaxe de For @B@@@@A` ....next@dPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEndS AQRB=:B33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEndn z g AMR@D@HFor  @Hcompteur@HE @ HE=@HE  @Hvaleur initiale@HE @B@@@@A` Fto@HE  @H valeur finale @dPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEndSAo>RF33 A@CHdPIdtGyPBakGPBlt@@@@QTPNumA CCSEnd7AQKFffA@CHH"Lignes 9 et 10, on reste tant que HB@@@@A` Timer-debutHH est infrieur 5, avant de continuer : autrement dit, on sA Oassure que la dure dA Oune boucle est 5 secondes. Il nA Oy a ici pas dA Oinstructions dans la boucle HB@@@@A` While...Wend.HHD HdPBakGPBlt@@@@QTPIdtGPNumA CCSEndAo>RF33 A@CHHwCette ligne signifie A OSi Motif est infrieur 73 alors ajouter 1 Motif , sinon donner Motif la valeur 0A L.HdPIdtGPNumA CDPBlt@@@@QSSEnd>AQKF33 A@CHB@@@@A` While...WendHH! est une autre sorte de boucle . HdPBlt@@@@QTPIdtGPNumA CDPBakFSEndB7'AQHAFffA@CHH5Dans le script 6c, ligne 3, on mmorise la valeur de HB@@@@A` TimerHH^ dans une variable appele dbut. Ensuite le rectangle est cr et peint, et pendant ce temps HB@@@@A` TimerHH augmente. HdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd>RK AQYF33 A@CHdPBlt@@@@QTPIdtGPNumA CDPBakFSEnd'S AQRF33 A@CHdPBakGPBlt@@@@QTPIdtGPNumA CCSEndK n% >AQK@CHHLa syntaxe est HdPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEnd '3 AQRF33 A@CHH!Les instructions comprises entre HB@@@@A` WhileHHG et HB@@@@A` GWendHH2 sont rptes tant que la condition est vrifie.HdPBakGPBlt@@@@QTPIdtGPNumA CCSEnd% , K AQR@D@B@@@@A` While@HE  @H conditionHdPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEnd3 { , AQK@D@B@@@@A` Wend@HD HdPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEnd, k3 % AQR@D @H InstructionsHdPBrdG PBakGPBlt@@@@QTPIdtGPNumA CCSEndH$@P@P P P DiEa H@H@@P@@P@@PPpPP`@p@P P t-?ADQGAOALQPQHATANAYAZAVAUAWAXA\A[A^A_A`AaAbAIAJAKAQARASAM dAeAfAcAgAhAiAjPAH dP@PP cpcP cpcH pcP`P cpc;P pdP`;P pdPaH pcPa cpccpcPaH pcP`P cpcP`cpcPaUUH cpcP@QHdP@QTT cpcP@QTT cpcP@QH dP@QUUH cpcP@QHdP@PP cpcP`@@Times New RomanHWH @ Courier New H@ MS Sans Serif H @ WingdingsH@ Arial Narrow H @ Arial Black H@Arial h WxHH@@@PHH@PHHGH@PHxHP@x@ ]A A Qrys@@George P. Burdell832882267FA [iaA@H@@P@@P@@PPpPP&@$E:\lotus\smasters\wordpro\defaut.mwpH@p@P P pAOHP DeskJet 880CAFXC@ D 4d@@B,@B,QA4+pPPQDINU"R4$C%#|  PP@???????.$T$$T$P@@d@PB@@@ELPT1:@HP DeskJet 880C @winspoolP@E1-9999XPDUVerE@P@Version originale @nbonnin?$-?Y`@@ASMH@@nl-?AQA A Q QAA AAAAAAAAAAAAAAAAAAAA !A"A#A A$A%A&A'(A)A*A+A,A-A.A/A0A1A2A3A4A5A6A7A8A9A:A;@ AAAQA A Q>A?AAAB@@nbonnin1066131865A oDYƤ1:.P@@EH@S HJAICHBJN   BGQv1XA<U]1!@Ec1@ Ee1H@a @F2"E&/2! ?0/2*G$E72#E{27E2BLAkI III I I II IIII I I II I I, I> IIIY IP I) Ib Ik It I} I I I I I I I I I I I) I5 IIIB IN IZ If Ir I~ I I I I I I I I I I ID IS I HLQI JIAII.*IxBIBIDIDIeCICDIzCIBInCI DI-DI8DIILIICICIZCICICICIDICICICICIDIgDIIQDI\DIrDI}DIDIDIHIUII\III9II7II#IISII,IIIIIpJIATI@ILIFIJUI>HI2TI(IIpIpIIIIIpII=ISISI{IRI"RIB IIIEI I ITImI2IIIIIrI܉ITImIdIIIEI"UIIIW IwI IIŋISlISI!vIkII I(IuII2 I; IDIDI:*IG*I IIiIIGIWIaIYIeII IwI INI IImIEIIIDIRIII IIII I_Iq IJIII IIBBII*I@IIdIHD2hm 2%G 2'M[/2Es3 5@E9@"E?   HV*      O wQ?1QS  ' O ;?I IB/BB# AIIUIIIII-JA$JAOII{I-IܕIIIsI^IHINJIFII_IILIFsIIZIIIIIIII]I>JBB"B*A&IQIIuIsIIJ3BAJIII I1IIIJqBBOAI"I߽I7I6IQIIIIIIIIIII@IIII_ILIKIIeIؿItI1JA`IIMIhIItIIJAI7IIIyI-aIӗI"II^IIIkIIIIT@I@I"BIdBILI NIIIIfIIJIA!|IJ$A,II*IFI?Ic\IJAIJBOBJ+A IJIABB 2B8B'=BB.CB>B=&AJ9B0B}3B"B AINIXIIIIaI5IIIIIIaJv BDB%B,AII?IGI~IIIJxAIVI&I̺II[J4B;BS)B*B-ADI IIIIIqI\YI=IIJ\?BL@B<B8B1Ab JHB6IBHBFAIJGBLFBABEBDB[>B9B2B+AJWBK%B AtIwIAI IIvIÛIIIIIIYIIIIVII|IIiI0IIƃGy?WC ?HA @ AJC`?;IGK J+W'?F'?@JxO'? @WAIDZCAI;IIIIҝIiIIIFIII7IoIGpI"nImIIIIPI0II,JAIyIIIII qIWI!I4III(?IMI7iI(iIgIIKIaIIgIQ~IB~I{III{IIėIJ*B#AIIIJj(B\AEI'IŀIIfqIkiIXIVIWnI݄I˞I IlIVI?InIpPIuqIIqIII4JBB(B0B?IDAuFIGIEFIVI6oIIIθI(I/InIIoIWIVIXIqIIOI'IIIJBB(BY1B7BM<AT\IKiIIE\IOII/I,NINISjIDjI:CI JBB'B0B4B;B2?B?B+;B4B'BBu AIIVIIdIgjI+OIBJW0AI,ICIQD20o?y?wINIJ OBRB!VBuZ@YƤ1?0o?wQ?]19'?y?Qv1&/20/2s3??2c1{2e15E72? 22`?V??[/2"? 2"9k…Ǐ?|p7>Xrǽ'lْ9s_o޼yÆ N[n]~})f߿?rrrٛ{DJA J&M>ݺuc|K.M6BF~"_<Xc׮]oݾ}曑)o׮ɓɧ+O8s'LPZiӦ]q?a\}L-$)y5j FO>Ͻd\ ƍ{APur>ynYqI!|963v$DAampֶm͛dW^Z+}7mlժUcNq]wmU;/~E98f[4vBXT3ۚrшw_V{p'--_bo[Ϟ=/^<3D%kѢEh;w2eΝ;m8{˗=]tNZ@^tE޽?GqСCÇ_wԉӧOGO8]ps̱|رG}W^3C'LACI?)MIi)]Fȡt&LT TYhHv**K3u_ YZs݊q:PkyBN;mȐ!#OǦo}[p+Rw0 rAG gls+\f4i `tYu KX&6@P*BOZp 䈾CB[Ғ<8 xy0>c[]ACsd{P+&Τ/i $Bf̘GSmK BJ`@E0ÞգOHC9F |71/:B1)ղEzǎ 4@:إKjh" BY-'T^|EfXhi&}݇43 w46# .#S~Ibv`h;l{p*s0'Z*RXF 7p$Cq\3EirѶiML;tSs}n@q?A@:d?~)>׻-MO#ԒHިQ#m9E>k27o^"!F,Ɩ!U;:8` x#4= j^`on40zmaibذa`I\ EVa81Fv,I?g~y!0#.n%~-|ށ,ʼ'̚{X$Pjknv7mڄ5 Sx0<C;/74wOH E{LT h&@8`\p99`$ۥKZZ?SO*|PC} >eCȖNrV&OLΘ1n0&ć1b{khҕo 2 !q{nE"6uA13 >#΅LO=8=`0ժUC'NQ`K/u`fwy?u>ȶmۨ)S4>)C-##|U*Ulp5h$Zz5KrB 3D\[լYmN$=RfM8Wر#!}IT[mqΈeƼx ضY Sx?'H7|/Jf43ޤbND@LY w}gF ILY0 ʅI>3'QX:2d/Nlo6;v-[HBZTCZZ!E{{B]2&q}rL:@?9 )Q܎5{lp|nڈ58kFsFF9V,D:S[jHJ\d)n Mf؇gb(#fRRzdIT31M7Σ:4kD}UH9 E)HEڃZg>p0^tۊ6#w,Iŋ! w5$9}ܹ>Jg`[BM`zUc; Cfr,qTS80tƱ>,R Q{jCj,N}f|]jm"e~~>:ߠ&M<kgK F+O{4 k56$Ȑ1 ʠ2|M?7oތ?)wFq$itI(,di.1/ƹ1\of< 's"mwrޕ3AH2}tp f !F byZC `d%G`{؀lRF2vNuf%k,F`gtr>ʛ!]{[7ΐf 8Fmf*ܪeqyw.'N\Xk NfX<5Vǟ$qnw #6Έ4k܋`0ξsoͼnNv\5Χm+2dˌѧtPMEz0qLҡw''8n n[C ԇAYWn])AP{+ލ &oݺ.A4 7_HNڢa@b=}[cƊgPFt$F3tٺ=ƍ7ͩ 'DARL,LpnGo Y׾#IB>P-ي`jB#SN!+T7Ч#sq{y*E!#>ѼMlA1a@ \q7*13bD u܋5k EwI|۲e zua↳P0 +knhcǎkמy晈YLJiwڕFAaVbFYwQͶx=_~hH~"ONlz$Ȅ*P&T:h+ZUvv6ڟi&gp{LԩPfn ww3slA[SBϣrss˶^żJhkӦ d.Ϭ-ۭ^i (JNNKV1%27Z{LIG=3d2}b„ {^CÏTs֭wQFpkԨI##T8vX( iK.-P:ڣQƍ[nRAJ#sBDA Zڷo:Q ,h>z1cwQab|cXrNcyޞb6}WD&ꙕݣ_bs@Lf9X#۾\2 h+ 1& !̙beSȪ^FGAp(,0FٓddFY?|^ !ǜ}aK{NKK`m۶ݻwCW/ƒLa^x0&$0mfL -[ѡDD+뛠FÆCPr#p4i2݊A ɓ'#-͛Gnm"9{{:M6 6 kcUt1aP9'atr4i6R -@i?k,jYR%9sǎCSdt:0KbI(d{a=TPPmAAhR͛_wu6Y>Q>TȬ.*Dc( եK93Xr{ʅ>'|q[%Qwn&ˍ P&N8& BB :z3h:̠cqj 2P\lYYa#A/X஻b\>D>p’psz$`B0o<4B[zz $A(;v>\$"hAHڷA-Ʌ* Zs ZeJ NTĒR֭VP> :??߾#tU-A(xb9 N:_TR* A[^x:UH!-C=ڲ $?PQm"T>rHfԣBjAo/^R zKE}UWGԂR*AaR!TOzPDI @("P!Z/ " BBo埠[*BdTڱ}kZc5L㬳 BJaG6l02DS Ǐ߿YHE۷A)OЯnاH!w߾BTݺ]{җ&x R^/RG !7'?w ܱ}Y_NǯY١ùH!EE:v{k׮R)[_GBHcǎ5iX]#}DAp=$ I4H+kz^} }ƇԸI#uU>l8UW02S([G}矉qデ5n$JLH(yajR/ IqFxtwzP )0d!JgL{qUE]/T 1Tb(hߣH^u\K oyThfxA y2qՍP$bGm X*w;&2F](N{ɢzZ^ RzKE(t2<8!1TxtC/ "DA/["*rƍmV'8dO6go]`qB)Rޛ6oTҡCԅY3'٥駟РĥOzQeu]233׬].,j"1 .%KO6Yf#FP_˥#tkgNNΠAfDs=wݓ۳gOΝr.zdɒ'xB-ёҀKIr颐bOq=zoٲzZHi; CB]ɃզȲrssnbv0WA8Njk /_NbT'D46.2ի׽{w\:KWN#zCէM>oeso(9Zha^{m"7xTt_Ǽ>sǰsݺuӡ.()ŜA9R*ҩ{}Z#q(]V͛7Wʥ#PjѣG`ܹUTQ X3FA֠S'=!oǏ.L*B p౥5k֬UW_b'h!Τyޛ}BnjժsQ %>ƆD :y8qbfX<hȍ)S*R3uѠf͚_t!Ν; x_óf; C&ri!]=5[B9@2y_AVm3*   ZAA |ݲ+dA$Avی^T{9OFA(ssUB f|cJ_Z&A0)ڡ, aɎ~F/5rOī'}7=˟ ].sEhfJ˾HK* B贸>a#x=y9XZn!L=~u%+A](RQD^ $5A{9+x́A߹(Yr&cU_q*QI`dl )I&ᣘWB­ZsERqo-x}EE_c Yw2\%IeY Č:.tl8[\ҙ"Xxԭ. 'vUpnF҂ xy9G)[ЈjH..kG_\ KS!V6qtҐ9wew[H jYpL#A%upKEZ)TEP"IU^7Cy *Z; BB|Z! B*BKAH_AA $ DEЂ Ʌb=A $I=hA!- "hA  AA "hA  ADЂ "h|K.bA(%RK* "$YF |ڄS!duAH=n\A6Vu4 rAт $!V~x֌OAdb\1 W?- ~XA :^ a{%1$)8tHrnl؁HYr- Z-t Z- - -- - HA HA RЂ RRЂ RЂ    - -- - HA HA RЂ RЂ   B*+ BR|m (IENDB``1BMK6(KքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBABքBAB