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 :

Fonction vba somme de plusieurs champs


Sujet :

Access

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 86
    Points : 62
    Points
    62
    Par défaut Fonction vba somme de plusieurs champs
    Bonjour,

    voila j'ai a developper une fonction et je ne sais pas trop comment m'y prendre.

    J'ai une base de donnée sous access2000, qui contient 3 tables:

    une table client contenant le numéro client ainsi que son groupe.

    une table facture qui contient le numéro de client et le cout de la facture, ainsi que le mois de la facture sous format MMAA

    une table qui associe un groupe à une entité.

    On me demande de mettre en place une fonction vba qui me permet de determiner le cout total des factures pour une entité.

    Merci d'avance

  2. #2
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Points : 197
    Points
    197
    Par défaut Bonjour
    Bonjour

    je pense qu'il vaut mieux passer par une requête c'est simple

    Voilà

    T_client(Id_client,Id_groupe)
    T_Groupe(Id_goupe,entité)
    T_facture(id_facture,id_client)

    tu vas créer une requête avec les trois tables

    T_groupe(id_client)---------T_client (id_client)---------->T_facture(id_client) lien à droite

    ta requête va être
    SELECT T_Groupe.Entite, Sum(T_Facture.Mt) AS SommeDeMt
    FROM (T_client INNER JOIN T_Groupe ON T_client.Id_groupe = T_Groupe.Id_Groupe) LEFT JOIN T_Facture ON T_client.Id_client = T_Facture.Id_client
    GROUP BY T_Groupe.Entite;


    A+

    je devine ton modèle de données mais bon c'est pas facile quand on connait pas le besoin

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 86
    Points : 62
    Points
    62
    Par défaut
    En fait mon shéma est:

    T_client(Id_client,Id_groupe)
    T_Groupe(Id_goupe,entité)
    T_facture(Id_client,Montant,Mois)

    Par exemple rempis comme suis:
    T_client:
    0623A Groupe1
    646AB Groupe2

    T_Groupe:
    Groupe1 Entité1
    Groupe2 Entité1

    T_facture:
    0623A 23,00 0706
    646AB 50,00 0706

    Mon code est en modifiant legerement le tien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT T_Groupe.Entite, Sum(T_Facture.Mt) AS SommeDeMt
    FROM (T_client INNER JOIN T_Groupe ON T_client.Id_groupe = T_Groupe.Id_Groupe) LEFT JOIN T_Facture ON T_client.Id_client = T_Facture.Id_client
    WHERE [T_Facture].[Mois]='0706'
    GROUP BY T_Groupe.Entite;
    Lorsque j'execute la requete une message box s'ouvre avec écrit:
    T_client.Groupe:
    et une zone de saisie
    si je rentre Entité1 je n'ai rien. Et si je rentre Groupe1, il s'affiche:

    Entité1 73,00

    De meme si je modifie le code et met:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT Sum(T_Facture.Mt) AS SommeDeMt
    FROM (T_client INNER JOIN T_Groupe ON T_client.Id_groupe = T_Groupe.Id_Groupe) LEFT JOIN T_Facture ON T_client.Id_client = T_Facture.Id_client
    WHERE [T_Facture].[Mois]='0706'
    and T_Groupe.Entite='Entité1';
    J'ai la meme message box et la encore aucun montant


    Merci d'avance

  4. #4
    Membre du Club Avatar de tiotel
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    lorsque tu tape Entité 1, Access ne sais pas lesquel prendre. car il est present dans tes deux enregistrements


    peut etre que tu peux mieux lire cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT Sum(T_Facture.Mt) AS SommeDeMt
    FROM T_client, T_Groupe, T_Facture 
    WHERE T_client.Id_groupe = T_Groupe.Id_Groupe  
    AND T_client.Id_client = T_Facture.Id_client
    AND [T_Facture].[Mois]='0706'
    AND T_Groupe.Entite = 'Entité1';

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 86
    Points : 62
    Points
    62
    Par défaut
    En fait j'ai trouvé l'erreur, ma table client avait pour nom de champ groupement au lieu de groupe. Il ne connaisait pas le champ groupe c'est pour ça qu'il me demandait.

    Donc les 2 codes marche parfaitement.

    Merci à vous 2.

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

Discussions similaires

  1. [AC-2007] Somme de plusieurs Champs
    Par bpons dans le forum VBA Access
    Réponses: 10
    Dernier message: 14/06/2010, 16h45
  2. [AC-2000] Pb somme de plusieurs champs dans état
    Par rankynette dans le forum IHM
    Réponses: 2
    Dernier message: 09/04/2010, 08h25
  3. [requete]somme de plusieur champs séparés
    Par Neilime05 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/04/2007, 21h15
  4. Somme de plusieurs champs
    Par zapatta dans le forum Langage SQL
    Réponses: 3
    Dernier message: 18/09/2006, 14h27
  5. Réponses: 8
    Dernier message: 29/06/2006, 15h37

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