2 pièce(s) jointe(s)
[Comptabilité] Répartition montant selon une durée et remplissage automatique d'une table
:salut:
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 :
Pièce jointe 214345
:fleche: 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:
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 :
Pièce jointe 214350
Le résultat obtenu n'est pas satisfaisant, car je bloque pour remplir automatiquement les autres champs vides.
:fleche: Seriez-vous disponible à m'aider pour trouver une solution à cela ?
:fleche: Auriez-vous d'autres idées ou solutions ?
Merci d'avance
Cordialement,
Malick