Enoncés des travaux dirigés de VBA, première année Table des matières 1 TD 1 :
Enoncés des travaux dirigés de VBA, première année Table des matières 1 TD 1 : Equation diérentielle stochastique et graphique 2 2 TD 2 : Construction d'une chier Acrobat et envoi par email 10 3 TD 3 : Construction d'une présentation 16 4 TD 4 : Construction d'une présentation à partir de photos 17 5 TD 5 : Résolution d'un Sudoku 23 6 Correction du TD 1, page 2 29 7 Correction du TD 2, page 10 33 8 Correction du TD 3, page 16 36 9 Correction du TD 4, page 17 42 10 Correction du TD 5, page 23 46 1 1 TD 1 : Equation diérentielle stochastique et graphique (correction page 29) Quelques remarques en préambule, il ne faut pas hésiter à se promener dans l'aide de Microsoft concernant VBA, en appuyant sur la touche F1 par exemple. Internet est également une bonne source, il su t parfois de recopier un message d'erreur obscur dans Google pour obtenir une réponse. Une autre méthode simple consiste à enregistrer sous forme de macro l'action que vous voulez programmer. Microsoft convertit toute marco sous la forme d'un code écrit en VBA dont il est facile de s'inspirer. VBA n'est pas un langage compliqué, la plupart du temps est passée à chercher comment faire une action précise comme ajouter un graphe automatiquement dans une feuille Excel. Les quatre TD n'ont pas pour but de vous apprendre à programmer mais plutôt de vous montrer quelques usages courant des logiciels Microsoft. Objectifs de ce TD : 1. Découvrir VBA 2. Résoudre une équation diérentielle stochastique avec VBA 3. Tracer un graphique L'équation diérentielle stochastique de Black et Scholes apparaît souvent lorsqu'on parle de nance : dYt Yt = rdt + σdWt (1.1) Oô : Yt est le prix à l'instant t d'une action r est le taux d'intérêt sans risque σ est la volatilité du prix de l'action t représente le temps, dt un petit intervalle de temps Wt est un mouvement browien, et plus simplement dans ce TD une variable aléatoire normale de moyenne nulle et de va- riance t, dWt est une variable aléatoire normale de moyenne nulle et de variance dt. Cette équation diérentielle, si on la résoud sans tenir compte de sa partie stochastique donne Yt = Y0ert. Avec un taux d'intérêt positif, le prix d'une action augmente. Mais cela n'est jamais beau et on est obligé de tenir compte des aléas plus ou moins importants selon la valeur de σ. Plus on avance dans le temps, plus la part du hasard est importante et plus la probabilité que le prix de l'action suive la courbe Yt = Y0ert est faible. Si on cherche à résoudre l'équation diérentielle stochastique de manière numérique entre les temps 0 et T, on procède comme pour une équation diérentielle classique. On considère donc que dt est un petit intervalle de temps et on écrit l'équation comme ceci : Yt+dt = Yt (1 + rdt + σdWt) (1.2) 2 Ensuite, à partir de Y0 qui est connu, on calcule les valeurs Ydt, Y2dt, Y3dt, ..., YT−dt, YT . La diérence avec une équation diérentielle non stochastique est qu'il n'y a plus une seule solution mais une in nité : à chaque itération pour calculer, Y(n+1)dt en fonction de Yndt, on utilise un dWt diérent pris au hasard. Ceci signi e que YT n'est pas une constante mais une variable aléatoire. Il faut donc calculer un grand nombre de solutions pour obtenir sa moyenne, sa variance, son maximum, son minimum... Et c'est l'objectif de cette séance. 1) Pour commencer, il faut lancer l'application Excel accessible depuis le menu Démarrer (ou Start) de Windows. Ensuite, il faut recopier exactement ce qu'il y a dans la gure 1.1. Il est préférable de ne pas se tromper de ligne ou de colonne pour que la suite de l'énoncé soit cohérente avec votre travail. N'oubliez pas de sauver le chier avec un nom de votre choix. Par la suite, sauvez régulièrement au cas où la mauvaise humeur d'Excel l'amènerait à planter en pleine programmation ce qui ne devrait normalement pas vous arriver durant de TD, fort heureusement. Fig. 1.1 Début pour la question 1. 2) La suite va se passer dans une autre fenêtre : celle où l'on écrit les programme en VBA. La gure 1.2 montre comment ouvrir l'éditeur VBA qui est aussi accessible grâce au raccourci ALT+F11. Il faut ensuite ouvrir une fenêtre ou module permettant de saisir le programme VBA (seconde image de la gure 1.2). Fig. 1.2 Création d'un module : fenêtre où va être écrit le programme VBA. Une nouvelle fenêtre apparaît. Il faut maintenant saisir le programme de la gure 1.3. 3 Fig. 1.3 Prémisses d'un programme. L'instruction Option Explicit indique au langage VBA qu'il doit être plus stricte lors de sa compréhension du programme, cela évite qu'il interprète mal une instruction, il détectera une erreur à la place. Une fois que ce petit programme est tapé, on écrit à l'intérieur de la procédure (entre les instructions Sub et End Sub la ligne : MsgBox "boîte à message" Placez ensuite le curseur sur cette ligne et cliquez sur l'icône en forme de triange orienté vers la droite dans la barre d'outils. Une boîte à message doit normalement apparaître à l'écran : le programme est en train de tourner et vous demande de presser le bouton Ok pour conclure. 3) On cherche maintenant à récupérer les valeurs présentes dans la feuille Excel de la question 1. Il y a 5 informations, on doit donc créer 5 variables. On considère que ce sont toutes des variables réelles et pour en déclarer une, on écrit1 : Dim r As Double On appelle les 5 variables à récupérer r, sigma, x0, dt, T. Une fois que celle-ci sont créées, on peut leur aecter une valeur en récupérant celles présentes dans la feuille Excel2 Pour récupérer le contenu d'une case, on utilise : r = Worksheets("Sheet1").Cells(4, 1).Value N'oubliez de déclarer vos variables avant de leur aecter une valeur. Il en sera de même plus tard pour les variables utilisées dans les boucles For. Sheet1 est le nom de la feuille. Si la version d'Excel que vous utilisez est française, ce sera un autre nom comme Feuil1. L'instruction précédente récupère donc la valeur de la case ligne 4, colonne 1 de la feuille Sheet1. On procède de même pour sigma, x0, dt, T. 4) On va maintenant créer une fonction permettant de calculer une solution de l'équation diérentielle stochastique de Black et Scholes. Elle prend comme paramètres : 1. r : un réel ou Double en VBA 1Le nom des variables, comme celui des fonctions ne peut inclure ni espace, ni accent. Aucune distinction n'est faite entre minuscules et majuscules. Il n'est pas besoin d'être très rigoureux sur les minuscules et majuscules, VBA les corrige lorsqu'elles ne correspondent pas au nom utilisé lors de la déclaration de la variable. 2Avec l'instruction Option Explicit, il est impossible d'utiliser une variable sans que celle-ci ait été préalablement déclarée. 4 2. sigma : un réel ou Double en VBA 3. x0 : un réel ou Double en VBA 4. dt : un réel ou Double en VBA 5. T : un entier ou Long en VBA Elle retournera un tableau de valeurs correspondant au vecteur (Y0, Ydt, Y2dt, ..., YT ). Le type de résultat en VBA est un Variant. Pour déclarer la fonction, on utilise la syntaxe suivante : Function Simulation(ByVal r As Double, ByVal sigma As Double, ByVal x0 As Double, _ ByVal dt As Double, ByVal T As Long) As Variant ' code de la fonction ' Lorsqu'on connaît le résultat de la fonction, on écrit Simulation = résultat End Function Le blanc souligné _ à la n de la première ligne permet d'écrire une instruction sur deux lignes et non sur une seule comme le langage VBA l'impose. Le blanc souligné doit toujours être précédé d'un espace. Le mot-clé ByVal signi e qu'on passe les paramètres par valeur : ils sont recopiés. L'inverse est ByRef qui signi e un passage par adresse : ils ne sont pas recopiés et peuvent être modi és dans la fonction. Le type du résultat apparaît en n de ligne. L'apostrophe sert à insérer un commentaire dans le programme. Cette fonction doit être insérée juste après Option Explicit et avant la procédure qui suit et qui devra faire appel à cette fonction. 5) On cherche à calculer une solution de l'équation de Black et Scholes. Cette solution est un tableau qui contient n = T dt + 1 valeurs. Dim n as Long n = T / dt + 1 On déclare un tableau de réels dont les indices vont de 0 à n. La première valeur est x0. Dim res() As Double ReDim res(n) res (0) = x0 Pour simuler une variable normale de moyenne nulle et de variance dt, on utilise le code suivant : Dim w As Double w = Rnd ' nombre aléatoire de loi uniforme uploads/Finance/ vba-td 3 .pdf
Documents similaires





-
24
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 23, 2021
- Catégorie Business / Finance
- Langue French
- Taille du fichier 0.5012MB