Problmme base access - historiques des calculs

Bonjour tous le monde j ai un problème avec ma base de donner access j ai crée une DDB qui gér la paie pour les ouvrier alors voilà comment ça marche
J ai crée une table « ouvrier » qui contient les info les ouvriers ou il ya un champs nommé tarif heur ça veut dire le nombre d heur saisie * tarif heur exemple (8h*1.5euro=12euro)
J’ai rentré beaucoup d enregistrement et tout fonctionne correctement mais le problème que j ai dernièrement est le suivant j’ai augmenté le tarif heur pour qlq ouvrier j ai met 2euro au lieux de 1.5euro ce qui fais j ai modifier le tarif dans la table ouvrier alors si je veux édité les ancien bulletin de paie je trouve que le programme ne garde plue l ancien tarif heur il prend le nombre d’heur déjà enregistré avec l ancien tarif et il le multiplier par les nouveau tarifs donc j ai plue l historique
Est ce que vous pouvez m aidé a résoudre ce problème
Merci d avance

33% d’augmentation d’un coup, je suis preneur…

Normal que le calcul se fasse sur les nouvelles valeurs, puisque les anciennes ont disparu de la table.
Il faut travailler en deux temps :

  • dans la table, ne pas rentrer le tarif horaire, mais une référence à un tarif
  • dans une table annexe, faire figurer le tarif réel en fonction de sa référence et en fonction de la date
  • dans la requête de sortie, intégrer ce nouveau paramètre.

Et quand ça fonctionnera, s’il te reste un peu de temps, tu vas sur Google et tu regardes comment tu peux ajouter un plugin correcteur d’orthographe à ton navigateur.

Premièrement je te remercie beaucoup pour votre réponse
« je suis juste un débutant en Access je besoins peut être de plus de détails »
J ai pas bien compris comment faire dans la table annexe pour figurer le tarif réel en fonction de sa référence et en fonction de la date
Et pour les fautes d orthographes je te promis de résoudre ce problème :wink:

gcc, expert en macro et en programmation bureautique ! :super:

Ce n’est pas forcément le genre de développement idéal pour débuter en access.
En ce qui concerne la table, il faudrait en connaitre sa structure exacte.
Je n’ai pas compris ta phase
il ya un champs nommé tarif heur ça veut dire le nombre d heur saisie * tarif heur exemple (8h*1.5euro=12euro)
Je pense que tu as quelque part un champ unique par ouvrier dans lequel figure son tarif horaire.
Ce que je te propose, c’est de le remplacer par une référence (un code qui peut être un simple nombre). Au départ, il y a autant de références que de tarifs horaires.
Dans une table annexe, tu rentres cette référence, à laquelle tu associes le tarif horaire, et des dates de début et de fin de validité.
Pour les références standard, elles figurent une seule fois avec comme limite du 1/01/1900 au 31/12/2033
Pour les ouvriers augmentés, ils se voient attribuer une nouvelle référence qui figurera deux fois dans la table annexe

  • la première avec l’ancien tarif, et comme dates 01/01/1900 à la veille de l’augmentation
  • la seconde avec le nouveau tarif et comme date du jour de l’augmentation au 31/12/2033.

Ensuite, quand on veut établir le bulletin de paie, il suffit de rajouter une requête pour extraire le taux horaire en fonction de la référence et de la date

Facile à dire, mais moins facile à faire, je sais, surtout pour la dernière partie, et si on ne veut pas s’écrire ses propres fonctions en VBA

[color=blue]Je n’ai pas compris ta phase
il ya un champs nommé tarif heur ça veut dire le nombre d heur saisie * tarif heur exemple (8h*1.5euro=12euro)
Je pense que tu as quelque part un champ unique par ouvrier dans lequel figure son tarif horaire[/color]

oui exactement ça
ce que je veux que tu m explique par une procudur comment je peux associe une date au champ tarif heur voilà la structur de la table ouvriers

Numouvrier/ Numérique
Nom /Texte
tarif_heur / Monétaire
tarif_heur_sup/ Monétaire
num_cin /Texte
taux_amo / Numérique
date_entree / Date/Heure
photo / Objet OLE
avance/Monétaire
prime / Monétaire

apres j ai cree une requete (bultin de paie) pour faire des calculs

merci pour tout votre repns

