Informatique - DEGEAD 2 Universit´e Paris-Dauphine
TD 1 - Programmation en VBA
Exercice 1 : Programme VBA
Q 1.1 Quels sont les affichages effectu´es par MsgBoxlors de l’ex´ecution de la macromac1 suivante : Sub mac1 ( )
MsgBox ” Bonjour ! ” p r o c 1
p r o c 2 10 End Sub Sub p r o c 1 ( )
MsgBox ” Bi e nv en u e dans l ’ UE47 . ” End Sub
Sub p r o c 2 (ByVal a As I n t e g e r ) I f a > 5 Then
MsgBox ” T r a v a i l l e z b i e n . ” p r o c 3
Else
MsgBox ”Ne t r a v a i l l e z pas . ” End I f
End Sub Sub p r o c 3 ( )
MsgBox ”Bon s e m e s t r e ! ” End Sub
Q 1.2 Trois proc´edures sont d´eclar´ees dans le programme VBA suivant :procA,procB etprocC.
Sub procA ( )
Dim a As I n t e g e r , Dim b As String a = 2 7 : b = a + 10
End Sub
Sub procC (ByVal a As I n t e g e r ) b As I n t e g e r
I f a < 20 Then b = 100
Else
b = 1000 End Sub
Informatique - DEGEAD 2 page 2 Sub procB ( )
b = 100 procC b
(a) Ce programme contient-il des macros ?
(b) Combien d’erreurs voyez-vous dans le programme ? (c) Corrigez-les.
Exercice 2 : Variables
Q 2.1Quel va ˆetre le contenu de la plage de cellules allant de L1C1 `a L7C1 apr`es ex´ecution des instructions suivantes ?
Dim p As Boolean , q As B o o l e a n p = True: q = False
C e l l s ( 1 , 1 ) . Value = p And q C e l l s ( 2 , 1 ) . Value = p Or q
C e l l s ( 3 , 1 ) . Value = q And q Or p C e l l s ( 4 , 1 ) . Value = q And ( q Or p ) C e l l s ( 5 , 1 ) . Value = p Or q And q C e l l s ( 6 , 1 ) . Value = ( p Or q ) And q C e l l s ( 7 , 1 ) . Value = Not p And ( q Or p ) Q 2.2 Soit le programme VBA suivant :
Dim a As S i n g l e , b As S i n g l e Sub testAB ( )
a = 1 : b = 2
MsgBox ” Avant , a = ” & a & ” e t b = ” & b procA
MsgBox ” Apr`es procA , a = ” & a & ” e t b = ” & b procB
MsgBox ” Apr`es procB , a = ” & a & ” e t b = ” & b End Sub
Sub procA ( )
Dim b As S i n g l e : b = 4 End Sub
Sub procB ( )
b = 3 : a = 10 End Sub
Quel est l’affichage effectu´e par MsgBox lors de l’ex´ecution de la macro testAB?
Informatique - DEGEAD 2 page 3 Q 2.3 Soientaetb deux variables de mˆeme type, proposez un algorithme ´echangeant leur contenu avec le moins d’instructions possible.
Exercice 3 : Passage de param`etres Q 3.1 Soit le programme VBA suivant :
Sub procC (ByRef a As S i n g l e , ByRef b As S i n g l e ) a = 10 : b = 100
End Sub Sub t e s t C ( )
Dim a As S i n g l e , b As S i n g l e , c As S i n g l e a = 5 : b = 10
MsgBox ” Avant , a = ” & a & ” e t b = ” & b procC a , b
MsgBox ” Apr`es p r e m i e r procC , a = ” & a & ” e t b = ” & b procC a , c
MsgBox ” Apr`es deuxi`eme procC , a = ” & a & ” e t b = ” & b & ” e t c = ” & c End Sub
Quel est l’affichage effectu´e par MsgBox lors de l’ex´ecution de la macro testC? Q 3.2 Soit le programme VBA suivant :
Sub procC (ByRef a As S i n g l e , ByVal b As S i n g l e ) a = 10 ∗ b : b = 100
End Sub
Sub procD (ByRef a As S i n g l e , ByVal b As S i n g l e ) b = 2 0 : a = 10 ∗ b
End Sub Sub testCD ( )
Dim a As S i n g l e , b As S i n g l e a = 5 : b = 10
MsgBox ” Avant , a = ” & a & ” e t b = ” & b procC a , b
MsgBox ” Apr`es procC , a = ” & a & ” e t b = ” & b procD a , b
MsgBox ” Apr`es procD , a = ” & a & ” e t b = ” & b End Sub
Quel est l’affichage effectu´e par MsgBox lors de l’ex´ecution de la macro testCD?