Public Class frmExigence

#Region "Gestion des Textbox"
    Private Sub TxtKdg_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtKdg.Enter
        TxtKdg.SelectionStart = 0
        TxtKdg.SelectionLength = TxtKdg.Text.Length
    End Sub

    Private Sub TxtKdg_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtKdg.KeyPress
        Call Gestion_Keypress(e, TxtKdg, True, False)
    End Sub

    Private Sub TextFc_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextFc.Enter
        TextFc.SelectionStart = 0
        TextFc.SelectionLength = TextFc.Text.Length
    End Sub

    Private Sub TextFc_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextFc.KeyPress
        Call Gestion_Keypress(e, TextFc, True, True)
    End Sub
    Private Sub TxtFactMajorationFc28_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtFactMajorationFc28.Enter
        TxtFactMajorationFc28.SelectionStart = 0
        TxtFactMajorationFc28.SelectionLength = TextFc.Text.Length
    End Sub

    Private Sub TxtFactMajorationFc28_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFactMajorationFc28.KeyPress
        Call Gestion_Keypress(e, TxtFactMajorationFc28, True, False)
    End Sub
    Private Sub TxtFcm_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFcm.KeyPress
        Call Gestion_Keypress(e, TxtFcm, True, True)
    End Sub

#End Region

#Region "Gestion des boutons d'aide"
    Private Sub BtnHlpAmendementENS_Click(sender As Object, e As EventArgs) Handles BtnHlpTabKdg.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 24
        frm1.Show()
    End Sub
    Private Sub BtnHlpTabE_Click(sender As Object, e As EventArgs) Handles BtnHlpTabE.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 37
        frm1.Show()
    End Sub
    Private Sub BtnHlpMajPateCiment_Click(sender As Object, e As EventArgs) Handles BtnHlpMajPateCiment.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 23
        frm1.Show()
    End Sub
    Private Sub BtnHlpOuvrabilite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnHlpOuvrabilite.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 2
        frm1.Show()
    End Sub
    Private Sub BtnHlpDreuxGorisseCompPonderalHumide_Click_1(sender As Object, e As EventArgs) Handles BtnHlpDreuxGorisseCompPonderalHumide.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 3
        frm1.Show()
    End Sub
    Private Sub BtnHlpFck_Click(sender As Object, e As EventArgs) Handles BtnHlpFck.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 9
        frm1.Show()
    End Sub
    Private Sub BtnHlpMajCoefFcm_Click(sender As Object, e As EventArgs) Handles BtnHlpMajCoefFcm.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 8
        frm1.Show()
    End Sub
    Private Sub BtnHlpVibration_Click(sender As Object, e As EventArgs) Handles BtnHlpVibration.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 12
        frm1.Show()
    End Sub
    Private Sub BtnHlpModeFabrication_Click(sender As Object, e As EventArgs) Handles BtnHlpModeFabrication.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 11
        frm1.Show()
    End Sub
    Private Sub BtnHlpTransport_Click(sender As Object, e As EventArgs) Handles BtnHlpTransport.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 17
        frm1.Show()
    End Sub

    Private Sub BtnHlpTemperature_Click(sender As Object, e As EventArgs) Handles BtnHlpTemperature.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 18
        frm1.Show()
    End Sub
    Private Sub BtnHlpExigenceEN206_Click(sender As Object, e As EventArgs) Handles BtnHlpExigenceEN206.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 22
        frm1.Show()
    End Sub
    Private Sub BtnHlpBaronCorrectionYA_Click(sender As Object, e As EventArgs) Handles BtnHlpBaronCorrectionYA.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 33
        frm1.Show()
    End Sub
