Vous êtes sur la page 1sur 20

TAMMERMANN Fabien VINCENT Sbastien

PROJET GESTION : LES AMORTISSEMENTS

MICROSOFT ACCESS 2000 VISUAL BASIC APPLICATION

MICROSOFT EXCEL 2000

TUTEUR : Mr TONDEUR

SOMMAIRE

Introduction

I.

Guide dutilisation
Cration dune immobilisation Gestion dune immobilisation Gestion globale des immobilisations Les paramtres

2
3 4 5 6

II.

Prsentation technique
Les tables Les formulaires Le code : VBA EXCEL

7
8 10 11 12

III.

Les problmes rencontrs


Les liaisons ACCESS EXCEL La macro Lenregistrement des donnes

13
14 15 16

Conclusion

17

INTRODUCTION

Dans le cadre dun projet en gestion, nous avons choisis de raliser un logiciel ayant pour thme le calcul damortissement. Ce logiciel est conu laide des logiciel ACCESS et EXCEL 2000. ACCESS a t utilis pour stocker les informations des diffrentes immobilisations ainsi que pour raliser une interface intuitive pour lutilisateur. EXCEL nous a permit dlaborer plus facilement les feuilles de calculs des amortissements. Nos objectifs taient de permettre un utilisateur denregistrer des immobilisations afin de voir leurs tableaux damortissements aussi bien en linaire quen dgressif.. Lapplication devait permette de changer certains paramtres tel que lindice de lamortissement dgressif par exemple. De plus, lutilisateur pourrait modifier, visualiser ou supprimer une ou plusieurs immobilisations. Limpression devait tre possible. Un fichier daide serait li ce logiciel.

I.

Guide dutilisation

Lorsquon lance le logiciel, lutilisateur voit apparatre en premier plan la fentre du menu principal. Le menu principal se dcompose en plusieurs parties : Au centre, 4 boutons ayant les intituls suivant : Cration dune immobilisation, Gestion dune immobilisation, Gestion globale des immobilisations et paramtres. Notre guide dutilisation sera donc divis en plusieurs sous parties, ayant chacune la description dun bouton. Ce menu principal contient aussi le bouton Quitter pour sortir du logiciel et le bouton Aide qui pointe directement vers le guide dutilisation.

Figure 1.1 : Menu principal

Cration dune immobilisation


Lutilisateur en cliquant sur le bouton de cration dune immobilisation ouvre une fentre prsentant diffrents champs de saisie. En effet, une immobilisation se caractrise par son libell, son prix dachat, sa date dachat. Un numro automatique pour chaque immobilisation sera attribu, celui-ci ne figurera pas aux yeux de lutilisateur. Afin deffectuer des calculs damortissement plusieurs informations nous sont ncessaires comme la date de mise en service, le type damortissement, le nombre dannes pendant lequel lamortissement sera ralis ainsi quune zone de commentaire dans laquelle lutilisateur pourra donner des prcisions sur limmobilisation. En ce qui concerne le type damortissement, nous avons 2

possibilits : linaire ou dgressif. Le linaire est utilis pour des immobilisations qui ont t achetes en occasion. La somme amortir chaque anne et alors gale au prix dachat divis par le nombre danne. Les immobilisations neuves sont quant elles amorties de manire dgressives. Cela signifie, que dans les premires annes on amortit plus. Ceci est d quune immobilisation neuve perd plus rapidement de la valeur. Le bouton enregistrer permet de sauvegarder cette immobilisation.

Figure 1.2 : Cration dune immobilisation

Gestion dune immobilisation


La gestion dune immobilisation permet de modifier, supprimer ou de voir le calcul damortissement dune immobilisation choisie. Un menu droulant permet de connatre toutes les immobilisations qui ont t pralablement enregistres. Lutilisateur na plus qu slectionner celle qui lintresse pour voir automatiquement toutes ses caractristiques. A ce moment l il a le choix de la supprimer si par exemple limmobilisation a t amortit entirement, ou de modifier ses caractristiques comme par exemple son libell ou ajouter des commentaires.

Figure 1.3 : Gestion dune immobilisation Lappuie sur le bouton Voir le calcul damortissement, ouvre une feuille EXCEL contenant tous les calculs ainsi que toutes les caractristiques de limmobilisation. Nous avons en tte de page le libell de limmobilisation, Le type damortissement reprsent par un L pour linaire ou un D pour dgressif. En ce qui concerne lindice k, il nest utilis que dans le cas dune immobilisation amortit dgressivement. Nous en reparlerons dans la sous partie : Paramtre.

