Bonjour,
Je vous sollicite aujourd'hui pour un problème qui est sans doutes plus mathématique que de développement.
Je suis en train de développer un petit logiciel ayant attrait à la gestion locative.
Pour ce faire, l'utilisateur va renseigner différents champs créé dynamiquement dont les suivants :
Le montant du loyer (ChpAjtLoyLog())
De combien de mois le premier mois de loyer est décalé ([i]ChpDecalLoyer()[i/])
L'indice de révision annuel des loyers (TextBox_EvolIRL)

Je dois remplir la 6ème colonne d'un tableau (nommé matrice()) avec le montant total des loyers perçus.

Par exemple :
Le projet commence au 1er janvier 2017 (TextBox_DateDeb)
Le logement n°1 a un loyer de 100€ dont le premier loyer est décalé de 3 mois
Le logement n°2 a un loyer de 200€ dont le premier loyer est décalé de 1 mois
L'indice annuel de révision des loyers est de 0,5%.
Ainsi, j'aimerai que mon tableau (matrice) soit complété comme suit :
matrice(5,0) : 0 dans tous les cas (là dessus, aucun soucis)
matrice(5,1) : 0
matrice(5,2) : 200 (logement n°2)
matrice(5,3) : 200 (logement n°2)
matrice(5,4) : 300 (logement n°1+n°2)
matrice(5,5) : 300 (logement n°1+n°2)
...
matrice(5,13) : 200+0.5%+100 = 301 (logement n°2+0.5% +logement n°1)
matrice(5,14) : 200+0.5% + 100+0.5% = 301.5 (logement n°2+0.5% +logement n°1+0.5%)
matrice(5,15)=301.5 (idem)
...
matrice(5,25) : 200*(1+(0,5%))^2 + 100*0.5% = 302.005 (logement n°2+0.5%*2 +logement n°1+0.5%)
matrice(5,26) : 200*(1+(0,5%))^2 + 100*(1+(0,5%))^2 = 303.0075 (logement n°2+0.5%*2 +logement n°1+0.5%*2)
...


Sachant que le nombre de logement total est contenu dans la variable contLogmt, et que la première colonne de mon tableau (matrice()) contient les dates, à interval mensuel demarrant à la valeur de TextBox_DateDeb.
J'ai réussis à remplir la 6ème colonne de mon tableau en décallant les premiers loyers comme l'avait renseigné l'utilisateur en utilisant le code ci-dessous :
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
Dim decaLoyer As Integer
        Dim DateMatrice As Date
        Dim DateDebutLoyers As Date
        Dim loyercourant As Integer
 
        For b = 1 To contLogmt
            decaLoyer = ChpDecalLoyer(b).Text
            DateMatrice = TextBox_DateDeb.Text
            DateDebutLoyers = DateAdd(DateInterval.Month, decaLoyer + 1, DateMatrice)
 
            For a = 1 To 360
                DateMatrice = DateAdd(DateInterval.Month, 1, DateMatrice)
                If DateMatrice >= DateDebutLoyers Then
                    loyercourant = ChpAjtLoyLog(b).Text
                    matrice(5, a) = matrice(5, a) + loyercourant
                End If
            Next
        Next
Pour l'instant, j'arrive seulement à augmenter le montant des loyers de l'indice de révision à chaque 1er janvier, (mais pas à la date "anniversaire" du premier loyer payé pour chacun des logement). Pour ce faire, j'utilise le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Dim temps As Integer
        For a = 1 To 360
            temps = Year(matrice(0, a)) - Year(matrice(0, 1))
            If temps >= 1 Then temps = temps - 1
            matrice(5, a) = matrice(5, a) * (1 + TextBox_EvolIRL.Text / 100) ^ temps
        Next
Je sollicite donc votre aide pour arriver à calculer cette valeur de façon plus juste, à chaque "anniversaire" du premier loyer payé pour chacun des logements.
Merci d'avance pour votre aide.