Requête

Résolu
Bonjour,
J'aimerai réaliser sous requête Acces, le tableau Excel ci dessous.
Afin d'obtenir dans un champ cumul Annuel l'état du compte dans une année donnée.
Colonne F
NumAn NomLoc SoldePasse SoldeAnnuel Cumul annuel
F4 2020 S… -4187,2 -4 356,00 - 14 951 € SOMME(F4:F13)
F5 2019 S… -2538,59 -4 187,20 - 10 595 € SOMME(F5:f13)
F6 2018 S… -2764,17 -2 538,59 - 6 407 € SOMME(F6:f13)
F7 2017 S… -202,42 -2 764,17 - 3 869 € SOMME(F7:f13)
F8 2016 S… -1040,99 -202,42 - 1 105 € SOMME(F8:f13)
F9 2015 S… 46,53 -1 040,99 - 902 € SOMME(F9:f13)
F10 2014 S… 3,24 46,53 139 € SOMME(F10:f13)
F11 2013 S… 72,94 3,24 092 € SOMME(F11:f13)
F12 2012 S… 16,1467 72,94 0 89 € SOMME(F12:f13)
F13 2011 S… 0 16,15 016 € SOMMEf13)
D'avance MERCI
Cordialement
JCC

Configuration: Windows / Edge 85.0.564.51

