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

VB.NET Discussion :

[VB 2010] Problème mathématique pour remplir un tableau


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut [VB 2010] Problème mathématique pour remplir un tableau
    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.

  2. #2
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Si ça peut aider quelqu'un, j'ai passé par un tableau intermédiaire.
    Ce n'est pas aussi "propre" que je l'aurai voulu, mais ça a le mérité de fonctionner.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 233
    Points : 336
    Points
    336
    Par défaut
    L'opération mathématique Modulo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If (a - decaLoyer) mod 12 = 0 Then
         'Anniversaire de qualité supérieure !
         'On ajoute +x%
    End If
    "Hope for the best, but prepare for the worst."

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

Discussions similaires

  1. Problème pour remplir un tableau
    Par Mathieu1982 dans le forum Excel
    Réponses: 34
    Dernier message: 11/07/2016, 17h48
  2. Problème pour remplir un tableau de string
    Par Mescalito50 dans le forum C
    Réponses: 5
    Dernier message: 20/05/2011, 18h06
  3. Problème pour remplir un tableau d'objet
    Par bobinouze dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 26/12/2009, 18h55
  4. Problème pour remplir un tableau.
    Par sandball22 dans le forum C
    Réponses: 2
    Dernier message: 02/05/2007, 14h54

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