Vous êtes sur la page 1sur 3

Informatique - DEGEAD 2 Université Paris-Dauphine

TD 1 - Programmation en VBA

Exercice 1 : Programme VBA

Q 1.1 Quels sont les affichages effectués par MsgBox lors de l’exécution de la macro mac1 suivante :

Sub mac1 ( )
MsgBox ” Bonjour ! ”
proc1
p r o c 2 10
End Sub

Sub p r o c 1 ( )
MsgBox ” Bienvenue 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 . ”
proc3
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édures sont déclarées dans le programme VBA suivant : procA, procB et procC.

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.1 Quel va être le contenu de la plage de cellules allant de L1C1 à L7C1 après exécution des instructions
suivantes ?

Dim p As Boolean , q As Boolean


p = True : q = False

Cells (1 , 1 ) . Value = p And q


Cells (2 , 1 ) . Value = p Or q
Cells (3 , 1 ) . Value = q And q Or p
Cells (4 , 1 ) . Value = q And ( q Or p )
Cells (5 , 1 ) . Value = p Or q And q
Cells (6 , 1 ) . Value = ( p Or q ) And q
Cells (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ès procA , a = ” & a & ” e t b = ” & b
procB
MsgBox ” Après 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é par MsgBox lors de l’exécution de la macro testAB ?
Informatique - DEGEAD 2 page 3

Q 2.3 Soient a et b deux variables de même type, proposez un algorithme échangeant leur contenu avec
le moins d’instructions possible.

Exercice 3 : Passage de paramètres

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ès p r e m i e r procC , a = ” & a & ” e t b = ” & b
procC a , c
MsgBox ” Après deuxième procC , a = ” & a & ” e t b = ” & b & ” e t c = ” & c
End Sub

Quel est l’affichage effectué par MsgBox lors de l’exécution 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ès procC , a = ” & a & ” e t b = ” & b
procD a , b
MsgBox ” Après procD , a = ” & a & ” e t b = ” & b
End Sub

Quel est l’affichage effectué par MsgBox lors de l’exécution de la macro testCD ?

Vous aimerez peut-être aussi