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 :
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 :
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
Partager