Examen Vba

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

Année Universitaire : 2022-2023

2023

Epreuve : VBA-Excel
Excel pour les financiers

Date : 10/01/2023 Durée : 2H Nombre de pages : 2

Enseignant(es) :

Section : MP1 ING FIN Session : □Examen □S1

Questions

1) A quoi sert l’option Explicit au début des modules VBA


Réponse
onse : Option Explicit permet de forcer la déclaration des variables qui est par défaut implicite
en VBA.
2) Les deux dernières instructions permettent-elles
permettent elles d’échanger les deux valeurs de B et A ? Si l’on
inverse les deux dernières instructions, cela change-
change-t-il
il quelque chose ?
Sub Test()
Dim A as Integer, B as Integer
A=7
B=4
A=B
B=A
End Sub
Réponse
onse : Non les instructions ne permettent pas d’échanger
d échanger les valeurs A et B (A=B=4).
(A=B=4) Même en
inversant les deux dernières instructions, A et B auront la même valeur (A=B=7)
3) Quelle valeur initiale faut-il
faut il affecter à somme pour qu’elle calcule la somme des chiffres de 3 à n ?
Public function somme(Byval x as Integer, Byval n as Integer)
as Long
Dim i as Integer
somme = ?
For i = 3 To n
Somme = somme + i
Next i
End Function
Réponse
onse : somme =0
4) Ecrire les instructions qui permettent de :
a) Supprimer la première feuille d’un classeur
Rééponse : Sheets(1).delete
b) Supprimer les deux dernières feuilles d’un classeur
Rééponse : Sheets(Sheets.count).delete
Sheets(Sheets.count).delete

5) Ecrire une
un macro qui demande un nombre à l’utilisateur, puis qui calcule et affiche le double de ce
nombre. Utiliser les fonctions InputBox et MsgBox.
Réponse
onse :
Sub DoubleN()
N = CInt(InputBox("Saisir un entier:", "Saisie", ""))
MsgBox ("Le double de cet entier est =" & N * 2)
End Sub
6) Ecrire une macro qui permet de parcourir un tableau d’entiers T (avec une taille de 10 entiers) de
deux manières différentes en utilisant les boucles For Each et Do While.
Réponse : Sub parcours1()
Dim T As Variant
T = Array(1, 4, 6, 1, 9, 5, 7, 26, 87, 43)
For Each N In T
MsgBox (N)
Next

End Sub
Sub parcours()
Dim T As Variant
T = Array(1, 4, 6, 1, 9, 5, 7, 26, 87, 43)
i=0
Do While i < 10
MsgBox (T(i))
i=i+1
Loop

End Sub
Exercice 1:

Ecrire le code VBA qui permet de demander un nombre de départ (par un InputBox), et qui calcule la
factorielle de ce nombre. Le résultat sera affiché dans un MsgBox.
Par exemple, si l’on entre 4, le programme doit calculer : 4*3*2*1 et afficher le résultat : 24
NB : on souhaite afficher uniquement le résultat, pas la décomposition du calcul.

Réponse :
Sub factorielle()
n = CInt(InputBox("Saisir entier:", "", ""))
f=1
For i = 2 To n
f=f*i
Next
MsgBox ("Factorielle de " & n & "est = " & f)
End Sub

Exercice 2:

Soit un tableau T constitué de 15 éléments. Les éléments du tableau T correspondent respectivement aux valeurs
dans la plage A1:A15 dans le classeur actif.
Ecrire une macro qui permet d’initialiser le tableau T et d’afficher dans la cellule C3 « oui » s’il existe deux valeurs
successives égales dans le tableau T et « non » sinon.
Réponse :
Sub tableau()
Dim T As Variant
T = Range("A1:A15")
trouve = False
'ici une remarque les tableaux remplis avec une plage de cellules sont des tableaux à deux dimensions ici la
dimension 2 est de taille 1
For i = 2 To 15
If T(i - 1, 1) = T(i, 1) Then
trouve = True

End If
Next
If trouve Then
Range("C3") = "oui"
Else
Range("C3") = "non"
End If
End Sub
Exercice 3:

Les habitants d'un pays paient l’impôt selon les règles suivantes : les hommes de plus de 20 ans paient
l’impôt les femmes paient l’impôt si elles ont entre 18 et 35 ans les autres ne paient pas d’impôts.
Soit le tableau Excel suivant qui présente des informations sur certaines personnes :

1) En considérant le tableau Excel ci-dessus, Ecrire le code VBA qui permet d'afficher "Oui" en
colonne E la personne doit payer l'impôt, "faux" sinon.
N.B : Utiliser les boucles
Réponse
Sub impots()
i=2
Do While Not IsEmpty(Cells(i, 1))
If (Cells(i, 4) = "M" And Cells(i, 3) >= 20) Or (Cells(i, 4) = "F" And Cells(i, 3) >= 18 And Cells(i, 3) <= 35) Then
Cells(i, 5) = "oui"
Else
Cells(i, 5) = "faux"
End If
i=i+1
Loop
End Sub
2) Si nous associons le code de la question précédente à un bouton, de sorte que si on modifie une
donnée, un simple clic sur le bouton permet d'actualiser la situation. Quel sera le nom de la macro
qui permet de le faire ?
Réponse :

Le nom de la macro est cmdOK_Click si la propriété Name du bouton a comme valeur cmdOK

Vous aimerez peut-être aussi