Divers Calcul dans une classe
Bonjour à tous,
je rencontre un gros soucis ...
Je souhaite faire plusieurs calcul en entrant juste une donnée ...
Voici ma classe :
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
Public Class pavs
Public Nombre_Habitant_Logement As Single = 4.5
Public prod_journalier_déchet_Ord_men As Single = 6.5
Public prod_journalier_déchet_PCA As Integer = 2
Public prod_journalier_déchet_verre As Integer = 1
Public Marge_jour_Ferie As Integer = 20
Public freq_collecte As Integer = 1
Public vol_borne_verre As Integer = 3000
Public vol_borne_ord_PCA As Integer = 5000
' Variable vide
Public Nombre_Logements As Integer
Public Nb_pavs_ord As Double
Public nb_pavs_PCA As Double
Public nb_pavs_verre As Double
Public NombretotalHab As Single
Public Vol_prod_ord As Double
Public Vol_prod_PCA As Double
Public Vol_prod_verre As Double
'Tous les calculs a faire
Public Function Calcnbhabtotal(ByVal nblgt As Integer) As Single 'Calcule le nombre total d'habitant
Return nblgt * Nombre_Habitant_Logement
End Function
Public Function Calcvolprodord(ByVal nbtotalhb As Single) As Double ' Calcule la production les ordures ménagés total
Return Math.Ceiling(prod_journalier_déchet_Ord_men * (1 + Marge_jour_Ferie / 100) * 7 * nbtotalhb) / freq_collecte
End Function
Public Function CalcvolprodPCA(ByVal nbtotalhb As Single) As Double ' Calcule la production les PCA total
Return Math.Ceiling(prod_journalier_déchet_PCA * (1 + Marge_jour_Ferie / 100) * 7 * nbtotalhb) / freq_collecte
End Function
Public Function Calcvolprodverre(ByVal nbtotalhb As Single) As Double ' Calcule la production de verre total
Return Math.Ceiling(prod_journalier_déchet_PCA * (1 + Marge_jour_Ferie / 100) * 7 * nbtotalhb) / freq_collecte
End Function
Public Function Calcnbpavord() As Double ' Calcule le nombre de PAVs pour les ordures ménagés
Return Math.Ceiling(Vol_prod_ord / Vol_prod_ord)
End Function
Public Function CalcnbPCA() As Double ' Calcule le nombre de PAVs pour le PCA
Return Math.Ceiling(Vol_prod_PCA / vol_borne_ord_PCA)
End Function
Public Function Calcnbverre() As Double ' Calcule le nombre de PAVs pour le verre
Return Math.Ceiling(Vol_prod_verre / vol_borne_verre)
End Function
End Class |
et ma form
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Imports Clsspavs
Public Class DimPAVs
Dim Pavs As New Clsspavs.pavs
Private Sub Button_Calculer_Click(sender As Object, e As EventArgs) Handles Button_Calculer.Click
Lestextboxs() ' Affiche les résultat des toutes les textboxs
End Sub
Private Sub Lestextboxs()
Pavs.Nombre_Logements = CInt(TextBox_Nblgts1.Text) ' Récupere le nombre de longements
'TextBox_Nblgts1.Text = TextBox_Nblgts1.Text & " Lgts" 'Affiche le nombre de logements
TextBox_Nblgts2.Text = Pavs.Nombre_Logements & " Lgts" 'Affiche le nombre de logements
TextBox_Nblgts3.Text = Pavs.Nombre_Logements & " Lgts" 'Affiche le nombre de logements
TextBoxNbhbLgts1.Text = Pavs.Nombre_Habitant_Logement & " Hbts" 'Affiche le nombre d'habitants par logements
TextBoxNbhbLgts2.Text = Pavs.Nombre_Habitant_Logement & " Hbts" 'Affiche le nombre d'habitants par logements
TextBoxNbhbLgts3.Text = Pavs.Nombre_Habitant_Logement & " Hbts" 'Affiche le nombre d'habitants par logements
TextBox_NbtlHbts1.Text = CStr(Pavs.Calcnbhabtotal(Pavs.Nombre_Logements)) & " Hbts" 'Affiche le nombre d'habitants
TextBox_NbtlHbts2.Text = CStr(Pavs.Calcnbhabtotal(Pavs.Nombre_Logements)) & " Hbts" 'Affiche le nombre d'habitants
TextBox_NbtlHbts3.Text = CStr(Pavs.Calcnbhabtotal(Pavs.Nombre_Logements)) & " Hbts" 'Affiche le nombre d'habitants
TextBox_PdctDchHb1.Text = CStr(Pavs.prod_journalier_déchet_Ord_men) & " Litres" 'Affiche la production d'ordure ménagé a la journée
TextBox_PdctDchHb2.Text = CStr(Pavs.prod_journalier_déchet_PCA) & " Litres" 'Affiche la production de PCA a la journée
TextBox_PdctDchHb3.Text = CStr(Pavs.prod_journalier_déchet_verre) & " Litres" 'Affiche la production de verre a la journée
TextBox_MgJrFr1.Text = CStr(Pavs.Marge_jour_Ferie) & "%" ' Affiche la marge des jours ferriés en ordures ménagers
TextBox_MgJrFr2.Text = CStr(Pavs.Marge_jour_Ferie) & "%" ' Affiche la marge des jours ferriés en PCA
TextBox_MgJrFr3.Text = CStr(Pavs.Marge_jour_Ferie) & "%" ' Affiche la marge des jours ferriés en verres
TextBox_JrCltHbd1.Text = CStr(Pavs.freq_collecte) & " par semaine" ' Affiche la fréquence hebdo en ordures ménagers
TextBox_JrCltHbd2.Text = CStr(Pavs.freq_collecte) & " par semaine" ' Affiche la fréquence hebdo en PCA
TextBox_JrCltHbd3.Text = CStr(Pavs.freq_collecte) & " par semaine" ' Affiche la fréquence hebdo en verres
TextBox_VolNc1.Text = Pavs.Calcvolprodord(Pavs.Calcnbhabtotal(Pavs.Nombre_Logements)) ' Affiche le litrage hebdo de tous les hbts en ordures ménagers
'TextBox_VolNc2.Text ' Affiche le litrage hebdo de tous les hbts en PCA
'TextBox_VolNc1.Text' Affiche le litrage hebdo de tous les hbts en overre
TextBox_VolBrnPrec1.Text = CStr(Pavs.vol_borne_ord_PCA) & " litres" ' Affiche le litrage d'un conteneurs max en ordures ménagers
TextBox_VolBrnPrec2.Text = CStr(Pavs.vol_borne_ord_PCA) & " litres" ' Affiche le litrage d'un conteneurs max en PCA
TextBox_VolBrnPrec3.Text = CStr(Pavs.vol_borne_verre) & " litres" ' Affiche le litrage d'un conteneurs max en verres
TextBox_Nbcont1.Text = CStr(Pavs.Nb_pavs_ord) ' Affiche le nombre de PAVS pour ordure ménagers
TextBox_Nbcont2.Text = CStr(Pavs.nb_pavs_PCA) ' Affiche le nombre de PAVS pour PCA
TextBox_Nbcont3.Text = CStr(Pavs.nb_pavs_verre) ' Affiche le nombre de PAVS pour verres
End Sub
Private Sub Button_Femer_Click(sender As Object, e As EventArgs) Handles Button_Femer.Click
Me.Close()
Page_SemOutils.Show()
End Sub
End Class |
Pour faire simple, je rentre le nombre de logement dans ma form. Celle ci est récupéré dans ma classe "Class pavs"
elle fait un premier calcul :
Code:
1 2 3
| Public Function Calcnbhabtotal(ByVal nblgt As Integer) As Single 'Calcule le nombre total d'habitant
Return nblgt * Nombre_Habitant_Logement
End Function |
pour l'instant tout va bien.
A partir de maintenant tout se complique : Ayant récupérer le nombre d'habitant total, je souhaite calculer en litage la produire d'ordure ménager a la journée.
Code:
1 2 3 4
|
Public Function Calcvolprodord(ByVal nbtotalhb As Single) As Double ' Calcule la production les ordures ménagés total
Return Math.Ceiling(prod_journalier_déchet_Ord_men * (1 + Marge_jour_Ferie / 100) * 7 * nbtotalhb) / freq_collecte
End Function |
J'ai fait comme cela pour faire le calcul :
Code:
1 2
|
TextBox_VolNc1.Text = Pavs.Calcvolprodord(Pavs.Calcnbhabtotal(Pavs.Nombre_Logements)) |
Ce qui veux dire que je lance le calcul de production mais juste avant il recalcule une deuxième fois le nombre total d'habitant...
y a t'il un moyen d'éviter ceci ? calculer 2 fois la meme chose?
Cordialement