Figure 1.4 : Tableau damortissement dune immobilisation

Gestion globale des immobilisations


Cette fonction permet essentiellement de voir dans une mme fentre toutes les immobilisations qui ont t cres ainsi que leurs caractristiques. Ici aussi lutilisateur peut modifier chaque immobilisation comme il le souhaite. Sur chaque ligne reprsentant une immobilisation nous avons un bouton de suppression, de ce fait en cliquant dessus lutilisateur supprime limmobilisation correspondante. Mais ce qui est vraiment intressant est lutilisation du bouton Gnrer un classeur EXCEL. En effet, celui-ci cre 3 pages de donnes dans un fichier EXCEL. Nous avons les pages : immobilisations, linaire et dgressif. La premire page contient un tableau avec le dtail de toutes les immobilisations. Notons quici lutilisateur peut voir les numros automatiquement gnrs par le systme pour chaque immobilisation.

Figure 1.5 : Tableau des immobilisations Les 2 pages suivantes du classeur EXCEL montrent les amortissements des immobilisations choisis par lutilisateur. Lutilisateur na tout simplement qu rentrer le numro correspondant limmobilisation dont il souhaite avoir le calcul de lamortissement. Attention, il doit entrer ce numro dans la page (linaire ou dgressif) correspondant au type damortissement caractris par limmobilisation choisit. Exemple : Pour limmobilisation Vlo, nous voyons que le type damortissement est Linaire donc lutilisateur entrera son numro automatique qui est ici de 40 dans la page linaire du classeur EXCEL. Pour limmobilisation Armoire, le numro 41 dans la page dgressif.

Figure 1.6 : Tableau damortissement linaire

Figure 1.7 : Tableau damortissement dgressif

Paramtres
Cette fonction permet tout simplement de rgler les paramtres pour les amortissements de type dgressifs. En effet, pour le calcul de lamortissement en dgressif nous avons besoin de 3 coefficients, lesquels peuvent changer au cours des annes. Pour lannes 2003, les coefficients par dfaut sont : 1.25 pour un amortissement dgressif dune dure infrieure ou gal 3 ans. 1.75 pour un amortissement dgressif dune dure de 4 ou 5 ans. 2.25 pour un amortissement dgressif dune dure suprieure ou gale 6 ans. Le bouton ayant pour intitul : Valeur par dfaut, permet de rinitialiser les coefficients.

Figure 1.8 : Les paramtres

II.

Prsentation technique

Les tables
La table sur les immobilisations : La table Immo a pour fonction de stocker toutes les informations ncessaires des immobilisations. La table Immo possde pour ceci 8 champs diffrents : Le num_immo qui correspond au numro de limmobilisation et qui est gnr automatiquement. Ce numro est utilis en tant que cl primaire. Cest donc ce numro qui est utilis dans la plupart des fonctions du logiciel afin de connatre les caractristiques dune immobilisation. Le libelle_immo qui ne doit pas dpasser 50 caractres. Cette colonne ne peut contenir de doublon. Le prix_achat qui est en euros. La date_achat et la date_mise_en_service qui sont toutes les deux au format Date, ce qui oblige lutilisateur entrer une date valide sinon un message derreur apparat. Un type_am correspondant au type damortissement sois linaire ou dgressif. Le nb_annees. Un commentaire.

Figure 2.1 : La table Immo en mode cration

Figure 2.2 : La table Immo en mode feuille de donnes La table pour les paramtres : La table param est utilise pour stocker les informations relatives aux diffrents coefficients ncessaires pour le calcul damortissement en dgressif. La table param est constitue de 4 champs et de 2 lignes : le type_param. Il y a de type diffrents et cest ceci qui caractrise que cette table possde 2 lignes. Cest 2 types sont : param_courant et param_origine qui correspondent respectivement au coefficients entrs pas lutilisateur et les coefficients par dfaut. Le champ coeff1 utilis pour un amortissement dgressif dune dure infrieure ou gal 3 ans. Le champ coeff2 utilis pour un amortissement dgressif dune dure de 4 ou 5 ans. Le champ coeff3 utilis pour un amortissement dgressif dune dure suprieure ou gale 6 ans. La table param nest utilise que pour stocker des informations, de ce fait il ny a pas besoin dintroduire une cl primaire.

