PERIODIC TABLE OF ASSET RETURNS VBA VISUAL BASIC POUR APPLICATIONS - FINANCE ET GESTION DES RISQUES
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
FINANCE ET GESTION DES RISQUES PERIODIC TABLE OF ASSET RETURNS VBA VISUAL BASIC POUR APPLICATIONS Oliver NGABONZIZA & Alexandre MONNEY Genève, le 30 mars 2007
PERIODIC TABLE OF ASSET RETURNS TABLE DES MATIERES 1. Introduction ________________________________________________________ p. 1 2. Développement _____________________________________________________ p. 2 Macro1 p. 4 Macro2 p. 6 4. Guide d’utilisation ___________________________________________________ p. 8 3. Conclusion _________________________________________________________ p. 9 4. Bibliographie _______________________________________________________ p. 10 5. Annexes ____________________________________________________________ p. 11 “The Callan Periodic Table of Investment Returns” Annexe 1 Guide d’utilisation rapide Annexe 2
PERIODIC TABLE OF ASSET RETURNS INTRODUCTION Le présent travail porte sur le développement d’une application de gestion financière à l’aide de Visual Basic pour Applications sur Excel. Le but de l’application est de créer une table périodique qui permet de visualiser rapidement, facilement et clairement des actifs en fonction de leurs performances. Pour développer notre application, nous nous sommes inspirés de la « Callan Periodic Table of Investment Returns » (Annexe 1), développée par la société américaine Callan Associates Inc.. Il s’agit d’un tableau qui permet de distinguer les rendements annuels d’indices clés et ceci pour un certain nombre d’années. Ci-dessous un extrait de cette table : Les indices sont classés par ordre de performance, de la meilleure à la plus mauvaise. Les couleurs permettent de comparer les performances des indices. Par exemple, pour le cas de l’indice S&P / Citigroup 500 Growth, il est facile de constater que, pour les années 1996 à 1998, sa performance était la meilleure par rapport aux indices étudiés. Par contre, en 1999, l’indice S&P / Citigroup 500 Growth prenait la deuxième position. Depuis, cet indice se trouve en fin de classement. Oliver NGABONZIZA & Alexandre MONNEY page 1
PERIODIC TABLE OF ASSET RETURNS Ainsi, nous avons conçu une application pouvant classer automatiquement les performances d’actifs, de la meilleure à la plus mauvaise, pour les années 1996 à 2006. Notre table affiche également, un classement des actifs selon la moyenne de leurs rendements ainsi que selon leur risque, pour la période étudiée. Pour faciliter la prise en mains de l’utilisateur novice, nous avons également rédigé un guide d’utilisation en français (Annexe 2). DEVELOPPEMENT Notre application est utilisable par le biais du fichier Excel VBA PERIODIC TABLE. Celui-ci contient trois feuilles ; INPUT, COPY et OUTPUT. Dès l’ouverture du fichier Excel, on se trouve sur la feuille INPUT et une boîte de dialogue apparaît pour souhaiter la bienvenue à l’utilisateur Pour cela, nous avons utilisé la fonction MsgBox : ' Message de bienvenue Private Sub Workbook_Open() Msg = "Welcome to the periodic table of asset returns created by Oliver NGABONZIZA and Alexandre MONNEY" MsgBox Msg Ce message de bienvenue est suivi par une seconde boîte de dialogue qui fait office de guide d’utilisation simplifié. Oliver NGABONZIZA & Alexandre MONNEY page 2
PERIODIC TABLE OF ASSET RETURNS ' Explications pour utilisation Msg = "Insert names of assets and their annual returns in white cells, then action the LAUNCH key." MsgBox Msg End Sub Comme ces boîtes de dialogue sont liées au classeur et non aux feuilles, leur code a été directement introduit dans l’objet « ThisWorkBook ». Ensuite, il convient d’introduire les actifs que l’on souhaite étudier ainsi que leurs performances, ceci dans les cellules blanches du tableau pré formaté de la feuille INPUT. Extrait de la feuille INPUT. La moyenne (AVERAGE) ainsi que la volatilité (RISK) sont calculées automatiquement à partir des données saisies précédemment. A cet instant, notre application va pouvoir déployer toute sa puissance et faire gagner un temps considérable à son utilisateur. Notre application comprend deux macros. La première, MACRO1, s’occupe de classer les performances des actifs et d’attribuer une couleur par actif étudié. La seconde, MACRO2, permet d’imprimer rapidement la feuille de résultats ainsi que la feuille de données de base. Oliver NGABONZIZA & Alexandre MONNEY page 3
PERIODIC TABLE OF ASSET RETURNS MACRO1 La MACRO1, s’exécute en pressant sur le bouton LAUNCH de la feuille INPUT. A cet instant, un mot de passe est demandé : vba Le code de la MACRO1 est le suivant : Sub Macro1() ' Macro1 Macro ' Macro recorded 2/26/2007 by Oliver and Alex ' Désactivation de la mise à jour de l'écran Application.ScreenUpdating = False ' Désactivation des messages d'alerte Application.DisplayAlerts = False ' 1997 Sheets("COPY").Select Range("B5:C9").Select Selection.Copy Sheets("OUTPUT").Select Range("B5:C9").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Sort Key1:=Range("C5"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal Oliver NGABONZIZA & Alexandre MONNEY page 4
PERIODIC TABLE OF ASSET RETURNS ' 1998 ' 1999 ' 2000 ' 2001 Le code est identique pour chaque année ' 2002 seules les cellules sélectionnées sont ' 2003 modifiées Range("XX:XX"). ' 2004 ' 2005 ' 2006 ' Average Sheets("COPY").Select Range("J15:K19").Select Selection.Copy Sheets("OUTPUT").Select Range("J15:K19").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Sort Key1:=Range("K15"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal ' Risk Sheets("COPY").Select Range("L15:M19").Select Selection.Copy Sheets("OUTPUT").Select Range("L15:M19").Select ActiveSheet.Paste Application.CutCopyMode = False Selection.Sort Key1:=Range("M15"), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal End Sub Le code utilisé n’est pas particulièrement compliqué. Toutefois, nous avons constaté qu’il faut être très méthodique lors de l’enregistrement de la macro. En effet, pour débuter, nous avons choisi de travailler à l’aide de la fonction enregistrer plutôt que d’écrire directement les fonctions dans Visual Basic Editor. Ensuite, nous nous sommes penchés sur le code et l’avons modifié à notre guise. Dans notre code, nous avons également pris l’habitude de placer une parenthèse ainsi qu’un titre. Ceci permet de mieux s’y retrouver et de mieux comprendre le code de la macro. Oliver NGABONZIZA & Alexandre MONNEY page 5
PERIODIC TABLE OF ASSET RETURNS Nous avons ajouté une fonction permettant de désactiver la mise à jour de l’écran afin de ne pas voir le déroulement pas à pas de la macro lors de son exécution. Nous avons aussi complété notre macro à l’aide d’une fonction désactivant les messages d’alerte, ceci afin qu’elle ne s’interrompt pas en cours d’exécution. En fait, notre macro trie, année après année, les actifs en fonction de leurs performances. La feuille COPY permet uniquement d’attribuer une couleur à chaque actif. Par exemple, pour l’année 1997 la macro exécute les actions suivantes : Sélection des actions et des performances de l’année 1997 sur la feuille COPY. La sélection est copiée et collée sur la feuille OUTPUT. Ensuite, elle effectue un tri par ordre décroissant, soit de la meilleure performance à la plus mauvaise. Pour les années suivantes ainsi que pour la moyenne, la macro accomplit les mêmes actions mais pour des cellules différentes. Pour la volatilité (RISK), la différence se trouve au niveau du tri. En effet, le tri est croissant du fait qu’un actif possédant une plus faible volatilité présente moins de risque et donc d’avantage d’intérêts qu’un actif avec une forte volatilité. Une fois la MACRO1 exécutée, on se retrouve directement sur la feuille OUTPUT. Il est alors possible de visualiser rapidement et facilement les performances des actifs étudiés et de comparer les rendements année après année. La comparaison est également possible à l’aide de la moyenne et de la volatilité. MACRO2 Afin de faciliter et accélérer le processus d’impression et de mise en page, nous avons créé une seconde macro (MACRO 2). Celle-ci s’exécute en pressant sur le bouton PRINT de la feuille OUTPUT : Le code de cette macro est le suivant : Sub Macro2() ' ' Macro2 Macro ' Macro enregistrée le 15/03/2007 par NGABONZIZA ' ' Désactivation de la mise à jour de l'écran Application.ScreenUpdating = False Oliver NGABONZIZA & Alexandre MONNEY page 6
PERIODIC TABLE OF ASSET RETURNS ' Désactivation des messages d'alerte Application.DisplayAlerts = False ' Impression ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("INPUT").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True End Sub Le code de la macro imprime la feuille active (OUTPUT) ainsi que la feuille INPUT. Ceci permet d’obtenir rapidement sur format papier les résultats de notre application. Enfin, pour des raisons esthétiques, les boutons LAUNCH et PRINT n’apparaissent pas lors de l’impression. Oliver NGABONZIZA & Alexandre MONNEY page 7
PERIODIC TABLE OF ASSET RETURNS GUIDE D’UTILISATION Insérez le CD et lancer le fichier Excel « VBA PERIODIC TABLE » contenant l’application que nous avons créée, vous atterrissez directement sur une boîte de dialogue vous souhaitant la bienvenue sur la « PERIODIC TABLE OF ASSET RETURNS », traduisez en français par, la table périodique des rendements d’actif. Vous vous situez alors sur l’onglet intitulé « INPUT », une autre boîte de dialogue apparaît et vous explique la manière de procéder, à savoir : Vous devez introduire dans les cellules blanches prévues à cet effet le nom des actifs ainsi que leurs performances respectives en pourcentage pour les années 1997 à 2006. Les cellules grises ne doivent pas être modifiées, raison pour laquelle nous les avons protégées contre toute forme d’écriture. Les deux dernières colonnes calculent automatiquement pour l’utilisateur la moyenne des rendements sur les dix dernières années ainsi que le risque ou plutôt la volatilité associée à chaque actif. Une fois que toutes les données ont été saisies, vous pouvez lancer la macro en appuyant sur le bouton « LAUNCH ». Cette dernière vous reporte directement sur l’onglet « OUTPUT » après que vous ayez tapé le mot de passe « vba ». Elle affiche les rendements par ordre décroissant, du plus performant au moins performant. La particularité de cette table est que nous avons défini une couleur pour chaque actif. Ceci permet d’avoir un résultat beaucoup plus visuel. Il en va de même pour la moyenne et le risque associés aux rendements de ces titres. Le résultat vous indique en premier lieu le titre qui a fait en moyenne la meilleure performance, la démarche est donc identique aux rendements annuels. Au niveau du risque, l’ordre est inversé, on a donc en premier le titre qui se trouve être le moins risqué et en dernier celui qui présente le plus de risque. Vous avez finalement la possibilité d’imprimer les résultats ainsi que la feuille de données en pressant la touche « PRINT ». L’onglet intitulé « COPY » n’est pas utile à l’utilisateur. Il l’a été pour nous afin de définir les couleurs associées à chaque titre. La macro se réfère à cette feuille pour faire un lien entre le nom du titre et sa couleur. Oliver NGABONZIZA & Alexandre MONNEY page 8
PERIODIC TABLE OF ASSET RETURNS CONCLUSION Nous avons apprécié travailler sur ce dossier. Visual Basic pour Applications était pour nous un outil inconnu qui représente désormais, à nos yeux, un avantage concurrentiel indéniable. Pour cela, nous avons mené des recherches de longues haleines, passé du temps à déboguer notre application, appris à contourner des problèmes et à trouver des solutions en adéquation avec notre but final. Nous sommes conscients que nous n’avons vu qu’une partie infime de Visual Basic pour Applications mais cela nous permet d’estimer la puissance de cet instrument. Nous sommes très contents du résultat obtenu et des compétences que nous avons acquises au travers de cette expérience. Finalement, nous tenons à vous remercier de nous avoir donné l’occasion de nous exercer en construisant une application à l’aide de Visual Basic pour Applications. Oliver NGABONZIZA & Alexandre MONNEY page 9
PERIODIC TABLE OF ASSET RETURNS BIBLIOGRAPHIE WALKEBACH, John. Programmation VBA pour Excel pour les nuls. Paris : First Interactive, 2004. 484 p. VISUAL BASIC CODES SOURCES : http://www.vbfrance.com/ CALLAN ASSOCIATES INC. : http://www.callan.com/ CATHY ASTUCE : http://www.cathyastuce.com/vba.htm WIKIPEDIA, L’ENCYCLOPEDIE LIBRE : http://fr.wikipedia.org/wiki/Visual_Basic_for_Applications EXCELABO : http://www.excelabo.net/ Oliver NGABONZIZA & Alexandre MONNEY page 10
PERIODIC TABLE OF ASSET RETURNS ANNEXES ANNEXE 1 “The Callan Periodic Table of Investment Returns” ANNEXE 2 Guide d’utilisation rapide Oliver NGABONZIZA & Alexandre MONNEY page 11
Vous pouvez aussi lire