Bonjour à tous,
je rencontre un gros soucis ...
Je souhaite faire plusieurs calcul en entrant juste une donnée ...
Voici ma classe :
et ma form
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
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
Pour faire simple, je rentre le nombre de logement dans ma form. Celle ci est récupéré dans ma classe "Class pavs"
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
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
elle fait un premier calcul :
pour l'instant tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
J'ai fait comme cela pour faire le calcul :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 TextBox_VolNc1.Text = Pavs.Calcvolprodord(Pavs.Calcnbhabtotal(Pavs.Nombre_Logements))
y a t'il un moyen d'éviter ceci ? calculer 2 fois la meme chose?
Cordialement
Partager