Les formulaires
-Le formulaire de cration dune immobilisation : Ce formulaire appel CrationImmo permet comme son nom lindique dentrer toutes les caractristiques pour la cration dune immobilisation. Il est constitu de zones de textes indpendantes de la table des immobilisations mais un format de saisie est associ chaque zone pour viter que lutilisateur entre une donne dun type incorrect ( exemple des caractres dans le champ prix) .

Lorsque lon appuie sur le bouton enregistrer des tests sont effectus pour vrifier si tous les champs sont renseigns. Un message indiquant le nom du champ omit apparat lcran et aucun enregistrement nest effectu.

Figure 2.3 : Exemples de message indiquant quun champ nest pas renseign -Le formulaire de gestion dune immobilisation (voirUneImmo) La particularit de ce formulaire est quil contient une en-tte contenant une zone de liste permettant de slectionner limmobilisation que lon veut manipuler. Cette zone est associe une requte qui rcupre tous les libells. Dans la partie dtail du formulaire les contrles sont lis une autre requte (req_liste_immo) qui va rcuprer les informations correspondantes au libell slectionn. Req_liste_immo : SELECT * FROM Immo WHERE ((([Immo].[libelle_immo])=[forms]![VoirUneImmo]![listeImmo])); -Le formulaire qui permet de grer toutes les immobilisations la fois. Ce formulaire appel voirLesImmos contient un sous-formulaire Immo sousformulaire qui affiche un tableau contenant toutes les immobilisations de la table immo .

La programmation VBA (Visual Basic for Application)


Dans chaque formulaire de notre projet, du code VBA est prsent. Il est en partie gnrer automatiquement par Access mais le plus souvent, pour pouvoir effectuer les oprations voulues, il est ncessaire de programmer. Nous allons voir dans cette partie des exemples dinstructions utilises pour les diffrents formulaires de notre application. Dans le formulaire de cration dune immobilisation, il fallait saisir des instructions permettant dune part de vrifier que les champs taient bien renseigns et dautre part denregistrer le contenu des zones de texte dans la table des immobilisations. Pour tester si un champ ntait pas vide le type dinstruction suivante t utilis : If Me.libelle_immo.Value <> "" Then Else MsgBox ("Veuillez entrer un nom pour l'immobilisation") Exit Sub

End If Remarque : Dans le code, on peut faire rfrence aux diffrents objets (boutons, zones de texte ou de liste ) du formulaire par lutilisation de linstruction Me suivit du nom de lobjet comme ci dessus : Me.libelle_immo. Lon peut par la suite accder aux proprits de cet objet comme sa valeur (Me.libelle_immo.Value) Pour enregistrer les diffrentes informations dans la base, il faut tablir un lien avec la table Immo et ensuite insrer les valeurs saisies dans la table. Dim db As Database Dim rst As Recordset If MsgBox("Enregistrer la nouvelle immobilisation ?", vbOKCancel) = vbOK Then ' stocker les donnes concernant l'immobilisation dans la table Set db = CurrentDb Set rst = db.OpenRecordset("SELECT * FROM Immo;", dbOpenDynaset) With rst .AddNew !libelle_immo = Me.libelle_immo !prix_achat = Me.prix_achat !date_achat = Me.date_achat !date_mise_en_service = Me.date_mise_en_service !type_am = Me.type_am !nb_annees = Me.nb_annees !commentaire = Me.commentaire .Update .Close End With MsgBox ("Enregistrement effectu") Remarque : Pour tablir un lien avec la base de donnes, il est ncessaire de dclarer un objet Database et un objet Recorset. Laffectation des diffrentes valeurs se fait par linstruction : ! libelle_immo = Me.libelle_immo . Le point dexclamation signifie quil sagit dun champ de la table Access. Le formulaire de gestion dune immobilisation est le plus complexe en matire de programmation. En effet, il doit permettre de slectionner dans une zone de liste limmobilisation que lon veut manipuler. Il a donc fallut grer la zone de liste et les oprations de suppression et de construction de la feuille Excel prsentant le calcul damortissement. La suppression : 'effacer les donnes de l'immobilisation slectionne Set db = CurrentDb Set rst = db.OpenRecordset("SELECT * FROM immo WHERE num_immo=" & _ Me.num_immo.Value & ";", dbOpenDynaset)

