Amorstissements

26
TAMMERMANN Fabien VINCENT Sébastien PROJET GESTION : LES AMORTISSEMENTS

Transcript of Amorstissements

TAMMERMANN FabienVINCENT Sébastien

PROJET GESTION :

LES AMORTISSEMENTS

MICROSOFT ACCESS 2000 VISUAL BASIC APPLICATION

MICROSOFT EXCEL 2000 TUTEUR : Mr TONDEUR

SOMMAIRE

Introduction 1

I. Guide d’utilisation 2 Création d’une immobilisation 3 Gestion d’une immobilisation 4 Gestion globale des immobilisations 5 Les paramètres 6

II. Présentation technique 7

Les tables 8 Les formulaires 10 Le code : VBA 11 EXCEL 12

III. Les problèmes rencontrés 13

Les liaisons ACCESS – EXCEL 14 La macro 15 L’enregistrement des données 16

Conclusion 17

INTRODUCTION

Dans le cadre d’un projet en gestion, nous avons choisis de réaliser un logiciel ayant pour thème le calcul d’amortissement. Ce logiciel est conçu à l’aide des logiciel ACCESS et EXCEL 2000. ACCESS a été utilisé pour stocker les informations des différentes immobilisations ainsi que pour réaliser une interface intuitive pour l’utilisateur. EXCEL nous a permit d’élaborer plus facilement les feuilles de calculs des amortissements.

Nos objectifs étaient de permettre à un utilisateur d’enregistrer des immobilisations afin de voir leurs tableaux d’amortissements aussi bien en linéaire qu’en dégressif.. L’application devait permette de changer certains paramètres tel que l’indice de l’amortissement dégressif par exemple. De plus, l’utilisateur pourrait modifier, visualiser ou supprimer une ou plusieurs immobilisations. L’impression devait être possible. Un fichier d’aide serait lié à ce logiciel.

I. Guide d’utilisation

Lorsqu’on lance le logiciel, l’utilisateur voit apparaître en premier plan la fenêtre du menu principal. Le menu principal se décompose en plusieurs parties :

- Au centre, 4 boutons ayant les intitulés suivant : Création d’une immobilisation, Gestion d’une immobilisation, Gestion globale des immobilisations et paramètres. Notre guide d’utilisation sera donc divisé en plusieurs sous parties, ayant chacune la description d’un bouton.

- Ce menu principal contient aussi le bouton Quitter pour sortir du logiciel et le bouton Aide qui pointe directement vers le guide d’utilisation.

Figure 1.1 : Menu principal

Création d’une immobilisation

L’utilisateur en cliquant sur le bouton de création d’une immobilisation ouvre une fenêtre présentant différents champs de saisie. En effet, une immobilisation se caractérise par son libellé, son prix d’achat, sa date d’achat. Un numéro automatique pour chaque immobilisation sera attribué, celui-ci ne figurera pas aux yeux de l’utilisateur. Afin d’effectuer des calculs d’amortissement plusieurs informations nous sont nécessaires comme la date de mise en service, le type d’amortissement, le nombre d’années pendant lequel l’amortissement sera réalisé ainsi qu’une zone de commentaire dans laquelle l’utilisateur pourra donner des précisions sur l’immobilisation. En ce qui concerne le type d’amortissement, nous avons 2

possibilités : linéaire ou dégressif. Le linéaire est utilisé pour des immobilisations qui ont été achetées en occasion. La somme à amortir chaque année et alors égale au prix d’achat divisé par le nombre d’année. Les immobilisations neuves sont quant à elles amorties de manière dégressives. Cela signifie, que dans les premières années on amortit plus. Ceci est dû qu’une immobilisation neuve perd plus rapidement de la valeur. Le bouton enregistrer permet de sauvegarder cette immobilisation.

Figure 1.2 : Création d’une immobilisation

Gestion d’une immobilisation

La gestion d’une immobilisation permet de modifier, supprimer ou de voir le calcul d’amortissement d’une immobilisation choisie. Un menu déroulant permet de connaître toutes les immobilisations qui ont été préalablement enregistrées. L’utilisateur n’a plus qu’à sélectionner celle qui l’intéresse pour voir automatiquement toutes ses caractéristiques. A ce moment là il a le choix de la supprimer si par exemple l’immobilisation a été amortit entièrement, ou de modifier ses caractéristiques comme par exemple son libellé ou ajouter des commentaires.

