IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Calcul de difference entre plusieurs enregistrements d'un meme champs access


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Calcul de difference entre plusieurs enregistrements d'un meme champs access
    Bonjour tout le monde,

    J'ai vraiment besoin d'un moyen pour que les augmentations de salaire puisse se calculer automatiquement (comme dans l'image ci-dessous) parce que la base de données que je suis entrain de construire doit servir à controler l'augmentation de salaire de plusieurs centaines d'employés. Ce serait, vous vous en doutez, vraiment difficile que je fasse ces calculs manuellement.
    Est-ce que quelqu'un aurait l'amabilité de m'aider SVP?
    Je connais un peu les bases en access mais je ne connais vraiment pas grand chose en VBA. Cependant un bout de code ne fera pas de mal.

    Merci d'avance.

    P.S. Désolé si un tel sujet aurait déjà été abordé. J'ai cherché un peu mais je n'ai pas eu le temps d'aller en profondeur.
    Images attachées Images attachées  

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Peux-tu expliquer le calcul que tu souhaites faire.

    Si tu es presse et a peu de connaissances de Access, peut-etre qu'une solution en Excel serait plus adaptee a ton probleme.

    A+

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Marot_r pour ta réaction.
    En fait, pour le screenshot que j'ai envoyé, j'ai pris l'exemple avec excel. Mais l'idée c'est de le faire sous access. Il s'agit d'une requête paramétrée sur le champs NIF (numéro d'immatriculation fiscale).
    Je voudrais trouver un moyen pour calculer automatiquement l'augmentation de salaire pour chaque employé. Augmentation étant égale à chaque fois au salaire du mois en cours moins celui du mois précédent.
    N.B. J'ai trié le champs date par ordre croissant.

  4. #4
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Je pense que la question de marot_r reste valable jusqu'au présent à partir du moment où toi seul connais la formule mathématique que tu utilises pour calculer cette augmentation. Pouvons-nous donc avoir cette formule ? As-tu déjà une base de données Access créée pour ce problème précis?

    Cordialement

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Il est assez difficile de faire cela en Access car Access ne connait pas "l'enregistrement precedent" meme quand il te l'affiche a l'ecran.
    (C'est un truc mathematique, une table est un ensemble et les ensembles n,ont pas d'ordre, ce sont justes elements mis ensemble dans un grand sac.)

    Donc tu as besoin de trouver le salaire qui est dans l'ordre des dates juste avant cleui que tu regardes.
    Il faut donc prendre le salaire dont la date est maximales mais inferieure a la date du salaire de reference.
    Ca donne une formule qui ressemble a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SalairePrecedent : DFirst("Salaire"; "tblSalaire"; "[DateSalaire]=#" & Format(DMax("DateSalaire"; "tblSalaire"; "[DateSalaire]<#" &  format([tblSalaire].[DateSalaire]; "aaaa-mm-jj") & "# and [ClefPersonne]=" & [tblSalaire].[ClefPersonne]); "aaaa-mm-jj") & "# and [ClefPersone]=" & [tblSalaire].[ClefPersonne])
    ou

    • Salaire est le salaire vers a une date donnee.
    • tblSalaire est la table des salaires
    • DateSalaire est la date ou le salaire a ete verse.
      Ssuppose de type DateHeure.
    • ClefPersonne est l'identifiant de la personne.
      Suppose de type numerique.
    • DMax("DateSalaire"; "tblSalaire"; "[DateSalaire]<#" & format([tblSalaire].[DateSalaire]; "aaaa-mm-jj") & "# and [ClefPersonne]=" & [tblSalaire].[ClefPersonne]) est la date du salaire juste avant celui courant pour cette personne.


    Attention ce calcul est TRES ineficasse et cela pourrait te prendre du temps.

    Une solution Excel pourrait etre beaucoup plus simple et efficace.

    A+

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci à toi Bertiny.
    En effet, jvoudrais que la valeur du champs augmentation se calcule de la manière suivante: Salaire du mois en cours - salaire du mois précédent.
    Par exemple: pour le mois de mars 2016, l'augmentation doit etre égale au salaire du mois de mars moins celui du mois de février 2016 (27,500 - 25,000 = 2,500)
    Pour le mois d'aout: salaire oaut - salaire juillet (29,000 - 27,500 = 1,500)
    Pour decembre: salaire decembre - salaire novembre (29,000 - 29,000 = 0)
    Ainsi de suite pour les autres...
    Voir le screenshot

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Haïti

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup Marot_r.

    Je crois que le mieux à faire c'est sans doute de me mettre rapidement au VBA. Comme je disais depuis le début, je n'y connais pas grand chose la dessus pour le moment, sinon que copier quelque bout de code tout fait que je place dans mes formulaires pour avoir des mots tout en majuscule ou seulement les premières lettres. Cela dit, je vais esseyer de trouver une solution sous excel comme tu me l'as suggéré. Oui beaucoup moins fun mais bon...plus facile pour le moment. Du moins en attendant que je progresse avec le VBA, que jcommence à trouver franchement incontournable. Si tu pouvais m'envoyé quelque liens de cours complet la dessus, ce serait cool.

    Mais sinon, ce code que tu m'as proposé, qui me parait un peu du chinois pour le moment (pour rire...), ou est-ce que je dois le placer exactement? Je vais quand meme esseyer de le comprendre et tenter de faire ce que je peux avec...

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour.

    Le faire en VBA est plus complique.
    Il faut que tu tries tes donnees, puis que tu les parcoures ligne par ligne en notant au passage l'information qui t'intresse et que tu fasses le calcul.

    Mais sinon, ce code que tu m'as proposé, qui me parait un peu du chinois pour le moment (pour rire...), ou est-ce que je dois le placer exactement? Je vais quand meme esseyer de le comprendre et tenter de faire ce que je peux avec...
    Tu as raison l'expression est complexe.
    Meme moi cela m'a pris du temps a l'ecrire et je savais ou je m'en allais.
    Ca prend un peu de temps pour y penser mais rappelled-toi tu veux le salaire (DFirst) de la personne dont la date est juste avant (c'est DMax qui te donne cette date) celui que tu regardes.

    1. Tu crees une requete qui prend ta table des salaires.
    2. Tu selectionnes les champs qui t'intressent (cela devrait etre selon moi au moins ClefPersonne, DateSalaire, Salaire).
    3. Tu te mets dans une colonne vide et tu colles la formule que je t'ai donnee.
    4. Tu sauvegardes et tu demandes l'affichage.


    Si tu veux la rendre un peu plus lisible tu peux la decouper en 2 champs calcules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateSalairePrecedent : DMax("DateSalaire"; "tblSalaire"; "[DateSalaire]<#" &  format([tblSalaire].[DateSalaire]; "aaaa-mm-jj") & "# and [ClefPersonne]=" & [tblSalaire].[ClefPersonne])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SalairePrecedent : DFirst("Salaire"; "tblSalaire"; "[DateSalaire]=#" & Format([DateSalairePrecedent]; "aaaa-mm-jj") & "# and [ClefPersone]=" & [tblSalaire].[ClefPersonne])
    Je m'etais trompe dans le format. J'ai corrige.

    A+

Discussions similaires

  1. [2008R2] Calcul de durée entre plusieurs enregistrements dans une même table
    Par mikmik60 dans le forum Développement
    Réponses: 2
    Dernier message: 20/10/2014, 13h28
  2. Plusieurs valeurs dans un meme champ (Access 2002)
    Par Matgic95 dans le forum Modélisation
    Réponses: 11
    Dernier message: 14/03/2008, 10h23
  3. Réponses: 7
    Dernier message: 13/12/2006, 12h57
  4. [VBA] Calculer la différence entre deux dates
    Par T'chab dans le forum Access
    Réponses: 13
    Dernier message: 11/05/2006, 15h12
  5. Etat : plusieurs enregistrements pour un meme champ
    Par b_steph_2 dans le forum Access
    Réponses: 21
    Dernier message: 02/02/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo