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 :

[formulaire]Mise à jour de champs à l'ouverture et à chaque modification de champs


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Oceliane
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut [formulaire]Mise à jour de champs à l'ouverture et à chaque modification de champs
    Bonjour! j'ai un petit souci au niveau d'un formulaire. voici le formulaire:



    les 2 sections de gauche sont des variables appartenant à une table, la section de droite est le total.

    Je souhaiterais que lorsque j'ouvre le formulaire, la somme des moyennes et CRD s'affiche dans la section de droite, et se mette à jour lorsque je modifie une cellule, n'importe laquelle, y compris d'autres dans le formulaire, car c'est plein de calculs.

    Voici mon VBA pour la MAJ à l'ouverture:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub form_load()
    Me.Mensualite1 = Me.mensualite1P1 + Me.mensualite1P2
    Me.Mensualite2 = Me.mensualite2P1 + Me.mensualite2P2
    Me.crd1 = Me.crd1P1 + Me.crd1P2
    Me.crd2 = Me.crd2P1 + Me.crd2P2
    End Sub

    et ce que je souhaite, à chaque modification:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub "any_key"_AfterApdate()
    Me.Mensualite1 = Me.mensualite1P1 + Me.mensualite1P2
    Me.Mensualite2 = Me.mensualite2P1 + Me.mensualite2P2
    Me.crd1 = Me.crd1P1 + Me.crd1P2
    Me.crd2 = Me.crd2P1 + Me.crd2P2
    End Sub
    Comment faire? je suppose que ça ne doit pas être compliqué, mais je n'ai pas réussi à trouver...

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Par défaut
    En source de tes champs de totaux tu mets tes formules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = [mensualite1P1] + [mensualite1P2]
    Normalement ça devrait suffire.

  3. #3
    Membre confirmé Avatar de Oceliane
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut
    Excellent!

    Par contre, en théorie, si je modifie le total, ça doit influencer la dernière section. par exemple, si je baisse la mensualité totale, la mensualité 1 reste fixe, mais la 2 diminue. j'ai écrit le code VBA, mais va-t'il encore fonctionner correctement?

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Par défaut
    Ne connaissant pas le code je peux difficilement te répondre

  5. #5
    Membre confirmé Avatar de Oceliane
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 66
    Par défaut
    je comptais m'en servir pour cette partie-là du formulaire:


    à gauche: PnDeb (début de palier)
    au centre: Paliern (fin de palier, variable dans la table)
    à droite: PnDur (Durée du palier)

    n est le numéro de palier.

    c'est on ne peut plus simple: la zone du milieu est entrée dans la table. les autres sont calculées. on peut décider de modifier la période de début, de fin, ou la durée totale, toute modification entrainant automatiquement un changement des autres champs.

    La subtilité est que l'on a une variable Durée qui est la durée totale. le palier 3 est donc figé (non modifiable par l'utilisateur)

    Palier1
    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
    21
    22
    23
    Private Sub Palier1_AfterUpdate()
          Me.P1Deb = 1
          Me.P1Dur = Me.palier1
     
          Me.palier3 = 0
          Me.P3Deb = 0
          Me.P3Dur = 0
     
     
       If Me.palier1 < dureeP1 Then
          Me.palier2 = dureeP1
          Me.P2Deb = Me.palier1 + 1
          Me.P2Dur = Me.palier2 - Me.palier1
     
       End If
     
       If Me.palier1 = dureeP1 Then
          Me.palier2 = 0
          Me.P2Deb = 0
          Me.P2Dur = 0
    End IF
     
    End Sub
    et les autres sont similaires: toute modification modifie les autres champs.


    actuellement, lorsque j'ouvre mon formulaire, j'ai:



    Mon seul problême est de pouvoir rafraichir ces données lorsque j'ouvre le formulaire ou que je change d'enregistrement.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    tu définis la mensualité totale comme la somme de deux mensualités
    si tu la diminues il convient de modifier
    soit l'une soit l'autre soit les deux autres

    tes mensualités sont fonction de
    capital
    taux
    durée

    baisser la mensualité totale veut dire
    soit baisser le capital une simple régle de trois suffit

    ou baisser le taux on peut est contraint de tout recalculer, d'autant que tu ne nous dis pas si tes deux crédits sont au même taux
    cela devient assez sioux sans règle de gestion supposons que je passe le taux de la consolidation de 4 à 4.02
    avec un crédit à 3.95 et un crédit à 4.15
    passez à 3.97 et 4.17 donnera des résultas faux
    il va falloir appliquer une baisse conventionnelle de .02 sur l'un des crédits et
    recalculer l'autre
    on peut aussi faire itérer une baisse identique pour ajuster l'ensemble
    ceci demande un peu de programmation

    ou allonger la durée, là aussi les montants ne sont pas proportionnels
    les difficultés sont les mêmes que pour le taux
    avec une contrainte supplémentaire celle de données entières
    si je t'annonce que pour ajuster ton calcul il faut allonger le premier et le second crédit de 0,413852 mois tu vas avoir des difficultés à mettre cela en gestion où les jours de valeurs suivent un mode scalaire et non continu

Discussions similaires

  1. [Formulaire] Mise à jour BD
    Par cciocc dans le forum IHM
    Réponses: 5
    Dernier message: 07/06/2006, 13h57
  2. formulaire mise à jour d'une zone de texte
    Par aarlock dans le forum Access
    Réponses: 2
    Dernier message: 30/05/2006, 17h07
  3. formulaire mise à jour champ texte a partir autre page
    Par laulaurent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/01/2006, 00h13
  4. Réponses: 3
    Dernier message: 02/01/2006, 11h53
  5. [formulaire] Mise à jour d'un sous formulaire
    Par virginie2 dans le forum IHM
    Réponses: 15
    Dernier message: 22/12/2005, 13h30

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