Il serait intéressant d’avoir la requête pour voir ce qui est fait des différents champs.
Dans la table, il y a des données permanentes et des données variables

Numouvrier/ Numérique
Nom /Texte
tarif_heur / Monétaire
tarif_heur_sup/ Monétaire

num_cin /Texte
taux_amo / Numérique
date_entree / Date/Heure
photo / Objet OLE
avance/Monétaire
prime / Monétaire

Les champs en gras sont susceptibles de changer et donc de provoquer les mêmes désagréments que la variation du taux horaire.
Ils devraient donc tous être traités dans la table annexe

Table principale

Numouvrier/ Numérique
Nom /Texte
num_cin /Texte
date_entree / Date/Heure
photo / Objet OLE
Reference/ Numérique

Table annexe
Reference/ Numérique
DateDebut/ Date/heure
DateFin/ Date/heure

tarif_heur / Monétaire
tarif_heur_sup/ Monétaire
taux_amo / Numérique[/B]
avance/Monétaire
prime / Monétaire

ensuite une première requête pour sélectionner dans TableAnnexe les seules lignes qui correspondent à la date souhaitée

puis la requête principale qui se sert de cette requete en ne retenant que la ligne avec la bonne référence

oui merci pour la réponse
j ai presque compris le système mais je veux s’avoir si il ya un paramétrage spécial ou une relation entre le champ référence et les deux champs date dedut et date fin et pourquoi tu as met la police en gras j ai compris une deuxième chose c est numérique[b]

Le [/B] c’est une erreur de mise en page (c’est une des balises que clubic emploie pour traiter le texte en gras, et que j’ai mal recopiée)

Les lignes en gras sont les lignes sur lesquelles j’ai voulu attirer ton attention, soit parce que je les ai déplacées, soit parce qu’elles sont nouvelles.

Pour ce qui est des relations, il y a bien sûr relation entre les deux champs référence.
Pour celui de la table principale, pas de pb ; pour celui de la table annexe, comme une référence peut apparaitre plusieurs fois, on effectue d’abord une sélection en fonction de la date pour savoir quel enregistrement retenir. Il faut absolument que cet enregistrement soit unique.

La requête pour y arriver aura plus ou moins cette forme :

SELECT TableAnnexe.Reference, TableAnnexe.dateDebut, TableAnnexe.dateFin, TableAnnexe.tafif_heur, TableAnnexe.tafif_heur_sup, TableAnnexe.taux_amo, TableAnnexe.avance, TableAnnexe.prime
FROM RequeteReference INNER JOIN TableAnnexe ON RequeteReference.reference = TableAnnexe.Reference
WHERE (((TableAnnexe.dateDebut)<=[forms]![formBulletin]![DateBulletin]) AND ((TableAnnexe.dateFin)>=[forms]![formBulletin]![DateBulletin]));

Bien sûr les noms de table et de champs sont à adapter à ton cas particulier

NB: contrairement à ce qui est fait ici, il sera peut être judicieux de différencier ultérieurement le traitement des primes et avances.
Mais essaie d’abord de faire fonctionner cette version

désolé j arrive pas a faire fonctionné les deux tables (principal + annexe) je veux s avoir s’il ya une relation ou un paramétrage entre les camps référence et les deux champs date début et fin
si tu accepte que je vous envoie une copie de la base juste pour jeté un coup d œil si non je besoin de plus de détails et merci encor pour tout vos réponses

La seule relation qu’il y a c’est une relation entre les champs [I]reference[I] de la table principale et dela requête que tu trouves plus haut
Avant toute chose, as-tu réussi à répartir tes données en deux tables comme préconisé ?
Et ton formulaire d’impression de bulletin comporte-t-il bien des champs contenant le nom de la personne et la date de la période souhaitée ?

Désolé j’ai tout essayé j’arrive pas a faire fonctionner tout ça est ce que c est possible de me faire une toute petite base comme exemple comme ça je vais voir l’exemple de la formule
J oublier pas de te remercie pour tt les réponse

http://tvas.free.fr/outils/HistoCalculs.mdb

j’ai une copie de la base est ce que je peux t envoyé une just pour voir de quoi s’agit-il

Normalement, ce que je t’ai envoyé devrait suffire.
Tu peux envoyer ta base mais je ne garantis rien

ok tu peux me dir comment je peux t envoyé la base

Regarde ta MP