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

IHM Discussion :

Access et les champs calculé


Sujet :

IHM

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Access et les champs calculé
    Bonjour,

    Je voudrais créer une base de donnée Access dont la finalité est de disposer d’un formulaire qui me permettera d’afficher l’indemnité horaire (smic) selon un nombre d’heures travaillés par mois.

    Par exemple :

    Mai : 15*8,44€= 126,60 €
    Juin : 7*8,44€= 59,08 €
    Juillet : 25*8,44€= 211 €

    Jamais plus de 25h/mois et plus de 75h sur les 3 mois !

    Quelqu’un peut-il m’aider ?

    Chriseg

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Si tu veux juste faire des calculs, prend Excel.

    Si tu veux conserver les informations concernant le nombre d'heures travaillées puis faire des calculs sur ces données, donne quelques précisions sur ce que tu veux garder.

    Note que le max sur 3 mois ne sera pas trés simple à gérer en Access.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    En fait, je voudrais garder le nom, prénom de la personne, les heures qu'il a effectués.

    Bref, me faire une base de donnée d'où Access!!

    J'ai un autre cas, encore plus compliqué:

    Celui d'une indemnité avec un indice et une variation selon que le travail effectué dépasse les 14 1ères heures dans le mois!
    ex:20 h en mai avec l'indice 200 soit 14h*7,83€ et 8h*7,96€


    Et pareil, jamais plus de 25h/mois et plus de 75h sur les 3 mois !

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Donc tu vas probablement avoir quelquechose comme cela :

    Table Personne:
    ClefPersonne
    Nom
    Prenom
    Autres renseignements utiles

    Table TauxHoraire:
    ClefTaux
    DateDebut
    DateFin
    TauxHoraireMoins14h(Si tu n'as que 2 taux, sinon il va afolloir penser à une autre solution)
    TauxHorairePlus14h(Si tu n'as que 2 taux)

    Table HeuresTravaillees
    ClefHeuresTravaillees
    ClefPersonne
    DateHeuresTravaillees
    NbHeuresTravaillees

    Comme tu as pu le noter, j'imagine que ton taux horaire va varier dans le temps. Quand j'ai un cas comme cela et pas beaucoup de données (l'utilisation de fonction dans des requêtes ralenti l'execution) j'utilise la fonction suivante que je mets dans un module.

    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
     
    public function LireTauxHoraire(prmDate as date, prmPlus14h as boolean) as double
       dim result as variant
       dim nomChamp as string
     
       if prmPlus14h then
           nomChamp="[TauxHorairePlus14h]"
         else
           nomChamp="[TauxHoraireMoins14h]"
       end if
     
       result=DFirst(nomChamp,"TauxHoraire","#"  & format$(prmDate, "yyyy/mm/dd") & "# between [DateDebut] and [DateFin]")
     
       if isnull(result) then
           'Taux non défini pour la date passée en paramêtre
           result=0
       end if
     
       LireTauxHoraire=CDbl(Result)
    end
    OK, pour le calcul par mois c'est assez direct :

    dans une requête basée sur HeuresTravaillees, tu crée un champ ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbHeuresTravailleesMin:iif([NbHeuresTravaillées]<25, 25, [NbHeuresTravaillées])
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbNbHeuresTravailléesMoins14h:iif([NbHeuresTravailleesMin]<=14,[NbHeuresTravaillées],14)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbNbHeuresTravailléesPlus14h:iif([NbHeuresTravailleesMin]>14,[NbHeuresTravailleesMin]-14,0)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PayementMensuelMoins14h:[NbHeuresTravailléesMoins14h]*LireTauxHoraire([DateHeuresTravaillees],false)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PayementMensuelPlus14h:[NbHeuresTravailléesPlus14h]*LireTauxHoraire([DateHeuresTravaillees],true)
    Pour le calcul sur 3mois je ferais aussi une fonction, mais je vais supposer que tu n'as qu'un seul enregistrement par mois, sinon tu pourra tout de même utiliser la fonction mais en faisant une requête de cumul par mois avant.

    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
     
    public function CalculerNbHeureMax3Mois(prmDate as date)
      const NB_HEURES_MAX_3MOIS as long = 75
     
      dim nbHeures3Mois as long
      dim dateMin as date:dateMin=DateAdd("m",-3,prmDate)
      dim dateMax as date:dateMax=prmDate
      nbHeures3Mois=DSum("[HeuresTravaillees]","HeureTravaillees","[DateHeureTravaillees] between #" & format$(dateMin,"yyyy/mm/dd") & "# and #" & format$(dateMax,"yyyy/mm/dd") & "#")
     
      if nbHeure3Mois > NB_HEURES_MAX_3MOIS then
        nbHeures3Mois=NB_HEURES_MAX_3MOIS
      end if
     
      CalculerNbHeureMax3Mois=nbHeures3Mois
    end function
    Pour le moment je ne vois pas vraiment comment combiner cela avec les calculs mensuels. Au final j'aurais tendance à faire une fonction qui détermine le montant à payer par mois (incluant le contrôle des 75h) plutôt que de passer par des champs calculés dans des requêtes.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse!

    Un message apparait: vous avez peut-être rentrer un opérande sans opérateur??

    je suis nouveau sur Access, et ma maitrise est imparfaite!

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Où le message ?

    Si c'est dans la requête, remplace les , par ; entre les param de la fonction.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Office 2010 : vidéo sur les champs calculés Access 2010
    Par Maxence HUBICHE dans le forum Access
    Réponses: 18
    Dernier message: 11/01/2010, 03h27
  2. [VB6/ACCESS] Lister les champs d'une table
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 07/06/2006, 19h01
  3. ACCESS 2002 - formulaire - champs calculés
    Par louroulou dans le forum Access
    Réponses: 6
    Dernier message: 01/06/2006, 15h16
  4. [Access] table de champs calculés
    Par elkhy dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/05/2006, 13h05
  5. [Access] Récupérer les champs commençant par ...
    Par paflolo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/02/2006, 10h35

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