Vous êtes sur la page 1sur 2

Analyse de Données [2023-2024]

TD n°4: Approfondissement / VBA


Exercice I - Affichage d’un calendrier de la semaine :
1°) Créer un nouveau fichier « TdRévisionVBA.xlsm » dans le dossier « VBA »
2°) Créer un nouvel onglet « Semaine », et saisir et mettre en forme la 1ère ligne du tableau ci-dessous, dont l’objectif sera d’afficher le calendrier de
la semaine correspondante à une journée saisie dans un popup :

3°) Dans un « module1 », créer une macro « mAfficherSemaine » permettant :


- De demander la saisie d’une date tant que celle-ci n’est pas valide ( la date d’aujourd’hui étant précisée par défaut )
- Et si l’utilisateur n’a pas annulé la saisie, de calculer le numéro de jour de la semaine de la date saisie.
- En déduire la date du premier jour de la semaine correspondante ( ex : si on est mardi, le numéro de jour est 2, il faut enlever 1 jour pour
obtenir le lundi correspondant, si on est mercredi, le numéro de jour est 3, et il faut enlever 2 jours pour obtenir le lundi correspondant ➔
de façon générale, il faut donc enlever numéro de jour – 1 pour obtenir le lundi correspondant ! )
- Puis d’afficher sur la seconde ligne, sur les 7 colonnes de A à G, le jour et le mois pour toute la semaine en question, en commençant par
le lundi calculé.
- Et enfin de mettre en couleur la cellule correspondante à la date saisie
4°) Créer un bouton de lancement de la macro

Exercice II - Création d’un tableau d’amortissement d’un prêt bancaire :


1°) Créer un nouvel onglet « Amortissement », saisir et mettre en forme les 5 premières lignes du tableau ci-dessous ( nb : E5 est toujours égal à
A2 ), dont l’objectif sera d’afficher le planning de remboursement d’un prêt bancaire :

2°) Dans un « module2 », créer une macro « mCreerAmortissement » , et y inclure la commande permettant d’effacer le tableau de la ligne 6 à la
ligne 365 ( on supposera que l’on n’est jamais amené à contracter un prêt d’une durée supérieure à 30 ans )
3°) Compléter la macro en récupérant les paramètres de la ligne n°2 dans des variables « Montant », « TAEG », « Duree », « Mois » et « Annee »,
calculer le montant de la mensualité ( en utilisant le même calcul que le TD précédent, en l’arrondissant au centime près, à 2 chiffres après la
virgule ), et remplir la colonne « mensualité » avec cette valeur, à l’aide d’une boucle For. Vous tiendrez évidemment compte de la durée du prêt
pour déterminer le nombre de lignes à compléter dans la borne maximale de la boucle For. Tester avec des valeurs différentes au niveau de la
durée, afin de vérifier que le programme s’adapte en conséquence.
4°) Chaque mensualité étant versée le 5 du mois, retrouver la date du 1er versement, puis compléter la boucle « For » précédente, en affichant la
date de chaque versement ( ajouter un mois à chaque itération )
5°) Compléter enfin la boucle « For », en calculant pour chaque ligne, dans cet ordre, avant de tester la création du tableau :
- L’intérêt versé
- Le capital remboursé
- Puis enfin le capital restant dû
6°) Une fois la boucle terminée, corriger le dernier montant de la mensualité, en lui ajoutant le résidu de la dernière cellule de la colonne E, corriger
en conséquence les autres montant de la dernière ligne, afin que le dernier capital restant dû soit exactement de 0€.
7°) Vérifier le fonctionnement de la macro avec d’autres données ci-après, et créer un bouton de lancement.

1
Analyse de Données [2023-2024]

Pour aller plus loin : Exercice III - Création d’un calendrier annuel :

1°) Créer un nouvel onglet « Calendrier », et saisir et mettre en forme la première ligne du tableau ci-dessous :

3°) Dans un « module3 », créer une macro « mAfficherCalendrier » permettant :


- De demander la saisie d’une année, afin d’en déduire le 1er janvier
- Puis d’en déduire successivement toutes les dates de l’année, et de les placer sur la feuille à la bonne ligne, et la bonne colonne, jusqu’à
ce que l’on se retrouve à l’année suivante.
- D’afficher en rouge les cellules qui correspondent à des samedis ou dimanches
- D’afficher en violet les cellules des jours fériés à dates fixes ( 1er janvier, 1er mai, 8 mai, 14 juillet, 15 août, 1er novembre, 11 novembre et
25 décembre )
4°) Ajouter dans ce module une fonction Paques() qui prend en paramètre un entier correspondant à une année, et renvoie la date de Pâques au
format Date. Utiliser l’algorithme de Gauss-Reints suivant ( Nb : toutes les valeurs sont des entiers, et la partie entière E(x) s’écrit Int(x) en VBA ) :
P = E( annee / 100 )
Q = E( (3 P + 3) / 4 )
R = E( (8 P + 13) / 25 )
M = (15 + Q - R) % 30
N = (4 + Q) % 7
A = annee % 19
B = annee % 4
C = annee % 7
D = (19 * A + M) % 30
E=(2B+4C+6D+N)%7
F = 21 + D + E
Si F = 56 Ou (F = 55 Et E = 6 Et A > 10) Alors F = F – 7
→ La date de Pâques se retrouve alors en ajoutant F jours au 1er mars de l’année en question !
Tester votre fonction en tapant par exemple « =Paques(2021) » dans une cellule vide de votre feuille Calendrier
5°) Compléter la macro « mAfficherCalendrier » en affichant également en violet le lundi de Pâques (1 jour après Pâques), le jour de l’Ascension
(39 jours après Pâques ) et le lundi de Pentecôte ( 50 jours après Pâques )

Vous aimerez peut-être aussi