12 réponses

  1. Contributeur Ambassadeur
    bonjour,
    as-tu déjà créé la table dans Access?
    0
    1. Contributeur Ambassadeur
      probablement ainsi:
      select t1.NumAn as annee, sum(t2.SoldeAnnuel) as cumul
      from source as t1, source as t2
      where t2.NumAn <= t1.NumAn
      group by t1.NumAn
      0
    2. Contributeur Ambassadeur
      @yg_be@jccorteccia
      je t'ai propose une solution, cela t'a-t-il été utile?
      0
  2. Bonjour,
    Tu m'a déjà bien dépanné par le passé.
    A l'aide d'une requête qui combine des recettes et des dépenses du locataire j'ai crée une table "solde annuel" qui regroupe année après années le solde annuel de chaque locataire.
    Pour connaitre le solde à l'année N je dois effectuer le cumul des soldes des années précédentes.
    Pour une année donnée Le cumul solde de l'année n-1 + le solde annuel de l'année en cours me donnera le solde de cette année.
    Dans ma requête cumul des soldes en actionnant la touche "totaux" j'obtiens pour un locataire donné le total du pour l'ensemble des années. Je voudrais l'avoir année après année.
    Espérant avoir été clair, un grand merci par avance
    Cordialement
    0
    1. Un exemple vaut mieux qu'un long discours

      Champs crées dans acces Champ cumul à créer
      180920 2020 Sahihi - 4 356 € - 14 951 €
      180919 2019 Sahihi - 4 187 € - 10 595 €
      180918 2018 Sahihi - 2 539 € - 6 407 €
      180917 2017 Sahihi - 2 764 € - 3 869 €
      180916 2016 Sahihi - 202 € - 1 105 €
      180915 2015 Sahihi - 1 041 € - 902 €
      180914 2014 Sahihi 047 € 139 €
      180913 2013 Sahihi 003 € 092 €
      180912 2012 Sahihi 073 € 089 €
      180911 2011 Sahihi 016 € 016 €
      -14 950,51 €
      Merci de m'éclairer
      Cordialement
      0
      1. BonjouYG_BE
        Comme pour les demandes passées, cela fonctionne parfaitement.
        J'ai repris dans une base d'essai les éléments utiles, tables, requêtes etc
        Et tout va bien.
        MERCI, merci, MERCI
        Cordialement Cela va nettement améliorer ma programmation
        jccorteccia
        0
        1. Contributeur Ambassadeur
          parfait, content d'avoir pu t'aider.
          peux-tu marquer la discussion comme résolue?
          0
      2. Bonjour,
        Petit complément d'information qui améliorerait encore un peu plus.
        La formule à partir d'une table fonctionne, comme faire à partir d'une requête.
        J'ai essayé sans succès. Après je marquerai résolu.
        Cordialement.
        0
        1. Contributeur Ambassadeur
          qu'as-tu essayé, quel résultat as-tu obtenu?
          0
      3. Bonjour,
        Je vais synthétiser.
        Dans mon cheminement, je parviens à une requête qui me calcule le "soldeAnnuel dans une requête soldes.
        A partir de cette recette soldes je crée une table soldes qui me permet d'avoir le champ solde Annuel et le champ cumul de l'année, à qui j'applique ta formule.
        Il serait plus pratique de passer directement à partir de la requête soldes et obtenir le champ cumul.
        EX.
        select t1.NumAn as annee, sum(t2.SoldeAnnuel) as cumul
        from Soldes as t1, Soldes as t2
        where t2.NumAn <= t1.NumAn
        group by t1.NumAn

        Mais où le calcul obtenu est faux ou le solde Annuel et le cumul sont les mêmes ou le programme recherche une base de données.
        Je vais continuer à charger, mais tu as certainement une idée.
        D'avance MERCI.
        Cordialement
        0
        1. Contributeur Ambassadeur
          je comprends très peu:
          - comment peux-tu avoir une requête et une table ayant le même nom, "soldes"?
          - tu écris que la table soldes a déjà un champ cumul, alors pourquoi vouloir encore le calculer?
          - tu ne montres pas la source SQL de la requête soldes
          - je ne comprends pas ce que signifie "ou le programme recherche une base de données"
          - tu écris "le solde Annuel et le cumul sont les mêmes". où? dans la réponse à quelle requête? lequel est correct?
          0
      4. Je vais essayer d'être plus clair
        démarrons à la requête "Soldes", elle est établie.
        1) Création à partir de cette requête "Soldes" d'une table "CreaSoldes" à l'aide d'une requête création de table
        2) A l'aide de la table "CreaSoldes" et en utilisant ta formule, je crée la requête "CumulSoldes"
        3) Je peux intégrer à mon programme les champs de "CumulSoldes"
        Est-il possible pour automatiser mieux le programme de supprimer les étapes 2 et 3 pour passer directement de la requête "Soldes" à la requête "CumulSoldes", en utilisant dans ta formule une requête au lieu d'une table.
        Cela n'est peut-être pas possible.
        Je continue de chercher.
        0
        1. Contributeur Ambassadeur
          as-tu essayé l'exemple en #10?
          0
      5. Bonjour,
        Pour faire encore plus simple.
        Est ce que la formule
        <ital>select t1.NumAn as annee, sum(t2.SoldeAnnuel) as cumul
        from source as t1, source as t2
        where t2.NumAn <= t1.NumAn
        group by t1.NumAn
        peut fonctionner avec "source" = une requête
        avec "source"= une table cela fonctionne parfaitement
        Merci de me répondre
        cordialement
        0
        1. Il y avait une erreur de frappe.
          Bonjour,
          Pour faire encore plus simple.
          Est ce que la formule
          select t1.NumAn as annee, sum(t2.SoldeAnnuel) as cumul
          from source as t1, source as t2
          where t2.NumAn <= t1.NumAn
          group by t1.NumAn
          peut fonctionner avec "source" = une requête
          avec "source"= une table cela fonctionne parfaitement
          Merci de me répondre
          cordialement
          0
          1. Contributeur Ambassadeur
            bien sûr, on peut utiliser une requête comme source.
            0
        2. J'applique la formule que tu m'as fourni
          SELECT t1.[Numéro Commun], t1.NumAn AS annee, t1.NomLoc, t1.[Solde Annuel], Sum(t2.[Solde Annuel]) AS SoldAn
          FROM [9 - Les Soldes Annuels] AS t1 INNER JOIN [9 - Les Soldes Annuels] AS t2 ON t1.NomLoc = t2.NomLoc
          WHERE (((t2.NumAn)<=[t1].[NumAn]))
          GROUP BY t1.[Numéro Commun], t1.NumAn, t1.NomLoc, t1.[Solde Annuel], t1.[Solde Annuel]
          ORDER BY t1.NumAn DESC;
          A partir de la table: [9 - Les Soldes Annuels] et cela fonctionne.

          SELECT t1.[Numéro Commun], t1.NumAn AS annee, t1.NomLoc, t1.[Solde Annuel], Sum(t2.[Solde Annuel]) AS SoldAn
          FROM [50 - RQ - Compte Annuel Locataires] AS t1 INNER JOIN [50 - RQ - Compte Annuel Locataires] AS t2 ON t1.NomLoc = t2.NomLoc
          WHERE (((t2.NumAn)<=[t1].[NumAn]))
          GROUP BY t1.[Numéro Commun], t1.NumAn, t1.NomLoc, t1.[Solde Annuel], t1.[Solde Annuel]
          ORDER BY t1.NumAn DESC;
          A partir de la requête [50 - RQ - Compte Annuel Locataires] Ne fonctionne pas.
          Bien évidemment le champ [Solde Annuel] est présent dans la table et la requête.
          Je suis un peu perdu.
          Merci d'avance.
          0
          1. Contributeur Ambassadeur
            "Ne fonctionne pas" ne me permet évidemment pas de me faire une idée de ce qui ne fonctionne pas.

            il serait très utile que tu prennes un peu de temps et d'énergie pour lire ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

            ce qui t'aurais permis de nous présenter ceci:
            SELECT t1.[Numéro Commun], t1.NumAn AS annee, t1.NomLoc, t1.[Solde Annuel], 
                  Sum(t2.[Solde Annuel]) AS SoldAn
            FROM [50 - RQ - Compte Annuel Locataires] AS t1 
                   INNER JOIN [50 - RQ - Compte Annuel Locataires] AS t2 
                   ON t1.NomLoc = t2.NomLoc
            WHERE (((t2.NumAn)<=[t1].[NumAn]))
            GROUP BY t1.[Numéro Commun], t1.NumAn, t1.NomLoc, t1.[Solde Annuel], t1.[Solde Annuel]
            ORDER BY t1.NumAn DESC;


            je suggère que, avant d'ajouter des champs supplémentaires, tu commences par tester ma suggestion.
            et que tu nous montres le résultat obtenu.
            0
        3. Même réponse qu'avant. Pourtant tout me semble logique.

          Lorsque j'indique ne fonctionne pas c'est que la requête ne s'ouvre pas et j'ai l'affichage ci-dessous
          Sélectionner la source de données
          Source de données fichier Source de données machine
          Regarder dans document
          Affichage de tous mes documents. Comme lorsque j'ouvre mes documents.
          Nom de source de données Nouveau
          Sélectionner la source de données fichier qui décrit le pilote auquel vous souhaitez vous connecter.
          Vous pouvez utiliser toutes sortes de données fichier faisant référence à un pilote ODBC installé sur votre machine
          OK Annuler Aide

          J'ai lu les codes à première lecture cela me semble hors de mes possibilités mais j'essayerai encore demain.
          0
          1. Contributeur Ambassadeur
            je pense que tu ne crées pas correctement la requête. peux-tu partager soit des images de ce que tu fais, soit ton fichier, avec la requête sauvée dans le fichier?
            0
          2. Contributeur Ambassadeur
            @yg_beil me semble que tu avais eu le même genre de soucis avec la création de requêtes fin 2019. et que tu t'en étais finalemet sorti.
            0
        4. Bonsoir,
          Bien que je ne parvienne pas à insérer une image à cet endroit.
          Grâce à tes conseils, un peu de lecture, et une meilleure compréhension, je suis enfin arrivé à mes fins.
          J'ai une base qui me donne satisfaction.
          Peut être d'ici quelque temps j'aurai une idée d'amélioration et bien évidemment si je ne m'en sors pas je reviendrai vers toi.
          Un très grand MERCI et bonne continuation, c'est sympa d'aider les autres.
          0