With rst .Delete Me.listeImmo.Requery Me.listeImmo.SetFocus End With rst.Close Me.listeImmo.Requery: cette instruction permet de remettre jour le contenu de la liste des immobilisations. La requte Select [libelle_immo] From immo Order by [libelle_immo]; associe la zone de liste est rexcute. Me.listeImmo.SetFocus: fait en sorte quaprs la suppression, la zone de liste rcupre le focus. Laffichage de la page Excel : Pour pouvoir afficher le calcul damortissement il nous fallait assigner, dans les cases de la feuille de calcul Excel pralablement conue, les valeurs caractrisant limmobilisation slectionne. Nous avons donc d raliser un lien entre Access et Excel. Ceci est possible en programmation VB par la cration dun objet Excel.Application (Voir ci-dessous) Extraits de code illustrant la liaison Access-Excel : -Dclaration dobjets Excel : Dim xlApp As Excel.Application Application Excel Dim wbk As Excel.Workbook Classeur Dim sht As Excel.Worksheet Feuille dun classeur -Crer un objet Excel : Set xlApp = CreateObject("Excel.Application") -Rendre Excel visible : xlApp.visible = true -Instancier la feuille souhaite dans un classeur : Set sht = wbk.Worksheets("Feuil1") -Ecrire les valeurs caractrisant l'immobilisation dans les cellules voulues : With sht .Range("B2").Value = Me.libelle_immo.Value .Range("C5").Value = Me.num_immo.Value .Range("C6").Value = Me.prix_achat.Value . . End With Remarque : les coefficients enregistrs dans la table param sont galement assigns dans la feuille excel.

Dans le formulaire permettant de grer toutes les immobilisations , la particularit est que la table des immobilisations immo est copie intgralement dans un classeur Excel. Nous avons donc d trouver les instructions permettant cette opration (Voir ci-dessous). -Instructions permettant dexporter la table immo dans la premire page du classeur Amortissement.xls prsent dans le rpertoire de la base Access : Dim chemin As String Dim projet As CurrentProject Set projet = CurrentProject chemin = projet.Path DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "immo", chemin + "\Amortissements.xls", True Remarque : Pour ltablissement du lien Access-Excel, permettant lcriture dans les cellules souhaites dun classeur Excel, le principe est le mme que pour le formulaire dont la programmation a t dcrite prcdemment.

Les feuilles de calculs Excel


Les fichiers Am.xls et Amortissement.xls contiennent les feuilles servant effectuer les calculs damortissements. Am.xls contient une seule feuille permettant dafficher les rsultats soit dun amortissement dgressif, soit dun amortissement linaire. Ce fichier sert de base pour la visualisation dun amortissement depuis le formulaire de gestion dune immobilisation de la base Access Amortissements.xls contient pour sa part 3 feuilles : la premire contient les donnes relatives aux immobilisations , la deuxime effectue un calcul damortissement linaire et la troisime un calcul damortissement dgressif. Lamortissement linaire ou constant: Le point de calcul de lamortissement linaire est la date de mise en service de limmobilisation. Il ne faut pas confondre la date de mise en service et la date dacquisition qui peut lui tre antrieure. -Lorsque le point de dpart correspond au dbut de lexercice, chaque annuit est donne par la formule : soit VO = valeur dorigine, tc = taux constant, A = annuit A=VO*tc -Lorsque la mise en service intervient en cours dexercice, la premire annuit est calcule prorata temporis . On calcule le nombre de jours entre la date de mise en service et la date de clture de lexercice. A=VO*tc*j/360

Dans ce cas, la premire anne nest pas complte, les annes intermdiaires le sont et la dernire annuit est calcule en fonction du nombre de jours restants amortir. Lamortissement dgressif : Il sappuie sur le taux constant de lamortissement linaire auquel on ajoute un coefficient qui est dtermin en fonction de la dure dutilisation du bien. Coefficients (depuis le 01/01/2001) : 3 et 4 ans : 1.25 4 et 6 ans : 1.75 + de 6 ans : 2.25 Lannuit damortissement est calcule en appliquant le taux dgressif la valeur dorigine la premire anne, la valeur nette comptable les autres annes Le point de dpart du calcul est le premier jour du mois de lacquisition de limmobilisation. 1re annuit = VO * taux dgressif * M/12 Particularit de lamortissement dgressif : La valeur rsiduelle devant tre gale zro la fin, on pratique un amortissement constant partir de lanne o le taux constant (ou linaire) calcul sur le nombre dannes restant devient suprieur au taux dgressif.

