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 :

Débutant >> calcul sur champ courant lié a une table et actualiser dans le formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Points : 42
    Points
    42
    Par défaut Débutant >> calcul sur champ courant lié a une table et actualiser dans le formulaire
    Bonsoir,

    La situation :

    J'ai un formulaire relié a une table,
    dans cette table il y a quelque chose comme la date de naissance et l'age

    Lorsque l'utilisateur entre ca date de naissance dans le formulaire, l'age est automatiquement calculé pour cette personne, maj dans le champ age de la table et afficher aussitot dans le champs age du formulaire.

    Je veux faire cela en vba, je ne veux pas recalculé tout les ages des personnes dans la table, tel qu'on pourrait le faire avec une requete de modif mais juste l'age de la personne entrée en cour.

    J'ai lu ca pour le calcul de l'age

    divers chose sur les recordset,

    et ca pour le numero de la position courante

    Mais je n'arrive pas a faire le lien avec du code,
    pouriez vous m'aider ?

    Merci
    Alpha

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    tu utilises la fonction VBA dans un champ calculé.
    - Soit dans une requête
    SELECT champ1, Champ2, ..., CalculAge([DateDeNaissance], Date) as Age FROM TaTable
    - Soit dans un contrôle zone de texte
    =CalculAge([DateDeNaissance], Date)
    DateDeNaissance étant le champ de ta table contenat la date de naissance,
    et Date la fonction VBA qui renvoie la date courrante.

    Pour que la fonction CalculeAge soit reconnue il peut être necessaire d'ajout la clause Public dans le module de code :
    Public Function CalculAge(...)
    ...
    End Function

    Bon courage

  3. #3
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,
    Heu ,je crois que j'ai pas tout compris ce que tu as dit

    Premièrement, pourquoi as tu besoin d'avoir un champ âge dans ta table, alors que tu as déjà la date de naissance......Dans ton formulaire il suffira simplement de calculer l'âge de la personne en fonction de la valeur affichée dans ton champ Date Naissance
    Maintenant si tu veux vraiment conserver l'age dans ta table, il suffit d'effectuer le calcul sur ton formulaire et de récupérer cette valeur dans ton champ Age.
    Ton form étant basé sur ta table, l'enregistrement sera automatiquement mis à jour.
    Mais je le répète, pourquoi conserver l'age alors qu'il va changer tous les ans
    En espérant avoir compris correctemnt ton problème..
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Points : 42
    Points
    42
    Par défaut
    FreeAccess :

    Si, je pense que tu as compris,
    Néanmoins pr la raison du calcul de l'age, c parce que on me la demande, il y a des tranche d'age calculé aussi derrière, mais bon il la faut, si cela ne tenait qu'a moi ma table elle n'aurait aucun champ


    LedZeppII :

    Hum, je n'ai pas trés bien compris, mais cela a surement du m'aider puisque j'y suis a peu prés arrivé.


    J'ai écrit ca en code et ca a l'air de fonctionner, dite moi si j'ai fauter quelque par z'o caz'ou

    Private Sub Date_de_naissance_LostFocus()

    'initialisation des 2 variables
    Dim dateNaissance As Date 'recupère la date de naissance
    Dim Age As Integer 'age calculé sur la date de naissance

    'on recupère la date de naissance
    dateNaissance = Me.Date_de_naissance

    'on calcul l'age
    Age = Year(Date) - Year(dateNaissance) + _
    (Format(dateNaissance, "mmdd") > Format(Date, "mmdd"))

    'on met a jour le champ age du formulaire
    Me.Age = Age

    'on calcul les tranche d'age que l'on actualise dans le formulaire
    Select Case Age
    Case Is > 45
    Me.Tranche_d_age = "+ 45"
    Case 36 To 45
    Me.Tranche_d_age = "36 - 45"
    Case 26 To 35
    Me.Tranche_d_age = "26 - 35"
    Case 18 To 25
    Me.Tranche_d_age = "18 - 25"
    Case Is < 18
    Me.Tranche_d_age = ""
    End Select

    'On actualise les données du formulaire dans la table
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

    End Sub
    1 -
    Mais j'ai mis tout le code dans le formulaire, dailleur pourquoi faudrait il le mettre dans un module ?, je ne comprend pas ?

    2-
    Juste au passage, je dois faire quelque chose comme ca
    If (Date > #1/1/2007#) Then
    mais ca n'a pas l'air de fonctionner comment doit je l'ecrire ?


    Merci beaucoup pour vos réponse
    Alpha

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Citation Envoyé par Alpha31
    FreeAccess :
    j'ai mis tout le code dans le formulaire, dailleur pourquoi faudrait il le mettre dans un module ?, je ne comprend pas ?
    Une fonction dans un module de code est utilisable partout (formulaires, Requêtes).
    Le code que tu as écris n'est valable que pour ton formulaire.
    Voila la différence.

    Pour le 2e point je ne vois pas ce qui cloche.
    L'expression renvoie Vrai si la date courante est >1/1/2007 et
    Faux si la date courante est <=1/1/2007

    Cdlt

Discussions similaires

  1. Calcul sur champ table :/
    Par __sPiKe__ dans le forum Requêtes
    Réponses: 4
    Dernier message: 23/06/2011, 09h10
  2. Réponses: 11
    Dernier message: 12/08/2010, 15h24
  3. [AC-2003] Calcul sur champ
    Par louzz dans le forum IHM
    Réponses: 9
    Dernier message: 14/01/2010, 14h37
  4. Calcul sur champs
    Par jacqtiti dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/07/2007, 23h13
  5. Requête calcul sur champs
    Par tikawua dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/10/2005, 15h26

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