PERIODIC TABLE OF ASSET RETURNS VBA VISUAL BASIC POUR APPLICATIONS - FINANCE ET GESTION DES RISQUES

La page est créée Matthieu Delorme
 
CONTINUER À LIRE
PERIODIC TABLE OF ASSET RETURNS VBA VISUAL BASIC POUR APPLICATIONS - FINANCE ET GESTION DES RISQUES
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