Figure 1.3 : Gestion d’une immobilisation

L’appuie sur le bouton Voir le calcul d’amortissement, ouvre une feuille EXCEL contenant tous les calculs ainsi que toutes les caractéristiques de l’immobilisation. Nous avons en tête de page le libellé de l’immobilisation, Le type d’amortissement représenté par un L pour linéaire ou un D pour dégressif. En ce qui concerne l’indice ‘k’, il n’est utilisé que dans le cas d’une immobilisation amortit dégressivement. Nous en reparlerons dans la sous partie : Paramètre.

Figure 1.4 : Tableau d’amortissement d’une immobilisation

Gestion globale des immobilisations

Cette fonction permet essentiellement de voir dans une même fenêtre toutes les immobilisations qui ont été crées ainsi que leurs caractéristiques. Ici aussi l’utilisateur peut modifier chaque immobilisation comme il le souhaite. Sur chaque ligne représentant une immobilisation nous avons un bouton de suppression, de ce fait en cliquant dessus l’utilisateur supprime l’immobilisation correspondante. Mais ce qui est vraiment intéressant est l’utilisation du bouton Générer un classeur EXCEL. En effet, celui-ci crée 3 pages de données dans un fichier EXCEL. Nous avons les pages : immobilisations, linéaire et dégressif. La première page contient un tableau avec le détail de toutes les immobilisations. Notons qu’ici l’utilisateur peut voir les numéros automatiquement générés par le système pour chaque immobilisation.

Figure 1.5 : Tableau des immobilisations

Les 2 pages suivantes du classeur EXCEL montrent les amortissements des immobilisations choisis par l’utilisateur. L’utilisateur n’a tout simplement qu’à rentrer le numéro correspondant à l’immobilisation dont il souhaite avoir le calcul de l’amortissement. Attention, il doit entrer ce numéro dans la page (linéaire ou dégressif) correspondant au type d’amortissement caractérisé par l’immobilisation choisit. Exemple : Pour l’immobilisation Vélo, nous voyons que le type d’amortissement est Linéaire donc l’utilisateur entrera son numéro automatique qui est ici de 40 dans la page linéaire du classeur EXCEL. Pour l’immobilisation Armoire, le numéro 41 dans la page dégressif.

Figure 1.6 : Tableau d’amortissement linéaire

Figure 1.7 : Tableau d’amortissement dégressif

Paramètres

Cette fonction permet tout simplement de régler les paramètres pour les amortissements de type dégressifs. En effet, pour le calcul de l’amortissement en dégressif nous avons besoin de 3 coefficients, lesquels peuvent changer au cours des années. Pour l’années 2003, les coefficients par défaut sont :

1.25 pour un amortissement dégressif d’une durée inférieure ou égal à 3 ans.1.75 pour un amortissement dégressif d’une durée de 4 ou 5 ans.2.25 pour un amortissement dégressif d’une durée supérieure ou égale à 6 ans.

Le bouton ayant pour intitulé : Valeur par défaut, permet de réinitialiser les coefficients.

Figure 1.8 : Les paramètres

II. Présentation technique

Les tables

La table sur les immobilisations :

La table Immo a pour fonction de stocker toutes les informations nécessaires des immobilisations. La table Immo possède pour ceci 8 champs différents :

- Le num_immo qui correspond au numéro de l’immobilisation et qui est généré automatiquement. Ce numéro est utilisé en tant que clé primaire. C’est donc ce numéro qui est utilisé dans la plupart des fonctions du logiciel afin de connaître les caractéristiques d’une immobilisation.

- Le libelle_immo qui ne doit pas dépasser 50 caractères. 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 l’utilisateur à entrer une date valide sinon un message d’erreur apparaît.

- Un type_am correspondant au type d’amortissement sois linéaire ou dégressif.

- Le nb_annees.- Un commentaire.

Figure 2.1 : La table Immo en mode création

Figure 2.2 : La table Immo en mode feuille de données

La table pour les paramètres :

La table param est utilisée pour stocker les informations relatives aux différents coefficients nécessaires pour le calcul d’amortissement en dégressif. La table param est constituée de 4 champs et de 2 lignes :