Prsentation des principales formules utilises :


Ref immo valeur immo date achat date mise en service dure am indice k 2 =RECHERCHEV(C6;immo;3;FAUX) =RECHERCHEV(C6;immo;4;FAUX) =RECHERCHEV(C6;immo;5;FAUX) =RECHERCHEV(C6;immo;6;FAUX) =SI(OU(C10=3;C10=4);F8;SI(OU(C10=5; C10=6);F9;F10)) RECHERCHEV (recherches verticales) : Permet daller chercher partir de Ref immo les donnes sur limmobilisation contenues dans immo .

SI, OU : Formules conditionnelles

annes lin tx lin tx deg anne suivant fin de l'am Anne de passage en L

=ENT(C10/C11) =1/C10 =C11/C10 =ANNEE(C8)+C10 =ANNEE(C8)+(C10-J7)

ENT : Garde la partie entire du rsultat

Am Annuel normal Anne N+1 fin d'anne jours restants

=C5*C9 =ANNEE(C7)+C8 =DATE(ANNEE(C7);12;30) =(JOURS360(C7;H7)+1)

ANNEE : Retourne lanne dune date complte.

JOURS360 : Calcule le nombre de jours sparant deux dates avec une base de 30 jours par mois.

DATE : Permet de crer une date selon le format voulu.

Remarque : Les 2 derniers tableaux ci-dessus permettent de calculer les valeurs ncessaires aux calculs damortissement et sont cachs dans les feuilles Excel pour ne pas surcharger laffichage.

III.

Les problmes rencontrs

Nous avons rencontr plusieurs problmes durant la ralisation de ce projet notamment sur la partie Access lors de la cration des formulaires et de la programmation en VBA lintrieur de ces derniers. -Lenregistrement des donnes Le premier problme rencontr fut au niveau du formulaire de cration dune immobilisation. En effet, nous pensions utiliser lassistant Access pour grer lajout dun enregistrement dans la table des immobilisations et lier directement les zones de texte aux champs de la base de donnes. Mais il sest avr que cela ne permettait pas dobtenir une manipulation aise. Par exemple, lorsque nous commencions saisir des informations, une nouvelle ligne tait cre automatiquement dans la table immo et le bouton enregistrer permettait juste de passer une autre saisie. Nous avons donc prfr ne pas lier les zones de textes la table immo et programmer en VBA les instructions permettant lajout dans la table. -La liaison Access-Excel

Nous avons choisi de raliser les calculs damortissement dans des fichiers Excel mais il a t difficile de concevoir le programme permettant deffectuer la liaison entre les formulaires de la base Access et les feuilles de calcul Excel. En effet, nous voulions que lapplication fonctionne lorsque les diffrents fichiers ( .mdb, .xls ) sont mis dans le mme rpertoire, quelque soit celui-ci. Or il fallait pour cela obtenir le chemin complet permettant daccder la base de donnes afin de construire les chemins complets des fichiers Excel afin de les manipuler . Nous avions pens utiliser des macros pour raliser ces manipulations. Mais il nous fallut tout raliser dans le code VBA car lassistant de cration de macro ne permet pas de saisir un chemin relatif. Le code obtenu est prsenter dans la partie concernant la programmation VBA et dcrivant la technique utilise dans les formulaires de gestion des immobilisations .

CONCLUSION

Les 5 sances encadres luniversit et les travaux raliss en dehors de celles-ci nous ont permit daboutir un logiciel rpondant aux objectifs que nous nous avions fixs. En effet, la cration, modification, visualisation, suppression dimmobilisations ainsi que laffichage des calculs damortissements est maintenant possible. De plus, nous avons mis en place des fonctions afin dviter denregistrer des donnes incohrentes entres malencontreusement par lutilisateur. Il a t mis aussi des messages de confirmation avant toutes oprations denregistrement ou de suppression. Ce projet nous a permit dapprofondir nos connaissances dans les procds de calculs damortissements ainsi que de nous familiariser plus avec les logiciels ACCESS et EXCEL. Par ailleurs, nous avons d programmer en VBA ce qui nous a permis de diversifier nos comptences en langage de programmation. Le travail dquipe a facilit la gense dides et ltude des possibilits dimplmentation.