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 2007PERIODIC 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 2PERIODIC 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 1PERIODIC 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 2PERIODIC 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 3PERIODIC 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 4PERIODIC 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 5PERIODIC 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 6PERIODIC 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 7PERIODIC 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 8PERIODIC 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 9PERIODIC 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 10PERIODIC 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 11Vous pouvez aussi lire