Requête

Résolu
jccorteccia Messages postés 6 Statut Membre -  
jccorteccia Messages postés 6 Statut Membre -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    as-tu déjà créé la table dans Access?
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        @jccorteccia
        je t'ai propose une solution, cela t'a-t-il été utile?
        0
  2. jccorteccia
     
    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
  3. jccorteccia
     
    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
  4. jccorteccia
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      parfait, content d'avoir pu t'aider.
      peux-tu marquer la discussion comme résolue?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jccorteccia
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      qu'as-tu essayé, quel résultat as-tu obtenu?
      0
  7. jccorteccia
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  8. jccorteccia
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      as-tu essayé l'exemple en #10?
      0
  9. jccorteccia
     
    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
  10. jccorteccia
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bien sûr, on peut utiliser une requête comme source.
      0
  11. jccorteccia
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      "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
  12. jccorteccia Messages postés 6 Statut Membre
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        il 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
  13. jccorteccia Messages postés 6 Statut Membre
     
    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