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

VBA Access Discussion :

Problème de champ calulé dans sous-formulaire [AC-2007]


Sujet :

VBA Access

  1. #1
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut Problème de champ calulé dans sous-formulaire
    Bonsoir tout le monde,
    Je vous soumets un problème que je rencontre sur Acc2003/2007.

    J'ai crée un Formulaire principal (Form1) contenant 2 sous-formulaires SForm2 et SForm3 respectivment rattachées aux tables suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tbl1(tbl1_id, etc.)
    tbl2(tbl2_id, tbl1_id#, montant, etc.)
    tbl3(tbl3_id, tbl2_id#, règlement, etc.)
    Dans mon SForm2, j'ai par ligne d'enregistrements un montant de facture.
    Dans mon SForm3, je peux avoir une ou plusieurs lignes d'enregistrements de règlement du montant de chacune des factures.
    En clair, une ligne correspond au règlement global du montant d'une facture, plusieurs lignes aux règlements fractionnés du montant d'une facture.

    Je souhaite pouvoir ajouter dans mon SForm2 un champ "règlement" qui afficherait la somme des règlements effectués par ligne de facture.
    J'y ai donc ajouté une zone de texte indépendante.

    Première de mes tentatives : créer une requête req2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tbl2_id#, Sum(Règlement) AS total_règlement
    FROM Tbl3
    GROUP BY tbl2_id#;
    et dans le Form_current() de mon SForm2 d'utiliser une fonction de domaine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r = DLookup("[total_règlement]", "Req2", "tbl2_id# =" & Me.tbl2_id)
    Me.règlement.Value = r
    Me.règlement.Requery
    ce n'est pas concluant car cela m'affiche un montant de règlement pour chacune de mes lignes de factures, alors que certaines factures n'ont pas un début de règlement.


    deuxième de mes tentatives :

    Insérer dans le pied de mon SForm3, une zone de texte indépendante qui a pour source contrôle
    Insérer dans la zone de texte indépendante "règlement" de mon SForm2 la source contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Formulaires]![SForm3]![total_des_règlements]
    ce n'est pas concluant non plus car j'ai un #Nom? qui s'affiche dans le champ "règlement".

    Auriez-vous une solution à me proposer ?
    Merci d'avance.

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Le code pour faire référence à un contrôle d'un sous formulaire contenu dans un formulaire est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!NomFormulaire.NomSousFormulaire!NomContrôle
    Essayer de faire cela à l'aide du générateur d'expression en allant chercher les champs dans Formulaire chargé c'est beaucoup plus facile.

  3. #3
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut Problème de champ calulé dans sous-formulaire
    Bonsoir,
    Cela m'affiche maintenant un montant de règlement sur chacune des lignes de mon SForm2. Ce qui est impossible car seule une facture a été réglée.
    @+

  4. #4
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Si le total s'affiche sur chaque ligne c'est que vous avez placé le contrôle dans la zone Détail or vous avez dit vous même que vous le mettiez dans le pied de formulaire.

  5. #5
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut Problème de champ calulé dans sous-formulaire
    Bonjour RJ,

    Non, non !

    Dans le pied de mon SForm3, j'ai donc inséré une zone de texte (total_règlement) qui a pour source contrôle Dans la zone détail de mon SForm2, j'ai inséré une zone de texte qui a pour source contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =[Formulaires]![Form1].[SForm3]![total_règlement]
    Cordialement

  6. #6
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Re,

    Règlement se trouve bien dans le ssForm3.
    Si j'ai bien compris Règlement est renseigné par l'utilisateur et contient un montant global ou partiel de ce qui est dû.
    Sile montant est partiel on aura plusieurs enregistrements dans le ssFom3 qui contiendront les montants partiels.

    Dans le pied de formulaire vous aurez une zone de texte Règlement_Total = à Somme([Règlement])

    Donc sur la ligne correspondante à une facture vous aimeriez avoir ce Règlement_Total.
    Je me pose une question qu'est-il affiché dans le formulaire principal?

  7. #7
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut Problème de champ calulé dans sous-formulaire
    Bonsoir RJ,

    Justement non, SForm3 ne se trouve pas dans SForm2.

    Sinon, vous avez bien résumé ma situation.
    Pour un client (Form1) il peut y avoir une ou plusieurs factures (SForm2) et par facture il peut y avoir un ou plusieurs règlements (SForm3)

    Je voulais dans mon SForm2 ajouter un champ (calculé) qui me permet en fait de comparer montant facture avec total des règlements effectués par facture.

    J'ai utilisé mes 2 méthodes pour esayer d'obtenir le résultat, sans succès. J'ai ensuite appliqué votre conseil concernant la syntaxe Forms!NomFormulaire.NomSousFormulaire!NomContrôle sans succès non plus malheureusement.

    En attache 2 captures d'écran pour vous montrer ce qui se passe.
    Pour la facture n°1 37 euros ont été réglés, mais ce montant s'affiche sur toutes les lignes de mon SForm2 (Capt1.jpg).
    Par contre lorsque je clique sur la ligne de ma deuxième facture n°659, le champ montant règlt reste vide ce qui est normal car aucun règlement n'a été effectué.

    Voilà où j'en suis.
    Cordialement
    Images attachées Images attachées   

  8. #8
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Je comprends bien ce que vous voulez faire.
    Je signale qu'Access ne fait que ce qu'on lui demande de faire, c'est à dire dans votre cas vous mettez un contrôle indépendant dans le ssForm2 et vous lui demandé d'afficher le résultat d'un calcul obtenut dans le ssForm3 et il le fait sur chaque ligne d'enregistrement puisque votre contrôle est indépendant (=ne fait pas partie de la table ou de la requête qui contient les données du ssForm).
    Je sens qu'il faudrait que votre contrôle ne devrai afficher le soustotal des réglement que dans la ligne dont le n° de facture correspond au contenu du contrôle N°Facture de la même ligne. Une fonction VraiFaux existe dans Access pour faire ce genre de filtrage, elle s'utilise comme le Si dans Excel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(Test logique;ValeurSiVrai;ValeurSiFaux)
    Donc pour vous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([N°Fact]DussForm3 = [N°Fact]DussForm2;[Règlement_Total]dussForm3;0)
    Cela peut-être placé dans une requête pour un champ calculé, ou dans la propriété Source contrôle d'une zone de texte.

    Si j'avais vos données sous la main je pourrais probablement résoudre votre problème.

  9. #9
    Expert éminent Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 273
    Points : 6 582
    Points
    6 582
    Par défaut Problème de champ calulé dans sous-formulaire
    Bonjour RJ,
    Un grand merci pour votre aide précieuse.
    Le contrôle source final de ma zone de texte indépendante est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([Formulaires]![Form1]![SFomr3].[Formulaire]![tbl_id#]=[tbl2_id];[Formulaires]![Form1]![SFomr3].[Formulaire]![total_règlement];0)
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2010, 12h47
  2. [AC-2007] Problème avec champs concaténé dans 1 formulaire
    Par Peter K. dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/08/2009, 17h09
  3. Champ indépendant dans sous-formulaire
    Par lito74 dans le forum Access
    Réponses: 7
    Dernier message: 27/01/2006, 16h57
  4. Pb champ calcule dans sous formulaire
    Par Brial dans le forum Access
    Réponses: 6
    Dernier message: 12/11/2005, 18h33
  5. Réponses: 9
    Dernier message: 22/06/2005, 08h45

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