Bonjour, je travaille actuellement sur la création d'un logiciel d'hydraulique se basant sur la formule de Caquot. Je veux justement appliquer cette formule dans le cas de deux canalisations en série. Dans une de mes formes, j'ai créé un DataGridView1 que je remplie (ValeurST, ValeurL, etc) je le fait pour plusieurs lignes de tableaux (chaque ligne correspond à une branche du réseau de canalisations). Dans une autre forme (Form4), j'ai créé 2 combobox (cbx_branches1 et 2), me permettant de choisir les deux branches que je veux mettre en série. Pour l'instant j'ai réussi à le faire pour 2 branches, les branches 1 et 2.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Public Class Form4
    Private Sub Form4_Load1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cbx_branches1.Items.Add("branche 1")
        cbx_branches1.Items.Add("branche 2")
        cbx_branches1.Items.Add("branche 3")
        cbx_branches1.Items.Add("branche 4")
        cbx_branches1.Items.Add("branche 5")
        cbx_branches1.Items.Add("branche 6")
        cbx_branches1.Items.Add("branche 7")
        cbx_branches1.Items.Add("branche 8")
        cbx_branches1.Items.Add("branche 9")
        cbx_branches1.Items.Add("branche 10")
        cbx_branches1.Items.Add("branche 11")
        cbx_branches1.Items.Add("branche 12")
        cbx_branches1.Items.Add("branche 13")
        cbx_branches1.Items.Add("branche 14")
        cbx_branches1.Items.Add("branche 15")
        cbx_branches1.Items.Add("branche 16")
        cbx_branches1.Items.Add("branche 17")
        cbx_branches1.Items.Add("branche 18")
        cbx_branches1.Items.Add("branche 19")
        cbx_branches1.Items.Add("branche 20")
    End Sub
 
    Private Sub Form4_Load2(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        cbx_branches2.Items.Add("branche 1")
        cbx_branches2.Items.Add("branche 2")
        cbx_branches2.Items.Add("branche 3")
        cbx_branches2.Items.Add("branche 4")
        cbx_branches2.Items.Add("branche 5")
        cbx_branches2.Items.Add("branche 6")
        cbx_branches2.Items.Add("branche 7")
        cbx_branches2.Items.Add("branche 8")
        cbx_branches2.Items.Add("branche 9")
        cbx_branches2.Items.Add("branche 10")
        cbx_branches2.Items.Add("branche 11")
        cbx_branches2.Items.Add("branche 12")
        cbx_branches2.Items.Add("branche 13")
        cbx_branches2.Items.Add("branche 14")
        cbx_branches2.Items.Add("branche 15")
        cbx_branches2.Items.Add("branche 16")
        cbx_branches2.Items.Add("branche 17")
        cbx_branches2.Items.Add("branche 18")
        cbx_branches2.Items.Add("branche 19")
        cbx_branches2.Items.Add("branche 20")
    End Sub
 
    Private Sub cbx_branches1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbx_branches1.SelectedIndexChanged
        If cbx_branches1.Text = "branche 1" Then
            Dim ValeurST1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Surfacetotale").Value)
            Dim ValeurL1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("longueur").Value)
            Dim ValeurCI1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Coefficientimpermeabilisation").Value)
            Dim ValeurP1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("pente").Value)
        End If
        If cbx_branches1.Text = "branche 2" Then
            Dim ValeurST2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Surfacetotale").Value)
            Dim ValeurL2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("longueur").Value)
            Dim ValeurCI2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Coefficientimpermeabilisation").Value)
            Dim ValeurP2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("pente").Value)
        End If
            End Sub
 
    Private Sub but_calcser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but_calcser.Click
        Me.LabelQserie.Text = "Qserie = " & CalculCaquotSerie().ToString("0.0#") & " l/s"
    End Sub
 
    Function CalculCaquotSerie() As Double
        Dim a2 As Double = Convert.ToDouble(Form3.Labela2.Text)
        Dim b2 As Double = Convert.ToDouble(Form3.Labelb2.Text)
        Dim ValeurST1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Surfacetotale").Value)
        Dim ValeurST2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Surfacetotale").Value)
        Dim ValeurL1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("longueur").Value)
        Dim ValeurL2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("longueur").Value)
        Dim ValeurCI1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("Coefficientimpermeabilisation").Value)
        Dim ValeurCI2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("Coefficientimpermeabilisation").Value)
               Dim ValeurP1 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(0).Cells("pente").Value)
        Dim ValeurP2 As Double = Convert.ToDouble(Form3.DataGridView1.Rows(1).Cells("pente").Value)
        Dim ValeurSTserie As Double
        Dim ValeurLserie As Double
        Dim ValeurCIserie As Double
        Dim ValeurPserie As Double
 
        ValeurSTserie = ValeurST1 + ValeurST2
 
        ValeurLserie = ValeurL1 + ValeurL2
 
        ValeurCIserie = (ValeurCI1 * ValeurST1 + ValeurCI2 * ValeurST2) / (ValeurST1 + ValeurST2)
 
        ValeurPserie = ((ValeurL1 + ValeurL2) / ((ValeurL1 / (ValeurP1) ^ (1 / 2)) + (ValeurL2 / (ValeurP2) ^ (1 / 2)))) ^ 2
 
 
        Return ((((a2 / 60) / 6.6) * (0.28 * (ValeurLserie / 100) ^ 0.84 * (ValeurSTserie / 10000) ^ -0.42) ^ -b2) ^ (1 / (1 - 0.287 * b2))) * _
               (ValeurCIserie ^ (1 / (1 - 0.287 * b2))) * _
               ((ValeurPserie / 100) ^ (0.41 * b2 / (1 - 0.287 * b2))) * _
               ((ValeurSTserie / 10000) ^ ((0.95 - 0.507 * b2) / (1 - 0.287 * b2))) * 1000
    End Function
 
End Class

Mais j'aimerais adapter ce calcul à l'ensemble du système et ainsi pouvoir le faire avec toutes les branches existantes (3, 4, 5, etc). Mais je ne vois pas comment faire sans que cela soit très long.

Pouvez-vous m'aider?
Merci.

PS: desolé pour le titre, c'est pas très évident à trouver