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

IHM Discussion :

Calcul depuis le jeu d'enregistrement précédent [AC-2007]


Sujet :

IHM

  1. #1
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut Calcul depuis le jeu d'enregistrement précédent
    Bonjour, le Forum
    Je suis à la recherche d'une fonction, vba ou tout autre possibilité de pouvoir effectuer une addition du jeu d'enregistrement actuel par rapport à un champ spécifique du jeu d'enregistrement précédent.
    Je m'explique : J'ai crée un tableau mensuel de janvier à décembre sur plusieurs années et je voudrais crée un champ dans un formulaire me créant un solde final prenant en compte la balance du mois de Février + le solde final de Janvier.
    J'ai essayé avec plusieurs requêtes en créant un décalage avec les mois, mais je bute avec les mois de Janvier et Décembre.
    J'ai essayé avec l'exportation vers Excel et récupération du calcul avec une table. C'est laborieux.
    La question est la suivante est-il possible d'effectuer ce genre de calcul directement dans Access ?
    Je vous joins un tableau effectué sur excel pour une meilleur compréhension du résultat à obtenir sur Access.
    Je vous remercie d'avance de votre réponse positive ou négative.
    Cordialement
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    une idée ci-dessous:

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT T.annee,
           T.mois,
           T.balance,
           (SELECT 200 + SUM([balance]) AS S
            FROM   tTableau
            WHERE  annee & "-" & Format([mois], "00") <= t.annee & "-" &
                   Format(t.[mois], "00")) AS soldeFinal
    FROM   ttableau AS T

    pour info :
    la colonne mois est numérique (1 à 12)
    200 correspond au solde initial

  3. #3
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Boujour Galoir
    Merci pour ta réponse.
    J'ai oublié de préciser que je ne suis pas des plus fort en VBA. J'arrive à arranger quelque peu les codes, mais sans plus.
    Apparemment il manque tout le début du code et me semble-t-il s'applique sur Excel ?
    Comment pourrais-je l'utiliser.
    Merci
    Cordialement

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ça risque d'être compliqué, car déjà ce n'est pas du VBA mais une requête au format SQL que l'on peut même simplifier ainsi :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    SELECT T.annee,
           T.mois,
           T.balance,
           (SELECT 200 + SUM([balance])AS S
            FROM   ttableau
            WHERE  annee * 100 + mois <= t.annee * 100 + t.mois) AS soldeFinal
    FROM   ttableau AS T


  5. #5
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Excuses moi je n'avais pas vu qu'il était marqué Code Sql. Il en est de même que le VBA. Je ne maîtrise pas. Je travaille en mode création.
    Voici le code Sql de ma requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT SF_Calcul_Balance.Année_Cal, SF_Calcul_Balance.Mois_Cal, SF_Calcul_Balance.Balance
    FROM SF_Calcul_Balance;
    et je n'arrive pas à modifier ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT T.annee,
           T.mois,
           T.balance,
           (SELECT 200 + SUM([balance]) AS S
            FROM   tTableau
            WHERE  annee & "-" & Format([mois], "00") <= t.annee & "-" &
                   Format(t.[mois], "00")) AS soldeFinal
    FROM   ttableau AS T
    J'essaie de faire des comparaisons pour apprendre le sql . Le tTableau correspond à la requête (dans mon cas) SF_Calcul_Balance, mais que veut dire le T. devant annee, mois ou balance.
    J'ai essayé de modifier mais le champ Balance est devenu Soldefinal avec un chiffres identique sur toutes les lignes.
    Voici comment j'ai modifié ton code. Je joins une photo du résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT SF_Calcul_Balance.Année_Cal, SF_Calcul_Balance.Mois_Cal, SF_Calcul_Balance.Balance
      (SELECT 200 + SUM([balance])AS S
     
    FROM SF_Calcul_Balance
     WHERE  année_cal * 100 + mois_cal <= SF_Calcul_Balance.année_cal * 100 + SF_Calcul_Balance.mois_cal) AS soldeFinal
     
     
    FROM   SF_Calcul_Balance AS SF_Calcul_Balance
    Merci de ta patience
    Bonne journée
    Images attachées Images attachées  

  6. #6
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Re
    Lors de la réouverture de la requête voici le message d'erreur.
    Je ne saisis pas tout.
    Cordialement
    Images attachées Images attachées  

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Tu étais pas loin de la solution !
    J'ai changé ci-dessous l'alias de la table/requête de T à CB, juste pour le fun !
    L'alias est en quelque sorte un surnom de la table ou requête source.
    L'alias est ici indispensable car la sous-requête (SELECT 200+... + CB.mois_cal) utilise les colonnes CB.Année_cal et CB.Mois_cal de la source principale 'sf_calcul_balance' qui est surnommée ici CB (... As CB) pour les comparer aux colonnes Année_cal et Mois_cal de la source identique de la sous-requete.
    Si on ne donne pas de surnom à l'une des source, Access ne pourra pas relier Année_Cal par exemple à l'une ou l'autre source

    Cette sous-requête effectue un 'running sum' c'est à dire le calcul de la somme des Balance pour chaque ligne de la source principale 'sf_calcul_balance As CB'

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT année_cal,
           mois_cal,
           balance,
           (SELECT 200 + SUM([balance]) AS S
            FROM   sf_calcul_balance
            WHERE  année_cal * 100 + mois_cal <= CB.année_cal * 100 + CB.mois_cal) AS soldeFinal
     FROM   sf_calcul_balance AS CB 

    En espérant que ça fonctionne maintenant

  8. #8
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Re
    Merci pour tous ces explications qui me font mieux appréhender la chose.
    J'ai fait un copier/coller de ton dernier code dans ma requête et voici le message que cela provoque.
    Est-ce que cela te dit quelque chose ?
    Dois-je changer quelque chose dans le code ?
    Cordialement
    Images attachées Images attachées  

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il faudrait verifier que les colonnes soient bien orthographiees (annee_cal, mois_cal, balance)

    Retirer la sous requete (select 200... as soldefinal) pour voir si la requete principale se lance

    A+

  10. #10
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Les noms sont bien orthographiés. La requête fonctionne bien en retirant la sous-requête.
    Hier je me suis rendu compte que le code fonctionne très bien sur une base nouvellement créée. Je l'avais mis sur le post hier, et je me rends compte qu'il n'est pas présent. Bref j'ai lu sur les forums que ce message d'erreur pouvait provenir de code VBA. Le soucis est de trouver lequel qui provoque l'erreur.
    Existe-t-il un site qui peut scanner un fichier access ?
    Actuellement je suis entrain de recréer un nouveau fichier en testant chaque changement. Du boulot en ligne de mire.
    Ce sont les aléas des méconnaissances, mais cela apprend.
    Merci encore pour ton implication
    Cordialement

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    concernant la réparation d'une base, Loufab avait proposé ceci pour décompiler une base access puis compactage : http://blogaccess.free.fr/?p=75

    a+

  12. #12
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Re
    Le lien que tu viens de mettre je l'ai vu hier, mais le soucis c'est que je ne sais pas où placer de batch. Si tu peux m'orienter, je ne dis pas non et en te remerciant d'avance.
    Sinon je me suis servi de l'analyseur de performances et il me signale ce message "Élément non trouvé dans cette collection". Je pense qu'il s'agit de la table créée par excel, mais que je ne peux inclure dans la table de relations.
    J'ai découvert le logiciel Stellar Repair for Access, est-ce que tu le connais ? Il est payant 104€.
    Merci encore pour ta patience.
    Je suis un cas spécial.......
    Cordialement

  13. #13
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    concernant le fichier batch de loufab :
    -> le chemin de l'exécutable MSACCESS.EXE est à verifier car pour moi c'est :
    "C:\Program files (x86)\Microsoft Office\OFFICE14\MSACCESS.EXE"

    Faire une sauvegarde de ta base access puis placer le fichier Batch de Loufab créé dans le répertoire de ton appli Access. Via l'explorateur de fichiers de Windows, sélectionner le fichier de ton appli Access, appuyer sur la touche "Maj" (pour ne pas exécuter le code de ton appli access) et déposer le fichier de l'appli Access sur le fichier batch de Loufab. Garder la touche "maj" appuyée. Le processus démarre : décompilation, fermer la base, ouverture pour compactage et fermeture.


    Ne pas acheter d'appli de réparation, ça ne sert à rien...

    Conseil : En tête de chaque module de code VBA, vérifier que OPTION EXPLICIT est bien écrit, puis lancer dans le menu du VBE (vb éditeur) Débogage -> Compiler pour afficher les erreurs de code

  14. #14
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Bonjour
    J'ai tout fait comme tu l'a décrit et rien ne se passe.
    Je pense ne pas avoir correctement créer le fichier Batch car il me donne comme nom Batch.cmd.txt et je n'arrive pas à supprimer l’extension .txt.
    Pour créer le fichier Batch j'ai créée un nouveau document texte sur le bureau (bouton droit). J'ai copié le fichier de Loufad à l'intérieur et renommé ce nouveau document par Batch.cmd. Est-ce correct ?
    Sinon quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    le répertoire de ton appli Access
    tu attends par C:\.....\office 12\msaccess.exe pour mon cas ou D:\.......M_14.accdb où est placé mon fichier créé sous Access.
    J'ai modifié le code de Loufad en ce qui concerne le chemin de MSACESS;
    En ce qui concerne tes conseils. Je te remercie, j'ai vérifié et tout est Ok. Voici l'entête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Compare Database
    Option Explicit
    de chaque module.
    Il est clair que si je peux éviter de tout recommencer cela serait sympa.
    Cordialement

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Il faut nommer le fichier de loufab avec l extension .bat et le placer dans le repertoire de ta base Access

  16. #16
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    J'ai pu changer l'extension du fichier en passant par les propriétés des répertoires Win7.
    Le fichier a fonctionné mais le problème persiste. Je suis obligé de tout recommencer.
    Quelle est la différence entre le fichier de Loufad et le compactage et le compiler proposé directement par Access ?
    Je te remercie encore pour ton dévouement.
    J'aurai, néanmoins, appris beaucoup de chose.
    Cordialement

  17. #17
    Invité
    Invité(e)
    Par défaut
    Le fichier de Loufab décompile, recompile puis compactage d'où une efficacité supérieure à un simple compactage pour réparer certaines erreurs

  18. #18
    Membre habitué

    Homme Profil pro
    retraité
    Inscrit en
    Décembre 2014
    Messages
    372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Décembre 2014
    Messages : 372
    Points : 150
    Points
    150
    Billets dans le blog
    1
    Par défaut
    Bonsoir,
    Merci pour ta réponse.
    J'ai commencé à reconstruire mon fichier et actuellement je suis à l'utilisation du fameux code SQL. Tout fonctionne. Il faut que je fasse attention à l'utilisation du VBA.
    Je te remercie pour tous tes conseils et ta patience.
    Je vais clore cette discussion.
    Cordialement

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2016, 16h00
  2. Afficher un champs calculé depuis les enregistrements précédents
    Par Interruption13h dans le forum Requêtes
    Réponses: 5
    Dernier message: 14/03/2011, 18h30
  3. Réponses: 6
    Dernier message: 27/06/2009, 08h47
  4. [AC-2007] Calcul lié à la valeur de l'enregistrement précédent
    Par cabinfi dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 28/04/2009, 08h35
  5. Petit Calcul à l'aide des enregistrements précédents
    Par laurentcr dans le forum Access
    Réponses: 5
    Dernier message: 11/09/2006, 13h41

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