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 :

Cumul mensuel


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut Cumul mensuel
    J'ai une table dans laquelle j'ai trois champs : mois - année - resultat mois.
    Je souhaiterais faire une requete qui m'affiche par an les cumuls mensuel :
    2OO3 : Janvier
    2003 : Janvier + février
    2003 : Janvier + février + mars
    .......

    Merci pour votre collaboration.

    Régis

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Il te suffit d'écrire une requête ou tu fais tes additions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    [Janvier]
    [Janvier]+[Février]
    Tu peux les trier comme tu le désire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Salut,

    Si c'est pour traiter des données de 2003, ça ne vaut plus la peine ...


    Plus sérieusement, dès le moment ou sur un row de ta table, tu as besoin d'information provenant d'autres rows, ça devient plus difficile. Je vois deux pistes :

    Tu crées une table "de travail" , dans laquelle tu ajoutes une colonne"Cumul". Tu parcoures ta table de base enregistrement par enregistrement et tu ajoutes l'info dans Cumul.


    Deuxième piste, tu te crées une petite fonction du style (code non testé, mais je l'ai déjà fait)

    function AddMois(MyMontantMois as double) as double

    dim Static myCumul as double

    myCumul= myCumul + MyMontantMois
    AddMois=MyCumul

    end function

    Dans une requête, tu ajoutes une colonne :

    AddMois(resultatMois)

    Grâce à Static, il gardera le cumul d'un appel à l'autre.

    Je préfèrres 100 fois la première car si tu navigues dans ton query, il risque de continuer à additionner dans MyCumul .

    La deuxième n'est bonne que pour un rapport que tu imprimes directement.

  4. #4
    Membre actif Avatar de ActionAccess
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 213
    Points
    213
    Par défaut
    Bonjour,

    Une méthode beaucoup plus simple consisterait à passer par un Etat, dans lequel tu mets un groupe Année, puis dans la zone détail le champ Mois, puis une deuxième fois le champ Mois, mais où tu définis cette fois-ci la propriété CUMUL à "Par groupe" dans l'onglet Données de la propriété du champ Mois.

    Espérant t'avoir éclairé.
    ActionAccess

  5. #5
    Membre actif Avatar de ActionAccess
    Inscrit en
    Mars 2006
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 175
    Points : 213
    Points
    213
    Par défaut
    Autant pour moi, c'est sur le champ "Résultat Mois" qu'il faudrait faire le cumul.
    ActionAccess

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Energies à dit:

    Je souhaiterais faire une requete qui m'affiche par an les cumuls mensuel :
    c'est pour ça que je suis parti vers ces solutions...

  7. #7
    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
    Points : 4 297
    Points
    4 297
    Par défaut
    tu peux toujours faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT mois, DSum("[ca mois]","matable","mois <=" & [mois]) AS cumul
    FROM matable;
    Elle est pas belle la vie ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    Effectivement, ça ne peut que fonctionner.

    Pour que le résultat soit correct, il faudrait quand-même envisager une concaténation de l'année et du mois

    du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT mois, DSum("[ca mois]","matable","format(AN;'YYYY') & format(mois;'MM') <=" & format(AN;'YYYY') & format(mois;'MM')) AS cumul 
    FROM matable;
    Sinon, sur plusieurs années, le résultat ne sera pas celui attendu.

  9. #9
    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
    Points : 4 297
    Points
    4 297
    Par défaut
    exact d'ailleurs on ne gère pas deux champs année mois
    mais anmois
    Elle est pas belle la vie ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut toujours pb
    Access ne comprend pas bien....
    moi non plus...

    Merci commenter code

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut Nom de la table et des champs
    Table :
    DJUmensuel

    Champs de la table :
    Mois
    Année_chauffage
    Cumul_DJU

    La requête souhaité
    2003
    DJU janvier
    DJU janvier + février
    DJU janvier + février +mars
    .....

    2004

    DJU janvier
    DJU janvier + février
    DJU janvier + février +mars
    .....

    2005
    DJU janvier
    DJU janvier + février
    DJU janvier + février +mars
    .....

    --------------------------------------------------------------------------------

    Merci pour le code avec les noms des champs et table.

    Merci pour votre collaboration

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    la fonction DSum que Random t'a donné à pour but de faire une addition du contenu d'un champ d'une table.

    Si dans ta requête, tu tapes dans une colonne MonCumul: Dsum("RESULTATMOIS";"LeNomDeTaTable")

    Tu devrais avoir pour chaque ligne de ta requête le cumul total de tous tes mois.

    Essayes déjà si ça marche....

    Maintenant, ça n'a pas beaucoup de sens de recalculer à chaque ligne le cumul de toutes tes lignes.... puisque la réponse sera toujours la même.

    C'est pourquoi, le troisième paramètre qui est optionnel est un filtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Table3.mois, Table3.montant, DSum("montant","Table3","MOIS<=" & [mois]) AS Expr1
    FROM Table3;
    Ce codeci est testé et fonctionne !

    remplace simplement Table3 par TaTable
    montant par le bon nom du montant
    et les deux mots mois par ton nom de champ. Laisse bien tout le reste comme c'est et tu vas voir c'est magique !

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut Pas si magique....
    Message d'erreur :

    Vous avez essayé d'éxécuter une requête ne comprenant pas l'expression spécifié 'Mois' comme une partie de la fonction agrégat.

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DJUmensuel.Mois, DJUmensuel.Cumul_DJU, DSum("Cumul_DJU","DJUmensuel","Mois<=" & [Mois]) AS Expr1
    FROM DJUmensuel
    GROUP BY Année_chauffage;
    Le nom de ma table : DJUmensuel
    Champs : Mois, Cumul_DJU, Année_chauffage

    Encore merci pour votre aide précieuse

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut
    en fait j'ai bien un cumul si je n'ajoute pas : GROUP BY Année_chauffage;

    mais j ai un cumul des mois de janvier sur plusieurs années. C'est pas mal mais pas tout a fait ce que je veux.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    J'ai ta solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT aaa.AN, aaa.MOIS, aaa.Cumul_DJU, DSum("Cumul_DJU","aaa","Mois<=" & [Mois] & " and AN =" & [AN]) AS Expr1
    FROM aaa;

    Si tu as dans ta table aaa

    2002 01 5
    2002 03 15
    2005 04 125
    2005 12 325

    tu obtiens

    2002 01 5 5
    2002 03 15 20
    2005 04 125 125
    2005 12 325 450

    C'est bien ça que tu veux

    C'est beau Access

  16. #16
    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
    Points : 4 297
    Points
    4 297
    Par défaut
    on peut aussi jouer cela en sql c'est plus fun
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT a.an, 
    a.mois, 
    a.ca, 
    Sum(b.ca) AS cumul
    FROM matable AS a
     INNER JOIN matable AS b 
    ON a.an = b.an
    WHERE b.mois<=[a].[mois]
    GROUP BY a.an, a.mois, a.ca;
    Elle est pas belle la vie ?

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut Ca marche
    ok merci, ça fonctionne

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Points : 491
    Points
    491
    Par défaut
    C'est effectivement plus fun, et sans doute plus performant sur une grosse table, mais cela m'avait semblé moins "basic" et puis un certain "random" avait commencé par proposé un DSum...

  19. #19
    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
    Points : 4 297
    Points
    4 297
    Par défaut
    vi mais le côté éducatif de la chose devait être souligné
    et random implique des solutions hasardeuses
    Elle est pas belle la vie ?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 40
    Points : 24
    Points
    24
    Par défaut Encore des cumuls !!!!
    J ai essaye avec DSUM ca fonctionne bien

    Je n'ai pas encore essayé en SQL ... à voir (il faut que je transcrive vos lettres à la place de mes champs et table.

    Autre problème : toujours de cumul

    J'ai une premiere table etail_conso_elec
    Mes champs sont aux nombre de 10 :
    -Ref
    -Année
    -Mois
    -P
    -HPH
    -HCH
    -HCE
    -HPE
    -HP
    -HC

    Je réalise une premiere requette pour additionner :
    -TotalHP
    -TotalHC
    -Totalconso

    Je souhaite à nouveau faire le cumul mois par mois , par année, et cette fois par ref.
    Si j'utilise le DSUM j'arrive bien à faire des cumuls mais j'ai des cumuls de mes références :

    2003 : janvier : totalconsojanvier ref1 + totalconsojanvier ref2

    Merci pour votre contribution

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. etat de sortie par produit et cumul mensuel
    Par karim15 dans le forum WinDev
    Réponses: 2
    Dernier message: 20/09/2010, 08h45
  2. Réponses: 0
    Dernier message: 14/08/2009, 09h59
  3. Cumul mensuel par projet
    Par oliviergot dans le forum SQL
    Réponses: 7
    Dernier message: 16/04/2009, 07h47
  4. Cumuls mensuels par requête (même avec DSUM)
    Par jlfprofoto dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 21/08/2007, 16h31
  5. [FN] Dénormaliser une table de cumuls mensuels
    Par doudou_rennes dans le forum Schéma
    Réponses: 3
    Dernier message: 27/02/2007, 16h18

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