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

VBA Access Discussion :

[Comptabilité] Répartition montant selon une durée et remplissage automatique d'une table


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut [Comptabilité] Répartition montant selon une durée et remplissage automatique d'une table


    Pour les besoins de ma comptabilité, je suis en train de concevoir une base de données pour un meilleur suivi des subventions et de leur rattachement à l'exercice concerné. Pour cela, j'ai le modèle suivant :

    Nom : Sans titre.png
Affichages : 448
Taille : 13,8 Ko

    Les règles de gestion :

    • un contrat a une durée d'au moins trois (3) ans ;
    • un contrat peut faire l'objet de plusieurs renouvellements d’où la table t_Renouvellement ;


    L'idée pour moi est de remplir automatiquement , lors de la saisie d'un nouveau contrat, la table t_Repartitions en fonction des éléments saisis dans la table t_Contrats via son formulaire. Cette répartition devrait se faire en fonction de la durée du contrat.

    Dans t_Repartitions j'ai :
    • idRepartition_pk
    • idContrat_fk : pour identifier le contrat concerné par l'enregistrement
    • idRenouvellement_fk : en cas de renouvellement, permet d'identifier le renouvellement concerné et ainsi remonter vers le contrat
    • MoisDotation : devrait correspondre à la date d'anniversaire de la signature du contrat (j’ai pensé à unDateAdd()
    • AnneeDotation : Correspond à l'année de la dotation
    • MontantDotation : Montant réparti en fonction de la durée, cela pour chaque année


    J'ai commencé avec ceci (code récupéré depuis le site de Hervé INISAN et que j'ai tenté d'adapter à ma situation) :
    Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private Sub Repartition()
        ' Quelques variables
        Dim rst As DAO.Recordset
        Dim Duree As Long
     
        ' Ouvrir la table en lecture/écriture
        Set rst = CurrentDb.OpenRecordset("tRepartitions", dbOpenDynaset)
     
            ' Boucler sur la durée du contrat
        For Duree = 1 To Me.lblDureeContrat
            ' Créer un enregistrement dans la table
            rst.AddNew
     
            ' Alimenter les champs
            rst("idContrat_fk") = Me.lblidContrat_pk
            'rst("MoisDotation") =
            rst("AnneeDotation") = 0
            rst("MontantDotation") = Me.lblMontantSubvention / Me.lblDureeContrat
     
            ' Valider
            rst.Update
        Next
     
        rst.Close
        Set rst = Nothing
        MsgBox "Opération terminée !", vbInformation
    End Sub

    Résultat obtenu :

    Nom : Sans titre1.png
Affichages : 407
Taille : 5,9 Ko

    Le résultat obtenu n'est pas satisfaisant, car je bloque pour remplir automatiquement les autres champs vides.

    Seriez-vous disponible à m'aider pour trouver une solution à cela ?
    Auriez-vous d'autres idées ou solutions ?

    Merci d'avance
    Cordialement,
    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Salut,

    Avec ce code et pour un Montant global de 100 000 FCFA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Private Sub Repartition()
        ' Quelques variables
        Dim rst As DAO.Recordset
        Dim Duree As Long
     
        ' Ouvrir la table en lecture/écriture
        Set rst = CurrentDb.OpenRecordset("tRepartitions", dbOpenDynaset)
     
            ' Boucler sur la durée du contrat
        For Duree = 1 To Me.lblDureeContrat
            ' Créer un enregistrement dans la table
            rst.AddNew
     
            ' Alimenter les champs
            rst("idContrat_fk") = Me.lblidContrat_pk
            rst("PeriodeDotation") = DateAdd("yyyy", 1, Me.lblDateDebutContrat)
            rst("MontantDotation") = Me.lblMontantSubvention / Me.lblDureeContrat
     
            ' Valider
            rst.Update
        Next
     
        rst.Close
        Set rst = Nothing
        MsgBox "Opération terminée !", vbInformation
    End Sub
    J'obtiens ceci lors comme génération d'écriture :

    Nom : Sans titre.png
Affichages : 311
Taille : 10,0 Ko

    Comment pourrais-je faire en sorte que dans le champ PeriodeDotation, les données s'incrémentent de +1 année. Ainsi j'aurais dans mon exemple : 01/06/2016 - 01/06/2017 - 01/06/2018 ?

    Merci d'avance
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour Malick,

    pour un meilleur suivi des subventions et de leur rattachement à l'exercice concerné.
    Peux-tu expliquer le problème comptable : je ne comprends pas le but.

    S'agit-il de répartir la prise en charge de la subvention sur la durée de vie du contrat ?

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    Claude

    Merci pour ce retour.

    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour Malick,

    S'agit-il de répartir la prise en charge de la subvention sur la durée de vie du contrat ?
    C'est exactement cela.

    Et chaque année, une facture relative à la somme à payer est envoyée à chaque partenaire pour qu'il puisse régler la quote-part de l'année concernée. Le montant de la facture correspond au montant se trouvant sur la table t_Repartition en fonction de l'année concernée.

    Certains contrats sont signés en cours d'année et par conséquent pour un exercice donné, je devrais faire le prorata du montant à répartir sur une année. Le reliquat du montant annuel sera logé dans un compte de Produit constaté d'avance.

    Je compte ensuite, via une requête, faire le rattachement du produit à chaque exercice comptable (année) en fonction de la date de signature du contrat. Cette requête me permettra d'alimenter ma base de reporting mensuel.

    Est-ce que tu comprends mieux mon objectif ?

    Merci d'avance
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Mais alors, si la db contient pour le contrat :
    - la date de départ ;
    - la durée ;
    - la subvention,
    le prorata à une date pourrait se calculer avec une fonction.
    Pourquoi veux-tu ajouter des tables ?

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 308
    Billets dans le blog
    15
    Par défaut
    le prorata à une date pourrait se calculer avec une fonction.
    Effectivement, mais c'est l'incrémentation des lignes qui me pose problème en fonction de la durée.

    Au moment de saisir le contrat, j'ai créé dans le formulaire un champ DureeContrat avec la fonction DateDiff().

    Pourquoi veux-tu ajouter des tables ?
    L'idée m'a été proposée sur le Chat, afin de générer les opérations directement dans la table t_Repartitions et gérer en même temps les renouvellements.

    En effet, un contrat terminé peut être renouvelé, et dans une telle situation, le montant à répartir sera celui du contrat de renouvellement.

    Tu vois mieux ?

    Si tu as une autre vision de la chose, je suis preneur aussi pour échanger dessus.

    Edit :
    je pense comprendre ta logique. C'est à dire au lieu de raisonner en année, je devrais résonner en mois et ainsi faire la répartition par mois. C'est bien cela ?
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc..
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

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

Discussions similaires

  1. ajout d'une colonne et remplissage automatique
    Par ____22 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 04/07/2008, 12h21
  2. remplissage automatique d'une colonne
    Par zanou666 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/12/2007, 15h32
  3. Fonction permettant un remplissage automatique d'une GtkTreeView
    Par dave260888 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 25/06/2007, 11h59
  4. Réponses: 8
    Dernier message: 19/04/2007, 10h20
  5. [Débutant] Calcul d'une date à partir d'une date de départ et d'une durée
    Par Marmotton76 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/04/2007, 10h39

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