Bonjour a tous,
Voila je viens de decouvrir Access et je dois effectuer une base de donnée sur des employés et leur salaire.
Voila mes 2 tables principales:
Personnel:
Nom_pers (clé primaire) (le nom de l'employé)
Société
…
Salaire
Nom_pers (clé primaire en relation 1-1 avec Personnel)
Salaire brut mens
%aug_Individuel (augmentation de salaire ex: 0.05 (pour 5%))
Mois aug Indivi (mois durant lequela lieu l'augmentation)
%aug_Infla (augmentation de salaire due a l inflation identique a tous les employés)
Mois aug Infla (Le mois de l augmentation identique a tous les employés)
Salaire tot (Le salaire totale avec les augmentations que je cherche a calculer)
….
Etant donné que %aug_Infla et Mois aug Infla sont identiques a tous les employés je ne sais pas s’il y a moyen de les déclarer en temps que variable « global » car elles doivent pouvoir être mise a jour par l’utilisateur. (Si vous avez des suggestions a ce sujet, j’ai pensé a créer une table contenant uniquement ces 2 variables mais je n’ai pas réussi à la relier à la table Salaire)
Le réel problème que j'ai donc est de calculer le salaire brut annuel d'un employé. vu que les mois des 2 augmentation (inflation et individuel) sont différents ( >, <, ou = ), je ne vois pas comment le faire a part en incluant des Conditionnel (IF).
En gros la formule/requete que je veux faire ressemble a
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 =IF ( [Mois aug_Indivi] > [Mois aug Infla] ) THEN salaire tot =( [Salaire brut mens] * [Mois aug Infla] )+(( [Salaire brut mens] *(1+ [%aug_Infla] ))*( [Mois aug_Indivi] - [Mois aug Infla] ))+((( [Salaire brut mens] *(1+[%aug_Infla] ))*(1+ [%aug_Individuel] ))*(13- [Mois aug_Indivi] )) ELSEIF ( [Mois aug_Indivi] < [Mois aug Infla] )) THEN Salaire tot = ( [Salaire brut mens] * [Mois aug_Indivi] )+(( [Salaire brut mens] *(1+[%aug_Individuel] ))*( [Mois aug Infla] - [Mois aug_Indivi] ))+((( [Salaire brut mens] *(1+ +[%aug_Individuel] ))*(1+ [%aug Infla] ))*(13- [Mois augInfla] )) ELSIF (( [Mois aug_Indivi] = [Mois aug Infla] )) THEN Salaire tot = ( [Salaire brut mens] * [Mois aug_Indivi] )+(( [Salaire brut mens] *(1+[%aug_Individuel]+[%aug_Infla])*(13 - Mois aug_Indivi))
J’ai essayé avec des requêtes, mais ce fut sans résultat. Je viens aussi d’essayer en VB mais ne connaissant pas ce langage j’avoue que j’y vais a tâtons malgré les excellent tutoriels présent sur le site.
(Voila ce que j'ai essayé de faire en VB dans mon fomulaire salaire qui affiche toute la table Salaire)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Private Sub FormuleFinale_LostFocus() SQL = "SELECT [salaire tot] as tot FROM SALAIRE WHERE (((Nom_pers)='" & Me.Nom_pers & "'));" Set Rcd = CurrentDb.OpenRecordset(SQL) If (Me.Mois_aug_Indivi > Me.Mois_aug_Infla) Then Me.FormuleFinale = ([Salaire brut mens] * [Mois aug Infla]) + (([Salaire brut mens] * (1 + [%aug_Infla])) * ([Mois aug Indivi] - [Mois aug Infla])) + ((([Salaire brut mens] * (1 + [%aug_Infla])) * (1 + [%aug_Individuel])) * (13 - [Mois aug Indivi])) End If If (Me.Mois_aug_Indivi < Me.Mois_aug_Infla) Then Me.FormuleFinale = ([Salaire brut mens] * [Mois aug Indivi]) + (([Salaire brut mens] * (1 + [%aug_Individuel])) * ([Mois aug Infla] - [Mois aug Indivi])) + ((([Salaire brut mens] * (1 + [%aug_Individuel])) * (1 + [%aug_Infla])) * (13 - [Mois aug Infla])) End If If (Me.Mois_aug_Indivi = Me.Mois_aug_Infla) Then Me.FormuleFinale = ([Salaire brut mens] * [Mois aug Indivi]) + (([Salaire brut mens] * (1 + [%aug_Individuel] + [%aug_Infla])) * (13 - [Mois aug Indivi])) End If Rcd.Close End Sub
Bon je viens de réussir a effectuer la somme, je voudrais juste savoir s'il n'y a pas un moyen autre que LostFocus() pour que la somme se fasse automatiquement a chaque "repaint()" (JAVA quand tu nous tiens )
Je vous remercie.
Partager