- le type_param. Il y a de type différents et c’est ceci qui caractérise que cette table possède 2 lignes. C’est 2 types sont : param_courant et param_origine qui correspondent respectivement au coefficients entrés pas l’utilisateur et les coefficients par défaut.

- Le champ coeff1 utilisé pour un amortissement dégressif d’une durée inférieure ou égal à 3 ans.

- Le champ coeff2 utilisé pour un amortissement dégressif d’une durée de 4 ou 5 ans.

- Le champ coeff3 utilisé pour un amortissement dégressif d’une durée supérieure ou égale à 6 ans.

La table param n’est utilisée que pour stocker des informations, de ce fait il n’y a pas besoin d’introduire une clé primaire.

Les formulaires

-Le formulaire de création d’une immobilisation :

Ce formulaire appelé CréationImmo permet comme son nom l’indique d’entrer toutes les caractéristiques pour la création d’une immobilisation. Il est constitué de zones de textes indépendantes de la table des immobilisations mais un format de saisie est associé à chaque zone pour éviter que l’utilisateur entre une donnée d’un type incorrect ( exemple des caractères dans le champ prix) .

Lorsque l’on appuie sur le bouton « enregistrer » des tests sont effectués pour vérifier si tous les champs sont renseignés. Un message indiquant le nom du champ omit apparaît à l’écran et aucun enregistrement n’est effectué.

Figure 2.3 : Exemples de message indiquant qu’un champ n’est pas renseigné

-Le formulaire de gestion d’une immobilisation (voirUneImmo)

La particularité de ce formulaire est qu’il contient une en-tête contenant une zone de liste permettant de sélectionner l’immobilisation que l’on veut manipuler. Cette zone est associée à une requête qui récupère tous les libellés. Dans la partie détail du formulaire les contrôles sont liés à une autre requête (req_liste_immo) qui va récupérer les informations correspondantes au libellé sélectionné.

Req_liste_immo :SELECT *FROM ImmoWHERE ((([Immo].[libelle_immo])=[forms]![VoirUneImmo]![listeImmo]));

-Le formulaire qui permet de gérer toutes les immobilisations à la fois.

Ce formulaire appelé « voirLesImmos » contient un sous-formulaire « Immo sous- formulaire » 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 présent. Il est en partie générer automatiquement par Access mais le plus souvent, pour pouvoir effectuer les opérations voulues, il est nécessaire de programmer. Nous allons voir dans cette partie des exemples d’instructions utilisées pour les différents formulaires de notre application.

Dans le formulaire de création d’une immobilisation, il fallait saisir des instructions permettant d’une part de vérifier que les champs étaient bien renseignés et d’autre part d’enregistrer le contenu des zones de texte dans la table des immobilisations.

Pour tester si un champ n’était pas vide le type d’instruction suivante à été utilisé :

If Me.libelle_immo.Value <> "" ThenElseMsgBox ("Veuillez entrer un nom pour l'immobilisation")Exit Sub

End If

Remarque : Dans le code, on peut faire référence aux différents objets (boutons, zones de texte ou de liste …) du formulaire par l’utilisation de l’instruction « Me » suivit du nom de l’objet comme ci dessus : Me.libelle_immo. L’on peut par la suite accéder aux propriétés de cet objet comme sa valeur (Me.libelle_immo.Value)

Pour enregistrer les différentes informations dans la base, il faut établir un lien avec la table « Immo » et ensuite insérer les valeurs saisies dans la table.

Dim db As DatabaseDim rst As Recordset

If MsgBox("Enregistrer la nouvelle immobilisation ?", vbOKCancel) = vbOK Then ' stocker les données 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 données, il est nécessaire de déclarer un objet Database et un objet Recorset. L’affectation des différentes valeurs se fait par l’instruction : !libelle_immo = Me.libelle_immo . Le point d’exclamation signifie qu’il s’agit d’un champ de la table Access.

Le formulaire de gestion d’une immobilisation est le plus complexe en matière de programmation. En effet, il doit permettre de sélectionner dans une zone de liste l’immobilisation que l’on veut manipuler. Il a donc fallut gérer la zone de liste et les opérations de suppression et de construction de la feuille Excel présentant le calcul d’amortissement.

