Documente Academic
Documente Profesional
Documente Cultură
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.
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.
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.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.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.
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.
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.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 .
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.
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.
annes lin tx lin tx deg anne suivant fin de l'am Anne de passage en L
JOURS360 : Calcule le nombre de jours sparant deux dates avec une base de 30 jours par mois.
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.
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.