Bonjour à tous,

je rencontre un gros soucis ...

Je souhaite faire plusieurs calcul en entrant juste une donnée ...

Voici ma classe :

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
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
 
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 : 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
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 : 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
J'ai fait comme cela pour faire le calcul :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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