La suppression   : 'effacer les données de l'immobilisation sélectionnée 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 requête « Select [libelle_immo] From immo Order by [libelle_immo]; » associée à la zone de liste est réexécutée.

Me.listeImmo.SetFocus: fait en sorte qu’après la suppression, la zone de liste récupère le focus.

L’affichage de la page Excel   :

Pour pouvoir afficher le calcul d’amortissement il nous fallait assigner, dans les cases de la feuille de calcul Excel préalablement conçue, les valeurs caractérisant l’immobilisation sélectionnée. Nous avons donc dû réaliser un lien entre Access et Excel. Ceci est possible en programmation VB par la création d’un objet Excel.Application (Voir ci-dessous)

Extraits de code illustrant la liaison Access-Excel   :

-Déclaration d’objets Excel :Dim xlApp As Excel.Application Application ExcelDim wbk As Excel.Workbook ClasseurDim sht As Excel.Worksheet Feuille d’un classeur

-Créer un objet Excel :Set xlApp = CreateObject("Excel.Application")

-Rendre Excel visible :xlApp.visible = true-Instancier la feuille souhaitée dans un classeur : Set sht = wbk.Worksheets("Feuil1")

-Ecrire les valeurs caractérisant 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 enregistrés dans la table “param” sont également assignés dans la

feuille excel.

Dans le formulaire permettant de gérer toutes les immobilisations, la particularité est que la table des immobilisations« immo » est copiée intégralement dans un classeur Excel. Nous avons donc dû trouver les instructions permettant cette opération (Voir ci-dessous).

-Instructions permettant d’exporter la table « immo » dans la première page du classeur Amortissement.xls présent dans le répertoire de la base Access :

Dim chemin As StringDim projet As CurrentProject

Set projet = CurrentProjectchemin = projet.Path

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "immo", chemin + "\Amortissements.xls", True

Remarque : Pour l’établissement du lien Access-Excel, permettant l’écriture dans les cellules souhaitées d’un classeur Excel, le principe est le même que pour le formulaire dont la programmation a été décrite précédemment.

Les feuilles de calculs Excel

Les fichiers Am.xls et Amortissement.xls contiennent les feuilles servant à effectuer les calculs d’amortissements.

Am.xls contient une seule feuille permettant d’afficher les résultats soit d’un amortissement dégressif, soit d’un amortissement linéaire. Ce fichier sert de base pour la visualisation d’un amortissement depuis le formulaire de gestion d’une immobilisation de la base Access

Amortissements.xls contient pour sa part 3 feuilles : la première contient les données relatives aux immobilisations , la deuxième effectue un calcul d’amortissement linéaire et la troisième un calcul d’amortissement dégressif.

L’amortissement linéaire   ou constant: Le point de calcul de l’amortissement linéaire est la date de mise en service de

l’immobilisation. Il ne faut pas confondre la date de mise en service et la date d’acquisition qui peut lui être antérieure.

-Lorsque le point de départ correspond au début de l’exercice, chaque annuité est donnée par la formule : soit VO = valeur d’origine, tc = taux constant, A = annuité

A=VO*tc

-Lorsque la mise en service intervient en cours d’exercice, la première annuité est calculée « prorata temporis ». On calcule le nombre de jours entre la date de mise en service et la date de clôture de l’exercice.

A=VO*tc*j/360

Dans ce cas, la première année n’est pas complète, les années intermédiaires le sont et la dernière annuité est calculée en fonction du nombre de jours restants à amortir.

L’amortissement dégressif   : Il s’appuie sur le taux constant de l’amortissement linéaire auquel on ajoute un coefficient qui est déterminé en fonction de la durée d’utilisation du bien.

Coefficients (depuis le 01/01/2001) :3 et 4 ans : 1.254 et 6 ans : 1.75+ de 6 ans : 2.25

L’annuité d’amortissement est calculée en appliquant le taux dégressif à la valeur d’origine la première année, à la valeur nette comptable les autres années

Le point de départ du calcul est le premier jour du mois de l’acquisition de l’immobilisation.

1ère annuité = VO * taux dégressif * M/12

Particularité de l’amortissement dégressif : La valeur résiduelle devant être égale à zéro à la fin, on pratique un amortissement constant à partir de l’année où le taux constant (ou linéaire) calculé sur le nombre d’années restant devient supérieur au taux dégressif.