#End Region

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Width = 783 : Me.Height = 648
        Call Affichage()
    End Sub

    ''' <summary>Affichage des données sur le formulaire
    ''' </summary>
    Private Sub Affichage()
        With Beton
            '-> Méthode de formulation choisie
            Select Case .Formulation
                Case 1 'Dreux Gorisse
                    RbtnDreuxGorisse.Checked = True
                Case 2 'Baron - Ollivier
                    RbtnBaronOllivier.Checked = True
            End Select

            '-> prise en compte des valeurs limites des composants de la formulation imposé par l'EN206-1
            Select Case .EN206
                Case 0
                    ChkbExigenceEN206.Checked = False
                Case 1, 2
                    ChkbExigenceEN206.Checked = True
            End Select

            '-> Résistance caractéristique du béton
            Select Case .EN206_Fc
                Case True
                    RbtnEn206.Checked = True
                    Select Case .Fck
                        Case 8
                            CbFc28.Text = CStr(CbFc28.Items(0))
                        Case 12
                            CbFc28.Text = CStr(CbFc28.Items(1))
                        Case 16
                            CbFc28.Text = CStr(CbFc28.Items(2))
                        Case 20
                            CbFc28.Text = CStr(CbFc28.Items(3))
                        Case 25
                            CbFc28.Text = CStr(CbFc28.Items(4))
                        Case 30
                            CbFc28.Text = CStr(CbFc28.Items(5))
                        Case 35
                            CbFc28.Text = CStr(CbFc28.Items(6))
                        Case 40
                            CbFc28.Text = CStr(CbFc28.Items(7))
                        Case 45
                            CbFc28.Text = CStr(CbFc28.Items(8))
                        Case 50
                            CbFc28.Text = CStr(CbFc28.Items(9))
                        Case Else
                            RbtnFc.Checked = True
                            TextFc.Text = .Fck.ToString("#0")
                            'Case 55
                            '    CbFc28.Text = CStr(CbFc28.Items(10))
                    End Select
                Case False
                    RbtnFc.Checked = True
                    TextFc.Text = .Fck.ToString("#0")
            End Select

            '-> Composition pondérale humide
            If .CompPondHumide = True Then ChkbCompoPonderaleHumide.Checked = True Else ChkbCompoPonderaleHumide.Checked = False
            '-> Composants granulaires
            Select Case .NbSable
                Case 1, 2
                    NudSable.Value = .NbSable 'Sable.Count
                Case Else
                    NudSable.Value = 1
            End Select
            Select Case .NbGravillon
                Case 1, 2
                    NudGravillon.Value = Gravillon.Count
                Case Else
                    NudGravillon.Value = 1
            End Select


            'Eléments propre à chaque formulation
            Select Case .Formulation
                Case 1 'Dreux Gorisse
                    '-> Choix du tableau Kdg
                    LblCoefGranulaire.Visible = True : LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Visible = True : BtnHlpTabKdg.Left = 399
                    CbTabKdg.Text = CbTabKdg.Items(.Dreux_TabKdg - 1).ToString
                    If .Dreux_TabKdg = 4 Then
                        LblKdg.Visible = True : TxtKdg.Visible = True : BtnHlpTabKdg.Left = 323
                        TxtKdg.Text = .Kg.ToString("#0.00")
                    End If
                    '-> Choix du tableau Majoration/minoration Eau
                    LblQtiteEau.Visible = True
                    CbTabE.Text = CbTabE.Items(.Dreux_TabE - 1).ToString
                    '-> Amendement Maintien du rapport C/E
                    If .Dreux_MajPateCiment = True Then ChkbMajPateCiment.Checked = True Else ChkbMajPateCiment.Checked = False
                    '-> Coefficient de majoration pour détermination de fcm
                    TxtFactMajorationFc28.Text = .FcmCoef.ToString("#0.00")
                    '-> Ouvrabilité
                    CbConsistance.Items.Clear()
                    CbConsistance.Items.AddRange(New String() {"1", "1,5", "2", "2,5", "3", "3,5", "4", "4,5", "5", "5,5", "6", "6,5", "7", "7,5", "8", "8,5", "9", "9,5", "10", "10,5", "11", "11,5", "12"})
                    CbConsistance.Text = CbConsistance.Items.Item(.Slump - 1).ToString()
                    LblOuvrabilite_cm.Visible = True
                    '-> béton pompé dans le cadre de la méthode Dreux Gorisse
                    Select Case .Pompe
                        Case True
                            ChkbPompe_Dreux.Checked = True
                        Case False
                            ChkbPompe_Dreux.Checked = False
                    End Select
                    'Mode de vibration
                    If .Vibration = 1 Then RbtnVibrationLeger.Checked = True
                    If .Vibration = 2 Then RbtnVibrationFaible.Checked = True
                    If .Vibration = 3 Then RbtnVibrationNormale.Checked = True
                    If .Vibration = 4 Then RbtnVibrationPuissante.Checked = True
                Case 2 'Baron - Ollivier
                    LblCoefGranulaire.Visible = False : CbTabKdg.Visible = False : LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Visible = False
                    LblQtiteEau.Visible = False : CbTabE.Visible = False
                    '-> Ouvrabilité
                    CbConsistance.Items.Clear()
                    CbConsistance.Items.AddRange(New String() {"S1", "S2", "S3", "S4"})
                    If .Slump < 5 Then
                        CbConsistance.Text = CbConsistance.Items.Item(.Slump - 1).ToString()
                    Else
                        .Slump = 2
                        CbConsistance.Text = CbConsistance.Items.Item(.Slump - 1).ToString() 'S2
                        MessageBox.Show("Affichage de la valeur de consistance par défaut, la valeur de la variable Slump > 4" & Environment.NewLine & "A corriger si nécessaire", "Formulaire Exigence - Affichage des données", MessageBoxButtons.OK, MessageBoxIcon.Information)
                    End If
                    LblOuvrabilite_cm.Visible = False
                    '-> Température du béton frais
                    TBtemperature.Value = .Temperature
                    LblTemp.Text = "Température du béton frais : " & TBtemperature.Value & "°"
                    '-> Délai de transport et mise en oeuvre du béton
                    Select Case .Delai
                        Case 0 'moins de 30 minutes
                            Rbtn30moins.Checked = True
                        Case 1 'plus de 30 minutes
                            Rbtn30Plus.Checked = True
                    End Select
                    '-> Mode de fabrication
                    Select Case .Fabrication
                        Case 1
                            RbtnCentrale.Checked = True
                        Case 2
                            RbtnChantier.Checked = True
                        Case 3
                            RbtnFcm.Checked = True
                            TxtFcm.Text = .Fcm.ToString("#0")
                    End Select
                    '-> béton pompé dans le cadre de la méthode Baron - Ollivier
                    Select Case .Pompe
                        Case True
                            ChkbPompe.Checked = True
                        Case False
                            ChkbPompe.Checked = False
                    End Select
                    '-> Densité de ferraillage dans le cadre de la méthode Baron - Ollivier
                    Select Case .DensiteFerraillage
                        Case 0
                            RbtnNonArme.Checked = True
                        Case 1
                            RbtnMoins80.Checked = True
                        Case 2
                            RbtnPlus80.Checked = True
                    End Select
                    '-> correction ordonnée suivant mf dans le cadre de la méthode Baron - Ollivier
                    If .Correction_Ks = True Then ChkbBar_Olliv_ModulFinesse.Checked = True Else ChkbBar_Olliv_ModulFinesse.Checked = False
            End Select
        End With

    End Sub

    ''' <summary>Lecture des données figurant sur le formulaire</summary>
    ''' <param name="Verif">renvoie FALSE si erreur dans la lecture des données</param>
    Private Sub Lecture(ByRef Verif As Boolean)
        With Beton
            '-> Méthode de formulation choisie
            If RbtnDreuxGorisse.Checked = True Then .Formulation = 1
            If RbtnBaronOllivier.Checked = True Then .Formulation = 2

            '-> Résistance caractéristique du béton
            If RbtnEn206.Checked = True Then
                .EN206_Fc = True
                Select Case CbFc28.Text
                    Case "C8/10"
                        .Fck = 8
                    Case "C12/15"
                        .Fck = 12
                    Case "C16/20"
                        .Fck = 16
                    Case "C20/25"
                        .Fck = 20
                    Case "C25/30"
                        .Fck = 25
                    Case "C30/37"
                        .Fck = 30
                    Case "C35/45"
                        .Fck = 35
                    Case "C40/50"
                        .Fck = 40
                    Case "C45/55"
                        .Fck = 45
                    Case "C50/60"
                        .Fck = 50
                    Case "C55/67"
                        .Fck = 55
                    Case Else
                        EP1.SetError(CbFc28, "Indiquez la valeur numérique de fc.")
                        MessageBox.Show("Vous avez oublié de renseigner la résistance caractéristique visée", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                        Verif = False
                End Select
            Else
                .EN206_Fc = False
                If gestionderreur(TextFc, EP1) = True Then .Fck = CInt(TextFc.Text) Else Verif = False
            End If


            '-> Composition pondérale humide
            If ChkbCompoPonderaleHumide.Checked = True Then .CompPondHumide = True Else .CompPondHumide = False

            '-> Composants granulaires
            If NudSable.Value <> 1 And NudSable.Value <> 2 Then
                EP1.SetError(NudSable, "La valeur doit être égale à 1 ou 2")
                MessageBox.Show("Erreur dans la valeur du nombre de sables", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                Verif = False
            Else
                Beton.NbSable = CInt(NudSable.Value)
                Select Case .NbSable
                    Case 1 'Beton.NbSable = 1
                        Select Case Sable.Count
                            Case 0 'aucun sable
                                Dim Sable1 As New clsSable
                                Sable.Add(Sable1) 'le Sable n°1 est initié
                            Case 1'1 sable
                                  'rien à faire
                            Case 2 '2 sables
                                Dim Result As DialogResult
                                Result = MessageBox.Show("Attention :" & Environment.NewLine & "Votre formulation comporte 2 sables et en continuant, vous allez supprimer le 2ième sable." & Environment.NewLine & "Voulez-vous continuer(Oui/Non) ?",
                                            "Formulaire avec 1 seul sable", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
                                If Result = DialogResult.No Then Exit Sub
                                Sable.RemoveAt(1) 'le sable n°2 est supprimé de la composition
                        End Select
                    Case 2   'Beton.NbSable = 2
                        Select Case Sable.Count
                            Case 0 'aucun sable
                                Dim Sable1 As New clsSable
                                Sable.Add(Sable1) 'le Sable n°1 est initié
                                Dim Sable2 As New clsSable
                                Sable.Add(Sable2) 'le Sable n°2 est initié
                            Case 1 '1 sable
                                Dim Sable2 As New clsSable
                                Sable.Add(Sable2) 'le Sable n°2 est initié
                            Case 2 '2 sables
                                'rien à faire
                        End Select
                End Select
            End If
            If NudGravillon.Value <> 1 And NudGravillon.Value <> 2 Then
                EP1.SetError(NudGravillon, "La valeur doit être égale à 1 ou 2")
                MessageBox.Show("Erreur dans la valeur du nombre de Gravillon", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                Verif = False
            Else
                Beton.NbGravillon = CInt(NudGravillon.Value)
                Select Case .NbGravillon
                    Case 1 'Beton.NbGravillon = 1
                        Select Case Gravillon.Count
                            Case 0 'aucun Gravillon
                                Dim Gravillon1 As New clsGravillon
                                Gravillon.Add(Gravillon1) 'le Gravillon n°1 est initié
                            Case 1'1 Gravillon
                                  'rien à faire
                            Case 2 '2 Gravillons
                                Dim Result As DialogResult
                                Result = MessageBox.Show("Attention :" & Environment.NewLine & "Votre formulation comporte 2 Gravillons et en continuant, vous allez supprimer le 2ième Gravillon." & Environment.NewLine & "Voulez-vous continuer(Oui/Non) ?",
                                            "Formulaire avec 1 seul Gravillon", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
                                If Result = DialogResult.No Then Exit Sub
                                Gravillon.RemoveAt(1) 'le Gravillon n°2 est supprimé de la composition
                        End Select
                    Case 2   'Beton.NbGravillon = 2
                        Select Case Gravillon.Count
                            Case 0 'aucun Gravillon
                                Dim Gravillon1 As New clsGravillon
                                Gravillon.Add(Gravillon1) 'le Gravillon n°1 est initié
                                Dim Gravillon2 As New clsGravillon
                                Gravillon.Add(Gravillon2) 'le Gravillon n°2 est initié
                            Case 1 '1 Gravillon
                                Dim Gravillon2 As New clsGravillon
                                Gravillon.Add(Gravillon2) 'le Gravillon n°2 est initié
                            Case 2 '2 Gravillons
                                'rien à faire
                        End Select
                End Select
            End If

            '-> prise en compte des valeurs limites des composants de la formulation imposé par l'EN206-1
            If ChkbExigenceEN206.Checked = False Then
                .EN206 = 0 ': .EN206_Durabilite = False
            Else
                'dans le cas ou le projeteur a coché mais ne s'est pas rendu dans le formulaire Classe d'exposition pour définir l'EN 206-1 en base réglementaire.
                If .EN206 <> 1 AndAlso .EN206 <> 2 Then '.EN206_Durabilite = True
                    EP1.SetError(ChkbExigenceEN206, "La base réglementaire EN206-1 n'a pas été définie.")
                    MessageBox.Show("Vous ne vous êtes pas rendu dans le formulaire Classe d'exposition pour indiquer la base réglementaire EN206-1 sur laquelle vous contrôlez la formulation.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                    Verif = False
                End If
            End If

            '-> suivant la formulation
            Select Case .Formulation
                Case 1 'Méthode Dreux-Gorisse
                    '-> Choix du tableau Kdg
                    Select Case CbTabKdg.SelectedIndex
                        Case 0 'Tab Dreux Gorisse
                            .Dreux_TabKdg = 1
                        Case 1 'Tab ENS
                            .Dreux_TabKdg = 2
                        Case 2 'Tab Compose
                            .Dreux_TabKdg = 3
                        Case 3 'Kdg direct
                            .Dreux_TabKdg = 4
                            If gestionderreur(TxtKdg, EP1) = True Then
                                Dim kg As Double
                                kg = CDbl(TxtKdg.Text)
                                If kg < 0.35 OrElse kg > 0.65 Then
                                    EP1.SetError(TxtKdg, "Pb de lecture du coefficient Kdg")
                                    MessageBox.Show("La valeur de Kg doit être comprise entre 0,35 et 0,65.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                                    Verif = False
                                Else
                                    .Kg = kg
                                End If
                            Else
                                EP1.SetError(TxtKdg, "Pb de lecture du coefficient Kdg")
                                MessageBox.Show("Pb de lecture du coefficient Kdg", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                                Verif = False
                            End If
                    End Select
                    '-> Choix du tableau Majoration/minoration Eau
                    Select Case CbTabE.SelectedIndex
                        Case 0 'Tab Dreux Gorisse
                            .Dreux_TabE = 1
                        Case 1 'Tab ENS
                            .Dreux_TabE = 2
                        Case 2 'Tab Compose
                            .Dreux_TabE = 3
                    End Select
                    '-> Amendement Maintien du rapport C/E
                    If ChkbMajPateCiment.Checked = True Then .Dreux_MajPateCiment = True Else .Dreux_MajPateCiment = False
                    'Coefficient de majoration pour détermination de fcm
                    If gestionderreur(TxtFactMajorationFc28, EP1) = True Then .FcmCoef = CDbl(TxtFactMajorationFc28.Text) Else Verif = False
                    '-> Ouvrabilité
                    If gestionderreurCB(CbConsistance, EP1) = True Then .Slump = CbConsistance.SelectedIndex + 1 Else Verif = False
                    '-> béton pompé dans le cadre de la méthode Dreux Gorisse
                    If ChkbPompe_Dreux.Checked = True Then .Pompe = True Else .Pompe = False
                    'Mode de vibration
                    If RbtnVibrationLeger.Checked = True Then .Vibration = 1
                    If RbtnVibrationFaible.Checked = True Then .Vibration = 2
                    If RbtnVibrationNormale.Checked = True Then .Vibration = 3
                    If RbtnVibrationPuissante.Checked = True Then .Vibration = 4

                Case 2 'Méthode Baron - Ollivier
                    '-> béton pompé dans le cadre de la méthode Baron - Ollivier
                    If ChkbPompe.Checked = True Then .Pompe = True Else .Pompe = False
                    '-> Ouvrabilité
                    Select Case CbConsistance.Text
                        Case "S1"
                            .Slump = 1
                        Case "S2"
                            .Slump = 2
                        Case "S3"
                            .Slump = 3
                        Case "S4"
                            .Slump = 4
                        Case Else
                            EP1.SetError(CbConsistance, "Indiquez la valeur de la consistance")
                            MessageBox.Show("Vous avez oublié de renseigner la valeur de la consistance", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                            Verif = False
                    End Select
                    '-> Température du béton frais
                    .Temperature = CInt(TBtemperature.Value)
                    '-> Délai de transport et mise en oeuvre du béton
                    If Rbtn30moins.Checked = True Then .Delai = 0
                    If Rbtn30Plus.Checked = True Then .Delai = 1

                    '-> Mode de fabrication
                    If RbtnCentrale.Checked = True Then .Fabrication = 1
                    If RbtnChantier.Checked = True Then .Fabrication = 2
                    If RbtnFcm.Checked = True Then
                        .Fabrication = 3
                        If gestionderreur(TxtFcm, EP1) = True Then .Fcm = CInt(TxtFcm.Text) Else Verif = False
                    End If
                    If RbtnCentrale.Checked = False AndAlso Rbtn30Plus.Checked = False AndAlso RbtnFcm.Checked = False Then
                        EP1.SetError(GBFabrication, "Indiquez le délai de transport et mise en oeuvre")
                        MessageBox.Show("Vous avez oublié de renseigner le délai de transport et mise en oeuvre", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                        Verif = False
                    End If
                    '-> béton pompé dans le cadre de la méthode Baron - Ollivier
                    If ChkbPompe.Checked = True Then .Pompe = True Else .Pompe = False
                    '-> Densité de ferraillage dans le cadre de la méthode Baron - Ollivier
                    If RbtnNonArme.Checked = True Then .DensiteFerraillage = 0
                    If RbtnMoins80.Checked = True Then .DensiteFerraillage = 1
                    If RbtnPlus80.Checked = True Then .DensiteFerraillage = 2
                    If RbtnNonArme.Checked = False AndAlso RbtnMoins80.Checked = False AndAlso RbtnPlus80.Checked = False Then
                        EP1.SetError(GbGranulo, "Indiquez la densité de ferraillage de l'ouvrage.")
                        MessageBox.Show("Vous avez oublié de renseigner la densité de ferraillage de l'ouvrage.", Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                        Verif = False
                    End If
                    '-> correction ordonnée suivant mf dans le cadre de la méthode Baron - Ollivier
                    If ChkbBar_Olliv_ModulFinesse.Checked = True Then .Correction_Ks = True Else .Correction_Ks = False
                Case 3

            End Select
        End With
    End Sub

    ''' <summary>Module de vérification des données renseignées dans le formulaire</summary>
    ''' <param name="Verif">renvoie FALSE si erreur dans les données</param>
    Private Sub Verification(ByRef Verif As Boolean)
        Dim msg As String = String.Empty
        With Beton
            If .Formulation = 1 Then
                If .FcmCoef < 1 Then
                    EP1.SetError(TxtFactMajorationFc28, "Valeur du coefficient insuffisante")
                    MessageBox.Show("La valeur du coefficient de majoration doit être supérieure à 1.", "Module de vérification de cohérence des données", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                    Verif = False
                ElseIf .FcmCoef > 1.5 Then
                    Dim result As Integer
                    result = MessageBox.Show("La valeur du coefficient de majoration entre la résistance caractéristique et la résistance moyenne à la compression du béton, est égale à " & .FcmCoef.ToString("#0.00") &
                                             " supérieure à 1,5 soit plus de 50% de majoration." & Environment.NewLine & "Souhaitez-vous continuer avec cette valeur ?",
                                             "Module de vérification de cohérence des données", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
                    If result = DialogResult.Yes Then 'Yes a été cliqué, le calcul continue
                        msg = "La valeur du coefficient de majoration entre la résistance caractéristique et la résistance moyenne à la compression du béton, est égale à " & .FcmCoef.ToString("#0.00") & " supérieure à 1,5 soit plus de 50% de majoration." & Environment.NewLine
                        Aff.msg_Avertiss.Add(msg)
                    Else
                        Verif = False
                    End If
                End If
            End If
            If .Fck > 50 Then
                Dim result As Integer
                result = MessageBox.Show("La valeur de la résistance caractéristique à la compression du béton, est égale à " & .Fck.ToString("#0.00") & " supérieure à celle d'un béton courant." & Environment.NewLine & "Souhaitez-vous continuer avec cette valeur ?",
                                         "Module de vérification de cohérence des données", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1)
                If result = DialogResult.Yes Then 'Yes a été cliqué, le calcul continue
                    msg = "La valeur de la résistance caractéristique à la compression du béton, est égale à " & .Fck.ToString("#0.00") & " supérieure à celle d'un béton courant." & Environment.NewLine
                    Aff.msg_Avertiss.Add(msg)
                Else
                    Verif = False
                End If
            End If
            If .Formulation = 2 Then
                If .Fabrication < 1 OrElse .Fabrication > 3 Then
                    EP1.SetError(GBFabrication, "Indiquez le mode de fabrication")
                    MessageBox.Show("Vous avez oublié de renseigner le mode de fabrication du béton", "Module de vérification de cohérence des données", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                    Verif = False
                End If
            End If

        End With

    End Sub

    Private Sub BtnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnOK.Click
        Dim verif As Boolean
        verif = True
        Call Lecture(verif)
        If verif = False Then Exit Sub
        Call Verification(verif)
        If verif = False Then Exit Sub
        Me.Dispose()
        Me.Finalize()
    End Sub

    Private Sub BtnAnnuler_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAnnuler.Click
        Me.Dispose()
        Me.Finalize()
    End Sub


    Private Sub TBtemperature_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TBtemperature.Scroll
        LblTemp.Text = "Température du béton frais : " & TBtemperature.Value & "°"
    End Sub

    Private Sub RbtnEn206_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RbtnEn206.CheckedChanged
        If RbtnEn206.Checked = True Then
            TextFc.Visible = False
            CbFc28.Visible = True : CbFc28.Focus()
        Else
            CbFc28.Visible = False
        End If
    End Sub

    Private Sub RbtnFc_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RbtnFc.CheckedChanged
        If RbtnFc.Checked = True Then
            CbFc28.Visible = False
            TextFc.Visible = True : TextFc.Focus()
        Else
            TextFc.Visible = False
        End If
    End Sub

    Private Sub RbtnDreuxGorisse_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnDreuxGorisse.CheckedChanged
        If RbtnDreuxGorisse.Checked = True Then
            Me.Width = 783 : Me.Height = 560
            CbTabKdg.Visible = True : LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Left = 399 : BtnHlpTabKdg.Visible = True
            LblQtiteEau.Visible = True : LblCoefGranulaire.Visible = True
            If CbTabKdg.Text = CbTabKdg.Items(3).ToString Then
                LblKdg.Visible = True : TxtKdg.Visible = True : BtnHlpTabKdg.Left = 499
            End If
            CbTabE.Visible = True : BtnHlpTabE.Visible = True
            ChkbMajPateCiment.Visible = Visible : BtnHlpMajPateCiment.Visible = True
            LblCoefMajorationFc.Visible = True : BtnHlpMajCoefFcm.Visible = True : TxtFactMajorationFc28.Visible = True
            ChkbPompe_Dreux.Visible = True
            GBFabrication.Visible = False
            GbVibration.Visible = True : GbVibration.Left = 24 : GbVibration.Top = 296
            'Ouvrabilité
            CbConsistance.Items.Clear()
            CbConsistance.Items.AddRange(New String() {"1", "1,5", "2", "2,5", "3", "3,5", "4", "4,5", "5", "5,5", "6", "6,5", "7", "7,5", "8", "8,5", "9", "9,5", "10", "10,5", "11", "11,5", "12"})
            'test de la méthode sur laquelle travaillait le projeteur
            If Beton.Formulation = 2 Then
                'ce qui signifie que le projeteur vient de passer de la méthode Baron-Ollivier à la méthode Dreux-Gorisse
                'Affichage de la valeur par défaut dans le logiciel soit CbConsistance.Text = "8"
                Beton.Slump = 15
                CbConsistance.Text = CbConsistance.Items.Item(Beton.Slump - 1).ToString()
                LblOuvrabilite_cm.Visible = True
            Else
                'ce qui signifie que le projeteur était déjà avec la méthode Dreux-Gorisse
                CbConsistance.Text = CbConsistance.Items.Item(Beton.Slump - 1).ToString()
                LblOuvrabilite_cm.Visible = True
            End If
            '
            GBMiseenOeuvre.Visible = False
            LblTemp.Visible = False : TBtemperature.Visible = False : BtnHlpTemperature.Visible = False 'Température
            GbGranulo.Visible = False
            'composants
            LblComposant.Top = 347 : LblComposant.Left = 21
            LblSables.Top = 380 : LblSables.Left = 36
            NudSable.Top = 376 : NudSable.Left = 146
            LblGravillons.Top = 380 : LblGravillons.Left = 210
            NudGravillon.Top = 376 : NudGravillon.Left = 330
            ChkbCompoPonderaleHumide.Top = 379 : ChkbCompoPonderaleHumide.Left = 455 : BtnHlpDreuxGorisseCompPonderalHumide.Top = 374 : BtnHlpDreuxGorisseCompPonderalHumide.Left = 632
            'Classes expo
            ChkbExigenceEN206.Top = 136 : ChkbExigenceEN206.Left = 25
            BtnHlpExigenceEN206.Top = 132 : BtnHlpExigenceEN206.Left = 273
            'btn OK et Annuler
            BtnOK.Top = 490 : BtnOK.Left = 289
            BtnAnnuler.Top = 490 : BtnAnnuler.Left = 370
        End If
    End Sub

    Private Sub RbtnBaronOllivier_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnBaronOllivier.CheckedChanged
        If RbtnBaronOllivier.Checked = True Then
            Dim Message As Integer = 0 'Pour éviter l'effet de blocage de l'affichage
            Me.Width = 783 : Me.Height = 767
            CbTabKdg.Visible = False : LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Visible = False
            LblQtiteEau.Visible = False : LblCoefGranulaire.Visible = False
            CbTabE.Visible = False : BtnHlpTabE.Visible = False
            ChkbMajPateCiment.Visible = False : BtnHlpMajPateCiment.Visible = False
            LblCoefMajorationFc.Visible = False : BtnHlpMajCoefFcm.Visible = False : TxtFactMajorationFc28.Visible = False
            ChkbPompe_Dreux.Visible = False
            GBFabrication.Visible = True
            GbVibration.Visible = False
            'Ouvrabilité
            CbConsistance.Items.Clear()
            CbConsistance.Items.AddRange(New String() {"S1", "S2", "S3", "S4"})
            If Beton.Formulation = 1 Then
                'ce qui signifie que le projeteur vient de passer de la méthode Dreux-Gorisse à la méthode Baron-Ollivier
                'Affichage de la valeur par défaut dans le logiciel
                If Beton.Slump < 5 Then
                    CbConsistance.Text = CbConsistance.Items.Item(Beton.Slump - 1).ToString()
                Else
                    Beton.Slump = 2
                    CbConsistance.Text = CbConsistance.Items.Item(Beton.Slump - 1).ToString() 'S2
                    Message = 1
                End If
                LblOuvrabilite_cm.Visible = False
            Else
                'ce qui signifie que le projeteur était déjà avec la méthode Baron-Ollivier
                CbConsistance.Text = CbConsistance.Items.Item(Beton.Slump - 1).ToString()
            End If
            '
            GBMiseenOeuvre.Visible = True
            LblTemp.Visible = True : TBtemperature.Visible = True : BtnHlpTemperature.Visible = True
            GbGranulo.Visible = True : GbGranulo.Top = 559
            'composants
            LblComposant.Top = 497 : LblComposant.Left = 21
            LblSables.Top = 530 : LblSables.Left = 36
            NudSable.Top = 526 : NudSable.Left = 146
            LblGravillons.Top = 530 : LblGravillons.Left = 210
            NudGravillon.Top = 526 : NudGravillon.Left = 330
            ChkbCompoPonderaleHumide.Top = 529 : ChkbCompoPonderaleHumide.Left = 455 : BtnHlpDreuxGorisseCompPonderalHumide.Top = 524 : BtnHlpDreuxGorisseCompPonderalHumide.Left = 632
            'Classes expo
            ChkbExigenceEN206.Top = 136 : ChkbExigenceEN206.Left = 25
            BtnHlpExigenceEN206.Top = 132 : BtnHlpExigenceEN206.Left = 273
            'btn OK et Annuler
            BtnOK.Top = 693 : BtnOK.Left = 289
            BtnAnnuler.Top = 693 : BtnAnnuler.Left = 370
            If Message = 1 Then
                MessageBox.Show("Affichage de la valeur de consistance par défaut, la valeur de la variable Slump > 4" & Environment.NewLine & "A corriger si nécessaire", "Formulaire Exigence - Affichage des données", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        End If
    End Sub

    Private Sub RbtnFcm_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnFcm.CheckedChanged
        If RbtnFcm.Checked = True Then
            LblFcmMPa.Visible = True
            TxtFcm.Visible = True : TxtFcm.Focus()
        Else
            LblFcmMPa.Visible = False : TxtFcm.Visible = False
        End If
    End Sub

    Private Sub ChkbExigenceEN206_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbExigenceEN206.CheckedChanged
        If ChkbExigenceEN206.Checked = True Then BtnAffichageClasseExposition.Visible = True Else BtnAffichageClasseExposition.Visible = False
    End Sub

    Private Sub BtnAffichageClasseExposition_Click(sender As Object, e As EventArgs) Handles BtnAffichageClasseExposition.Click
        Dim frm1 As New frmEnrobage
        'frm1.MdiParent = Me
        frm1.Show()
        frm1 = Nothing 'pour libérer la mémoire
    End Sub

    Private Sub CbTabKdg_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbTabKdg.SelectedIndexChanged
        Select Case CbTabKdg.SelectedIndex
            Case 0 'Tab Dreux Gorisse
                LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Left = 399 : BtnHlpTabKdg.Visible = True
            Case 1 'Tab ENS
                LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Left = 399 : BtnHlpTabKdg.Visible = True
            Case 2 'Tab Compose
                LblKdg.Visible = False : TxtKdg.Visible = False : BtnHlpTabKdg.Left = 399 : BtnHlpTabKdg.Visible = True
            Case 3 'Kdg direct
                LblKdg.Visible = True : TxtKdg.Visible = True : BtnHlpTabKdg.Left = 499 : BtnHlpTabKdg.Visible = True : TxtKdg.Focus()
        End Select
    End Sub

End Class