Présentation des principales formules utilisées   :

Ref immo 2valeur immo =RECHERCHEV(C6;immo;3;FAUX)date achat =RECHERCHEV(C6;immo;4;FAUX)date mise en service =RECHERCHEV(C6;immo;5;FAUX)durée am =RECHERCHEV(C6;immo;6;FAUX)indice k =SI(OU(C10=3;C10=4);F8;SI(OU(C10=5

;C10=6);F9;F10))

années lin =ENT(C10/C11)tx lin =1/C10tx deg =C11/C10année suivant fin de l'am =ANNEE(C8)+C10Année de passage en L =ANNEE(C8)+(C10-J7)

RECHERCHEV (recherches verticales) :Permet d’aller chercher à partir de Ref immo les données sur l’immobilisation contenues dans « immo ».

SI, OU   : Formules conditionnelles

ENT   : Garde la partie entière du résultat

Am Annuel normal =C5*C9Année N+1 =ANNEE(C7)+C8fin d'année =DATE(ANNEE(C7);12;30)jours restants =(JOURS360(C7;H7)+1)

Remarque : Les 2 derniers tableaux ci-dessus permettent de calculer les valeurs nécessaires aux calculs d’amortissement et sont cachés dans les feuilles Excel pour ne pas surcharger l’affichage.

III. Les problèmes rencontrés

Nous avons rencontré plusieurs problèmes durant la réalisation de ce projet notamment sur la partie Access lors de la création des formulaires et de la programmation en VBA à l’intérieur de ces derniers.

-L’enregistrement des données

Le premier problème rencontré fut au niveau du formulaire de création d’une immobilisation.

En effet, nous pensions utiliser l’assistant Access pour gérer l’ajout d’un enregistrement dans la table des immobilisations et lier directement les zones de texte aux champs de la base de données. Mais il s’est avéré que cela ne permettait pas d’obtenir une manipulation aisée. Par exemple, lorsque nous commencions à saisir des informations, une nouvelle ligne était créée automatiquement dans la table « immo » et le bouton enregistrer permettait juste de passer à une autre saisie. Nous avons donc préféré ne pas lier les zones de textes à la table « immo » et programmer en VBA les instructions permettant l’ajout dans la table.

-La liaison Access-Excel

Nous avons choisi de réaliser les calculs d’amortissement dans des fichiers Excel mais il a été difficile de concevoir le programme permettant d’effectuer la liaison entre les formulaires de la base Access et les feuilles de calcul Excel.

En effet, nous voulions que l’application fonctionne lorsque les différents fichiers ( .mdb, .xls ) sont mis dans le même répertoire, quelque soit celui-ci. Or il fallait pour cela

ANNEE   : Retourne l’année d’une date complète.

DATE   : Permet de créer une date selon le format voulu.JOURS360   :

Calcule le nombre de jours séparant deux dates avec une base de 30 jours par mois.

obtenir le chemin complet permettant d’accéder à la base de données afin de construire les chemins complets des fichiers Excel afin de les manipuler .

Nous avions pensé utiliser des macros pour réaliser ces manipulations. Mais il nous à fallut tout réaliser dans le code VBA car l’assistant de création de macro ne permet pas de saisir un chemin relatif.

Le code obtenu est présenter dans la partie concernant la programmation VBA et décrivant la technique utilisée dans les formulaires de gestion des immobilisations .

CONCLUSION

Les 5 séances encadrées à l’université et les travaux réalisés en dehors de celles-ci nous ont permit d’aboutir à un logiciel répondant aux objectifs que nous nous avions fixés. En effet, la création, modification, visualisation, suppression d’immobilisations ainsi que l’affichage des calculs d’amortissements est maintenant possible. De plus, nous avons mis en place des fonctions afin d’éviter d’enregistrer des données incohérentes entrées malencontreusement par l’utilisateur. Il a été mis aussi des messages de confirmation avant toutes opérations d’enregistrement ou de suppression.

Ce projet nous a permit d’approfondir nos connaissances dans les procédés de calculs d’amortissements 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 compétences en langage de programmation. Le travail d’équipe a facilité la genèse d’idées et l’étude des possibilités d’implémentation.