Public Class frmCiment_Fines
    Private Sub frmCiment_Fines_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Call Affichage()
    End Sub

    ''' <summary>Affichage des données sur le formulaire</summary>
    Private Sub Affichage()
        Try
            With Beton
                '-> Ciment
                CbClasse.Visible = True : CbSousClasse.Visible = True : LblClasse.Visible = True : LblSousClasse.Visible = True
                With .Ciment
                    Select Case .Type
                        Case 1 'CEM I
                            CbClasse.Visible = False : CbSousClasse.Visible = False : LblClasse.Visible = False : LblSousClasse.Visible = False
                            BtnHlpCimentTypeQualite.Left = 142 : BtnHlpCimentTypeQualite.Top = 31
                            CbType.Text = CbType.Items.Item(0).ToString()
                        Case 2 'CEM II
                            CbType.Text = CbType.Items.Item(1).ToString()
                            CbClasse.Items.Clear() : CbClasse.Items.AddRange(New String() {"A", "B"})
                            BtnHlpCimentTypeQualite.Left = 418 : BtnHlpCimentTypeQualite.Top = 31
                            Call Affichage_CEM_II()
                        Case 3 'CEM III
                            CbType.Text = CbType.Items.Item(2).ToString()
                            CbClasse.Items.Clear() : CbClasse.Items.AddRange(New String() {"A", "B", "C"})
                            BtnHlpCimentTypeQualite.Left = 418 : BtnHlpCimentTypeQualite.Top = 31
                            Call Affichage_CEM_III()
                    End Select
                    'Classe de résistance du ciment
                    Select Case .ClasseResistance
                        Case 32.5
                            CbResistance.Text = CbResistance.Items.Item(0).ToString
                            If .FcE = .FcE325 Then
                                ChkbClasseVrai.Checked = True : TxtClasseVrai.Text = .FcE325.ToString("#0") : TxtClasseVrai.Enabled = False
                            Else
                                ChkbClasseVrai.Checked = False : TxtClasseVrai.Enabled = True : TxtClasseVrai.Text = .FcE.ToString("#0")
                            End If
                        Case 42.5
                            CbResistance.Text = CbResistance.Items.Item(1).ToString
                            If .FcE = .FcE425 Then
                                ChkbClasseVrai.Checked = True : TxtClasseVrai.Text = .FcE425.ToString("#0") : TxtClasseVrai.Enabled = False
                            Else
                                ChkbClasseVrai.Checked = False : TxtClasseVrai.Enabled = True : TxtClasseVrai.Text = .FcE.ToString("#0")
                            End If
                        Case 52.5
                            CbResistance.Text = CbResistance.Items.Item(2).ToString
                            If .FcE = .FcE525 Then
                                ChkbClasseVrai.Checked = True : TxtClasseVrai.Text = .FcE525.ToString("#0") : TxtClasseVrai.Enabled = False
                            Else
                                ChkbClasseVrai.Checked = False : TxtClasseVrai.Enabled = True : TxtClasseVrai.Text = .FcE.ToString("#0")
                            End If
                    End Select

                    'Prise du ciment
                    Select Case .Prise
                        Case 1 'Normal
                            CbN_R.Text = CbN_R.Items.Item(0).ToString
                        Case 2 'Rapide
                            CbN_R.Text = CbN_R.Items.Item(1).ToString
                    End Select
                    TxtDensite.Text = .Densite.ToString("#0.00")
                End With
                '-> Addition
                RbtnFCalcaireCatA.Text = "Addition calcaire catégorie A" : TxtFcalcaireCatA.Visible = False : LblFcalcaireCatA.Visible = False : TxtkcalcaireCatA.Visible = False
                RbtnFCalcaireCatB.Text = "Addition calcaire catégorie B" : TxtFcalcaireCatB.Visible = False : LblFcalcaireCatB.Visible = False : TxtkcalcaireCatB.Visible = False
                RbtnMetakaolin.Text = "Métakaolin type A" : TxtFMetakaolin.Visible = False : LlbFMetakaolin.Visible = False : TxtkMetakaolin.Visible = False
                rbtnFsiliceuse.Text = "Addition siliceuse de minéralogie QZ" : TxtFsiliceuse.Visible = False : LblFsiliceuse.Visible = False : Txtksiliceuse.Visible = False
                RbtnFCV.Text = "Cendres volantes siliceuses" : TxtFCV.Visible = False : LblFCV.Visible = False : TxtkCV.Visible = False
                RbtnFLV.Text = "Laitier vitrifié" : TxtFLV.Visible = False : LblFLV.Visible = False : TxtkLV.Visible = False
                RbtnFFS.Text = "Fumées de silice" : TxtFFS.Visible = False : lblFFS.Visible = False : TxtkFS.Visible = False
                If .Addition.Addition > 0 Then
                    ChkbFines.Checked = False : GbFines.Visible = True
                    With .Addition
                        'Affichage de la partie Addition
                        Select Case .Addition
                            Case 1 'calcaire cat A
                                ChkbFines.Checked = False : RbtnFCalcaireCatA.Checked = True
                                If .ValType = True Then
                                    TxtFcalcaireCatA.Text = .L_dens.ToString("#0.00") : TxtkcalcaireCatA.Text = .L_k.ToString("#0.00")
                                Else
                                    TxtFcalcaireCatA.Text = .MV.ToString("#0.00") : TxtkcalcaireCatA.Text = .k.ToString("#0.00")
                                End If
                            Case 2 'Calcaire cat B
                                ChkbFines.Checked = False : RbtnFCalcaireCatB.Checked = True
                                If .ValType = True Then
                                    TxtFcalcaireCatB.Text = .LL_dens.ToString("#0.00") : TxtkcalcaireCatB.Text = .LL_k.ToString("#0.00")
                                Else
                                    TxtFcalcaireCatB.Text = .MV.ToString("#0.00") : TxtkcalcaireCatB.Text = .k.ToString("#0.00")
                                End If
                            Case 3 'cendres volantes siliceuses
                                ChkbFines.Checked = False : RbtnFCV.Checked = True
                                If .ValType = True Then
                                    TxtFCV.Text = .V_dens.ToString("#0.00") : TxtkCV.Text = .V_k.ToString("#0.00")
                                Else
                                    TxtFCV.Text = .MV.ToString("#0.00") : TxtkCV.Text = .k.ToString("#0.00")
                                End If
                            Case 4 'laitier vitrifié
                                ChkbFines.Checked = False : RbtnFLV.Checked = True
                                If .ValType = True Then
                                    TxtFLV.Text = .S_dens.ToString("#0.00") : TxtkLV.Text = .S_k.ToString("#0.00")
                                Else
                                    TxtFLV.Text = .MV.ToString("#0.00") : TxtkLV.Text = .k.ToString("#0.00")
                                End If
                            Case 5 'fumée de silice
                                ChkbFines.Checked = False : RbtnFFS.Checked = True
                                If .ValType = True Then
                                    TxtFFS.Text = .D_dens.ToString("#0.00") : TxtkFS.Text = .D_k.ToString("#0.00")
                                Else
                                    TxtFFS.Text = .MV.ToString("#0.00") : TxtkFS.Text = .k.ToString("#0.00")
                                End If
                            Case 6 'Addition siliceuse de minéralogie QZ
                                ChkbFines.Checked = False : rbtnFsiliceuse.Checked = True
                                If .ValType = True Then
                                    TxtFsiliceuse.Text = .U_dens.ToString("#0.00") : Txtksiliceuse.Text = .U_k.ToString("#0.00")
                                Else
                                    TxtFsiliceuse.Text = .MV.ToString("#0.00") : Txtksiliceuse.Text = .k.ToString("#0.00")
                                End If
                            Case 7 'Métakaolin
                                ChkbFines.Checked = False : RbtnMetakaolin.Checked = True
                                If .ValType = True Then
                                    TxtFMetakaolin.Text = .MK_dens.ToString("#0.00") : TxtkMetakaolin.Text = .MK_k.ToString("#0.00")
                                Else
                                    TxtFMetakaolin.Text = .MV.ToString("#0.00") : TxtkMetakaolin.Text = .k.ToString("#0.00")
                                End If
                        End Select
                        'Affichage de la partie Complément fines et quantité Addition
                        If .ComplementFines = True Then
                            'cas béton complément fine uniquement par addition - Quantité calculée par le logiciel
                            ChkbFinesComplement.Checked = True
                            LblFinesQtite.Visible = False : TxtVolFines.Visible = False : lblFinesVol.Visible = False
                        Else
                            ChkbFinesComplement.Checked = False
                            'cas béton avec addition pour substitution ciment et complément fines
                            If .Q_Impose = True Then
                                'avec quantité imposée
                                ChkbAdditionMasseAjouteImpose.Checked = True
                                LblFinesQtite.Visible = True : TxtVolFines.Visible = True : lblFinesVol.Visible = True
                                '-> quantité de l'Addition
                                TxtVolFines.Text = .QuantiteImpose.ToString("#0")
                            Else
                                'avec quantité libre
                                ChkbAdditionMasseAjouteImpose.Checked = False
                                LblFinesQtite.Visible = False : TxtVolFines.Visible = False : lblFinesVol.Visible = False
                            End If
                        End If
                    End With
                Else
                    ChkbFines.Checked = True : GbFines.Visible = False
                End If

            End With
        Catch ex As Exception
            MessageBox.Show("Erreur lors de l'affichage des données dans le formulaire:" & Environment.NewLine & "Exception: " & ex.Message & Environment.NewLine & ex.StackTrace, "Formulaire Ciment : Module affichage des données",
                            MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try
    End Sub

    Private Sub Affichage_CEM_II()
        With Beton.Ciment
            Select Case .Clinker
                Case 1
                    CbClasse.Text = CbClasse.Items.Item(0).ToString()
                Case 2
                    CbClasse.Text = CbClasse.Items.Item(1).ToString()
            End Select
            Call Affichage_Constituant()
        End With
    End Sub
    Private Sub Affichage_CEM_III()
        With Beton.Ciment
            Select Case .Clinker
                Case 1
                    CbClasse.Text = CbClasse.Items.Item(0).ToString()
                Case 2
                    CbClasse.Text = CbClasse.Items.Item(1).ToString()
                Case 3
                    CbClasse.Text = CbClasse.Items.Item(2).ToString()
            End Select
            Call Affichage_Constituant()
        End With
    End Sub
    Private Sub Affichage_Constituant()
        With Beton.Ciment
            Select Case .Constituant
                Case 1 '=S
                    CbSousClasse.Text = CbSousClasse.Items.Item(0).ToString()
                    TxtDensite.Text = .Densite_CEM_II_S.ToString("#0.00")
                Case 2 '=D
                    CbSousClasse.Text = CbSousClasse.Items.Item(1).ToString()
                    TxtDensite.Text = .Densite_CEM_II_D.ToString("#0.00")
                Case 3 '=P
                    CbSousClasse.Text = CbSousClasse.Items.Item(2).ToString()
                    TxtDensite.Text = .Densite_CEM_II_III.ToString("#0.00")'Provisoire
                Case 4 '=Q
                    CbSousClasse.Text = CbSousClasse.Items.Item(3).ToString()
                    TxtDensite.Text = .Densite_CEM_II_III.ToString("#0.00")'Provisoire
                Case 5 '=V
                    CbSousClasse.Text = CbSousClasse.Items.Item(4).ToString()
                    TxtDensite.Text = .Densite_CEM_II_VW.ToString("#0.00")
                Case 6 '=W
                    CbSousClasse.Text = CbSousClasse.Items.Item(5).ToString()
                    TxtDensite.Text = .Densite_CEM_II_VW.ToString("#0.00")
                Case 7 '=T
                    CbSousClasse.Text = CbSousClasse.Items.Item(6).ToString()
                    TxtDensite.Text = .Densite_CEM_II_III.ToString("#0.00")'Provisoire
                Case 8 '=L
                    CbSousClasse.Text = CbSousClasse.Items.Item(7).ToString()
                    TxtDensite.Text = .Densite_CEM_II_L.ToString("#0.00")
                Case 9 '=LL
                    CbSousClasse.Text = CbSousClasse.Items.Item(8).ToString()
                    TxtDensite.Text = .Densite_CEM_II_L.ToString("#0.00")
            End Select
        End With
    End Sub

    ''' <summary>Lecture des données affichées sur le formulaire</summary>
    '''  <param name="Verif">= False implique une erreur de lecture</param>
    '''  <param name="msg">message d'erreur</param> 
    Private Sub Lecture_Donnees(ByRef Verif As Boolean, ByRef msg As String)
        msg = String.Empty
        With Beton
            With .Ciment
                Select Case CbType.Text
                    Case "I"
                        .Type = 1
                    Case "II"
                        .Type = 2
                        Select Case CbClasse.Text
                            Case "A"
                                .Clinker = 1
                            Case "B"
                                .Clinker = 2
                            Case Else
                                EP1.SetError(CbClasse, "Indiquez le taux de clinker")
                                msg += "Vous avez oublié de renseigner le taux de clinker" & Environment.NewLine
                                Verif = False
                        End Select
                        Select Case CbSousClasse.Text
                            Case "S"
                                .Constituant = 1
                            Case "D"
                                .Constituant = 2
                            Case "P"
                                .Constituant = 3
                            Case "Q"
                                .Constituant = 4
                            Case "V"
                                .Constituant = 5
                            Case "W"
                                .Constituant = 6
                            Case "T"
                                .Constituant = 7
                            Case "L"
                                .Constituant = 8
                            Case "LL"
                                .Constituant = 9
                            Case Else
                                EP1.SetError(CbSousClasse, "Indiquez le 2ième constituant du ciment")
                                msg += "Vous avez oublié de renseigner le 2ième constituant du ciment" & Environment.NewLine
                                Verif = False
                        End Select
                    Case "III"
                        .Type = 3
                        Select Case CbClasse.Text
                            Case "A"
                                .Clinker = 1
                            Case "B"
                                .Clinker = 2
                            Case "C"
                                .Clinker = 3
                            Case Else
                                EP1.SetError(CbClasse, "Indiquez le taux de clinker")
                                msg += "Vous avez oublié de renseigner le taux de clinker" & Environment.NewLine
                                Verif = False
                        End Select
                        Select Case CbSousClasse.Text
                            Case "S"
                                .Constituant = 1
                            Case "D"
                                .Constituant = 2
                            Case "P"
                                .Constituant = 3
                            Case "Q"
                                .Constituant = 4
                            Case "V"
                                .Constituant = 5
                            Case "W"
                                .Constituant = 6
                            Case "T"
                                .Constituant = 7
                            Case "L"
                                .Constituant = 8
                            Case "LL"
                                .Constituant = 9
                            Case Else
                                EP1.SetError(CbSousClasse, "Indiquez le 2ième constituant du ciment")
                                msg += "Vous avez oublié de renseigner le 2ième constituant du ciment" & Environment.NewLine
                                Verif = False
                        End Select
                    Case Else
                        EP1.SetError(CbType, "Indiquez le type de ciment")
                        msg += "Vous avez oublié de renseigner le type de ciment" & Environment.NewLine
                        Verif = False
                End Select
                'Classe normalisée de résistance du ciment
                If gestionderreurCB(CbResistance, EP1) = True Then .ClasseResistance = CDbl(CbResistance.Text) Else msg += "Erreur sur la classe de résistance du ciment" & Environment.NewLine : Verif = False
                'valeur de la classe vrai du ciment
                If ChkbClasseVrai.Checked = True Then
                    Select Case .ClasseResistance
                        Case 32.5
                            .FcE = .FcE325
                        Case 42.5
                            .FcE = .FcE425
                        Case 52.5
                            .FcE = .FcE525
                    End Select
                Else
                    If gestionderreur(TxtClasseVrai, EP1) = True Then .FcE = CInt(TxtClasseVrai.Text) Else msg += "La valeur de la classe vrai du ciment n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                End If
                'Prise du ciment
                .Prise = CInt(CbN_R.SelectedIndex) + 1 'Else msg += "Erreur sur la prise du ciment" & Environment.NewLine : Verif = False
                'densité
                If gestionderreur(TxtDensite, EP1) = True Then .Densite = CDbl(TxtDensite.Text) Else msg += "La valeur de la densité du ciment n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
            End With
            With .Addition
                If ChkbFines.Checked = True Then
                    .Addition = 0 'aucune addition
                Else

                    If ChkbAdditionValeurType.Checked = True Then
                        .ValType = True
                        If RbtnFCalcaireCatA.Checked = True Then
                            .Addition = 1 : .MV = Addition.L_dens : .k = Addition.L_k
                        End If
                        If RbtnFCalcaireCatB.Checked = True Then
                            .Addition = 2 : .MV = Addition.LL_dens : .k = Addition.LL_k
                        End If
                        If RbtnFCV.Checked = True Then
                            .Addition = 3 : .MV = Addition.V_dens : .k = Addition.V_k
                        End If
                        If RbtnFLV.Checked = True Then
                            .Addition = 4 : .MV = Addition.S_dens : .k = Addition.S_k
                        End If
                        If RbtnFFS.Checked = True Then
                            .Addition = 5 : .MV = Addition.D_dens : .k = Addition.D_k
                        End If
                        If rbtnFsiliceuse.Checked = True Then
                            .Addition = 6 : .MV = Addition.U_dens : .k = Addition.U_k
                        End If
                        If RbtnMetakaolin.Checked = True Then
                            .Addition = 7 : .MV = Addition.MK_dens : .k = Addition.MK_k
                        End If
                    Else
                        .ValType = False
                        If RbtnFCalcaireCatA.Checked = True Then
                            If gestionderreur(TxtFcalcaireCatA, EP1) = True Then .MV = CDbl(TxtFcalcaireCatA.Text) Else msg += "La valeur de la densité de l'addition Calcaire de catégorie A n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(TxtkcalcaireCatA, EP1) = True Then .k = CDbl(TxtkcalcaireCatA.Text) Else msg += "La valeur du coefficient k de l'addition Calcaire de catégorie A n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 1
                        End If
                        If RbtnFCalcaireCatB.Checked = True Then
                            If gestionderreur(TxtFcalcaireCatB, EP1) = True Then .MV = CDbl(TxtFcalcaireCatB.Text) Else msg += "La valeur de la densité de l'addition Calcaire de catégorie B n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(TxtkcalcaireCatB, EP1) = True Then .k = CDbl(TxtkcalcaireCatB.Text) Else msg += "La valeur du coefficient k de l'addition Calcaire de catégorie B n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 2
                        End If
                        If RbtnFCV.Checked = True Then
                            If gestionderreur(TxtFCV, EP1) = True Then .MV = CDbl(TxtFCV.Text) Else msg += "La valeur de la densité de l'addition de cendres volantes n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(TxtkCV, EP1) = True Then .k = CDbl(TxtkCV.Text) Else msg += "La valeur du coefficient k de l'addition de cendres volantes n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 3
                        End If
                        If RbtnFLV.Checked = True Then
                            If gestionderreur(TxtFLV, EP1) = True Then .MV = CDbl(TxtFLV.Text) Else msg += "La valeur de la densité de l'addition de laitier vitrifié n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(TxtkLV, EP1) = True Then .k = CDbl(TxtkLV.Text) Else msg += "La valeur du coefficient k de l'addition de laitier vitrifié n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 4
                        End If
                        If RbtnFFS.Checked = True Then
                            If gestionderreur(TxtFFS, EP1) = True Then .MV = CDbl(TxtFFS.Text) Else msg += "La valeur de la densité de l'addition de fumée de silice n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(TxtkFS, EP1) = True Then .k = CDbl(TxtkFS.Text) Else msg += "La valeur du coefficient k de l'addition de fumée de silice n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 5
                        End If
                        If rbtnFsiliceuse.Checked = True Then
                            If gestionderreur(TxtFsiliceuse, EP1) = True Then .MV = CDbl(TxtFsiliceuse.Text) Else msg += "La valeur de la densité de l'Addition siliceuse de minéralogie QZ n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(Txtksiliceuse, EP1) = True Then .k = CDbl(Txtksiliceuse.Text) Else msg += "La valeur du coefficient k de l'Addition siliceuse de minéralogie QZ n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 6
                        End If
                        If RbtnMetakaolin.Checked = True Then
                            If gestionderreur(TxtFMetakaolin, EP1) = True Then .MV = CDbl(TxtFMetakaolin.Text) Else msg += "La valeur de la densité de l'addition de Métakaolin type A n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If gestionderreur(TxtkMetakaolin, EP1) = True Then .k = CDbl(TxtkMetakaolin.Text) Else msg += "La valeur du coefficient k de l'addition de Métakaolin type A n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            .Addition = 7
                        End If
                    End If
                    If ChkbFinesComplement.Checked = True Then
                        .ComplementFines = True : .Q_Impose = False
                    Else
                        .ComplementFines = False
                        If ChkbAdditionMasseAjouteImpose.Checked = True Then
                            .Q_Impose = True
                            '-> quantité de l'Addition
                            If gestionderreur(TxtVolFines, EP1) = True Then .QuantiteImpose = CInt(TxtVolFines.Text) Else msg += "La valeur de la quantité d'Addition n'a pas été correctement renseignée." & Environment.NewLine : Verif = False
                            If .QuantiteImpose < 2 Then
                                Dim reponse As DialogResult
                                msg = "La quantité d'addition est relativement faible : " & .Quantite.ToString("#0") & " < 2 kg" & Environment.NewLine &
                                    "Voulez-vous continuer avec cette valeur (réponse = Oui) ou modifier la valeur (réponse = Non) ?"
                                reponse = MessageBox.Show(msg, "Module de lecture des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                                If reponse = DialogResult.No Then Verif = False
                            End If
                        Else
                            .Q_Impose = False
                            .QuantiteImpose = 0
                        End If

                    End If
                End If
            End With
        End With

    End Sub

    ''' <summary>Vérification des données entrées dans le formulaire</summary>
    '''  <param name="Verif">= False implique une erreur de lecture</param>
    '''  <param name="msg">message d'erreur</param> 
    Private Sub Verification(ByRef Verif As Boolean)
        Dim msg As String = String.Empty
        With Beton
            With Ciment
                ' CEM II/A-
                If .Type = 2 AndAlso .Clinker = 1 Then
                    'CEM II/A-D + addition fumée de silice
                    If .Constituant = 2 AndAlso Beton.Addition.Addition = 5 Then
                        msg = "L'EN206-1 n'autorise pas le mélange CEM II/A-D avec des additions de fumée de silice" & Environment.NewLine & "Veuillez modifier votre choix."
                        MessageBox.Show(msg, "Module de vérification des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                        Verif = False : Exit Sub
                    End If
                    'CEM II/A-Q + addition fumée de silice
                    If .Constituant = 4 AndAlso Beton.Addition.Addition = 5 Then
                        msg = "L'EN206-1 n'autorise pas le mélange CEM II/A-Q avec des additions de fumée de silice" & Environment.NewLine & "Veuillez modifier votre choix."
                        MessageBox.Show(msg, "Module de vérification des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                        Verif = False : Exit Sub
                    End If
                    'CEM II/A-D + addition Métakaolin
                    If .Constituant = 2 AndAlso Beton.Addition.Addition = 7 Then
                        msg = "L'EN206-1 n'autorise pas le mélange CEM II/A-D avec des additions de Métakaolin de type A." & Environment.NewLine & "Veuillez modifier votre choix."
                        MessageBox.Show(msg, "Module de vérification des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                        Verif = False : Exit Sub
                    End If
                    'CEM II/A-D + addition Métakaolin
                    If .Constituant = 4 AndAlso Beton.Addition.Addition = 7 Then
                        msg = "L'EN206-1 n'autorise pas le mélange CEM II/A-Q avec des additions de Métakaolin de type A." & Environment.NewLine & "Veuillez modifier votre choix."
                        MessageBox.Show(msg, "Module de vérification des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                        Verif = False : Exit Sub
                    End If
                End If
                'CEM II/B-
                If .Type = 2 AndAlso .Clinker = 2 AndAlso Beton.Addition.Addition > 0 Then
                    msg = "L'EN206-1 n'autorise pas le mélange CEM II/B- avec des additions." & Environment.NewLine & "Veuillez modifier votre choix."
                    MessageBox.Show(msg, "Module de vérification des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    Verif = False : Exit Sub
                End If
                'CEM III
                If .Type = 3 AndAlso Beton.Addition.Addition > 0 Then
                    msg = "Cette version logicielle n'autorise pas le mélange CEM III- avec des additions." & Environment.NewLine & "Veuillez modifier votre choix."
                    MessageBox.Show(msg, "Module de vérification des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                    Verif = False : Exit Sub
                End If
            End With

        End With
    End Sub

    Private Sub ChkbFines_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbFines.CheckedChanged
        If ChkbFines.Checked = True Then
            GbFines.Visible = False : BtnOK.Top = 245 : BtnAnnuler.Top = 245 : Me.Height = 320
        Else
            GbFines.Visible = True : BtnOK.Top = 609 : BtnAnnuler.Top = 609 : Me.Height = 685
        End If
    End Sub

    Private Sub CbType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbType.SelectedIndexChanged
        CbClasse.Visible = True : CbSousClasse.Visible = True : LblClasse.Visible = True : LblSousClasse.Visible = True
        Select Case CbType.SelectedIndex
            Case 0 'CEM I
                CbClasse.Visible = False : CbSousClasse.Visible = False : LblClasse.Visible = False : LblSousClasse.Visible = False
                BtnHlpCimentTypeQualite.Left = 142 : BtnHlpCimentTypeQualite.Top = 31
            Case 1 'CEM II
                CbClasse.Items.Clear() : CbClasse.Items.AddRange(New String() {"A", "B"})
                BtnHlpCimentTypeQualite.Left = 418 : BtnHlpCimentTypeQualite.Top = 31
                Call Affichage_CEM_II()
            Case 2 'CEM III
                CbClasse.Items.Clear() : CbClasse.Items.AddRange(New String() {"A", "B", "C"})
                BtnHlpCimentTypeQualite.Left = 418 : BtnHlpCimentTypeQualite.Top = 31
                Call Affichage_CEM_III()
        End Select
    End Sub

    Private Sub CbClasse_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbClasse.SelectedIndexChanged
        Call Affichage_Constituant()
    End Sub

    Private Sub CbSousClasse_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbSousClasse.SelectedIndexChanged
        If ChkbDensiteCiment.Checked = True Then
            Select Case CbSousClasse.SelectedIndex '.Constituant
                Case 0 '1 '=S
                    TxtDensite.Text = Ciment.Densite_CEM_II_S.ToString("#0.00")
                Case 1 '2 '=D
                    TxtDensite.Text = Ciment.Densite_CEM_II_D.ToString("#0.00")
                Case 2 '3 '=P
                    TxtDensite.Text = Ciment.Densite_CEM_II_III.ToString("#0.00")'Provisoire
                Case 3 '4 '=Q
                    TxtDensite.Text = Ciment.Densite_CEM_II_III.ToString("#0.00")'Provisoire
                Case 4 '5 '=V
                    TxtDensite.Text = Ciment.Densite_CEM_II_VW.ToString("#0.00")
                Case 5 '6 '=W
                    TxtDensite.Text = Ciment.Densite_CEM_II_VW.ToString("#0.00")
                Case 6 '7 '=T
                    TxtDensite.Text = Ciment.Densite_CEM_II_III.ToString("#0.00")'Provisoire
                Case 7 '8 '=L
                    TxtDensite.Text = Ciment.Densite_CEM_II_L.ToString("#0.00")
                Case 8 '9 '=LL
                    TxtDensite.Text = Ciment.Densite_CEM_II_L.ToString("#0.00")
            End Select
        Else
            TxtDensite.Text = Beton.Ciment.Densite.ToString("#0.00")
        End If

    End Sub

#Region "Gestion des textbox"
    Private Sub TxtClasseVrai_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtClasseVrai.Enter
        TxtClasseVrai.SelectionStart = 0
        TxtClasseVrai.SelectionLength = TxtClasseVrai.Text.Length
    End Sub
    Private Sub TxtClasseVrai_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtClasseVrai.KeyPress
        Call Gestion_Keypress(e, TxtClasseVrai, True, False)
    End Sub
    Private Sub TxtDensite_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtDensite.Enter
        TxtDensite.SelectionStart = 0
        TxtDensite.SelectionLength = TxtDensite.Text.Length
    End Sub
    Private Sub TxtDensite_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtDensite.KeyPress
        Call Gestion_Keypress(e, TxtDensite, True, False)
    End Sub

#Region "Additions"
    Private Sub TxtFcalcaireCata_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFcalcaireCatA.KeyPress
        Call Gestion_Keypress(e, TxtFcalcaireCatA, True, False)
    End Sub
    Private Sub TxtkcalcaireCata_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtkcalcaireCatA.KeyPress
        Call Gestion_Keypress(e, TxtkcalcaireCatA, True, False)
    End Sub
    Private Sub TxtFcalcaireCatB_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFcalcaireCatB.KeyPress
        Call Gestion_Keypress(e, TxtFcalcaireCatB, True, False)
    End Sub
    Private Sub TxtkcalcaireCatB_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtkcalcaireCatB.KeyPress
        Call Gestion_Keypress(e, TxtkcalcaireCatB, True, False)
    End Sub
    Private Sub TxtFMetakaolin_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFMetakaolin.KeyPress
        Call Gestion_Keypress(e, TxtFMetakaolin, True, False)
    End Sub
    Private Sub TxtkMetakaolin_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtkMetakaolin.KeyPress
        Call Gestion_Keypress(e, TxtkMetakaolin, True, False)
    End Sub
    Private Sub TxtFsiliceuse_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFsiliceuse.KeyPress
        Call Gestion_Keypress(e, TxtFsiliceuse, True, False)
    End Sub
    Private Sub Txtksiliceuse_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txtksiliceuse.KeyPress
        Call Gestion_Keypress(e, Txtksiliceuse, True, False)
    End Sub
    Private Sub TxtfcV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFCV.KeyPress
        Call Gestion_Keypress(e, TxtFCV, True, False)
    End Sub
    Private Sub TxtkcV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtkCV.KeyPress
        Call Gestion_Keypress(e, TxtkCV, True, False)
    End Sub
    Private Sub TxtfLV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFLV.KeyPress
        Call Gestion_Keypress(e, TxtFLV, True, False)
    End Sub
    Private Sub TxtkLV_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtkLV.KeyPress
        Call Gestion_Keypress(e, TxtkLV, True, False)
    End Sub
    Private Sub TxtkFS_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtkFS.KeyPress
        Call Gestion_Keypress(e, TxtkFS, True, False)
    End Sub
    Private Sub TxtFFS_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtFFS.KeyPress
        Call Gestion_Keypress(e, TxtFFS, True, False)
    End Sub
    Private Sub TxtVolFines_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtVolFines.Enter
        TxtVolFines.SelectionStart = 0
        TxtVolFines.SelectionLength = TxtVolFines.Text.Length
    End Sub
    Private Sub TxtVolFines_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtVolFines.KeyPress
        Call Gestion_Keypress(e, TxtVolFines, True, True)
    End Sub
#End Region
#End Region

#Region "Gestion des boutons d'Aide"
    Private Sub BtnHlpCimentTypeQualite_Click(sender As Object, e As EventArgs) Handles BtnHlpCimentTypeQualite.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 20
        frm1.Show()
    End Sub
    Private Sub BtnHlpClasseVraiCiment_Click(sender As Object, e As EventArgs) Handles BtnHlpClasseVraiCiment.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 13
        frm1.Show()
    End Sub

    Private Sub BtnHlpDensite_Click(sender As Object, e As EventArgs) Handles BtnHlpDensite.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 14
        frm1.Show()
    End Sub
    Private Sub BtnHlpAddition_Click(sender As Object, e As EventArgs) Handles BtnHlpAddition.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 21
        frm1.Show()
    End Sub
    Private Sub BtnHlpFinesComplement_Click(sender As Object, e As EventArgs) Handles BtnHlpFinesComplement.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 35
        frm1.Show()
    End Sub

    Private Sub BtnHlpMasseImpose_Click(sender As Object, e As EventArgs) Handles BtnHlpMasseImpose.Click
        Dim frm1 As frmAide
        frm1 = New frmAide
        Aff.FichierAide = 38
        frm1.Show()
    End Sub
#End Region

    Private Sub CbResistance_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CbResistance.SelectedIndexChanged
        If ChkbClasseVrai.Checked = True Then
            With Ciment
                Select Case CbResistance.SelectedIndex
                    Case 0 '32.5
                        TxtClasseVrai.Text = .FcE325.ToString("#0")
                    Case 1 '42.5
                        TxtClasseVrai.Text = .FcE425.ToString("#0")
                    Case 2 '52.5
                        TxtClasseVrai.Text = .FcE525.ToString("#0")
                End Select
            End With
            TxtClasseVrai.Enabled = False
        Else
            With Beton.Ciment
                TxtClasseVrai.Text = .FcE.ToString("#0")
            End With
            TxtClasseVrai.Enabled = True
        End If
    End Sub
    Private Sub ChkbClasseVrai_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbClasseVrai.CheckedChanged

        If ChkbClasseVrai.Checked = True Then
            With Ciment
                Select Case CbResistance.SelectedIndex
                    Case 0 '32.5
                        TxtClasseVrai.Text = .FcE325.ToString("#0")
                    Case 1 '42.5
                        TxtClasseVrai.Text = .FcE425.ToString("#0")
                    Case 2 '52.5
                        TxtClasseVrai.Text = .FcE525.ToString("#0")
                End Select
            End With
            TxtClasseVrai.Enabled = False
        Else
            With Beton.Ciment
                TxtClasseVrai.Text = .FcE.ToString("#0")
            End With
            TxtClasseVrai.Enabled = True
        End If
    End Sub

    Private Sub ChkbDensiteCiment_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbDensiteCiment.CheckedChanged
        If ChkbDensiteCiment.Checked = True Then
            Select Case CbType.SelectedIndex '.Type
                Case 0 '1 'CEM I
                    TxtDensite.Text = Ciment.Densite_CEM_I.ToString("#0.00")
                Case 1 '2 'CEM II
                    Call Affichage_Constituant()
                Case 2 '3 'CEM III
                    Call Affichage_Constituant()
            End Select
            TxtDensite.Enabled = False
        Else
            TxtDensite.Text = Beton.Ciment.Densite.ToString("#0.00")
            TxtDensite.Enabled = True
        End If
    End Sub

    Private Sub BtnOK_Click(sender As Object, e As EventArgs) Handles BtnOK.Click
        Dim Verif As Boolean = True
        Dim msg As String = String.Empty
        Call Lecture_Donnees(Verif, msg)
        If Verif = False Then
            MessageBox.Show("Erreur dans la lecture des données du formulaire Ciment & Fines :" & Environment.NewLine & msg, "Module de lecture des données du formulaire Ciment & Fines", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            Exit Sub
        End If
        Call Verification(Verif)
        If Verif = False Then Exit Sub
        Me.Dispose()
        Me.Finalize()
    End Sub

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

#Region "Gestion des Rbtn des Additions"
    Private Sub RbtnFCalcaire_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnFCalcaireCatA.CheckedChanged
        If RbtnFCalcaireCatA.Checked = True Then
            RbtnFCalcaireCatA.Text = "Addition calcaire catégorie A - Densité :" : TxtFcalcaireCatA.Visible = True : LblFcalcaireCatA.Visible = True : TxtkcalcaireCatA.Visible = True : TxtFcalcaireCatA.Focus()
            If ChkbAdditionValeurType.Checked = True Then
                TxtFcalcaireCatA.Text = Addition.L_dens.ToString("0.00") : TxtkcalcaireCatA.Text = Addition.L_k.ToString("0.00") : TxtFcalcaireCatA.Enabled = False : TxtkcalcaireCatA.Enabled = False
            Else
                TxtFcalcaireCatA.Text = Beton.Addition.MV.ToString("0.00") : TxtkcalcaireCatA.Text = Beton.Addition.k.ToString("0.00") : TxtFcalcaireCatA.Enabled = True : TxtkcalcaireCatA.Enabled = True : TxtFcalcaireCatA.Focus()
            End If
        Else
            RbtnFCalcaireCatA.Text = "Addition calcaire catégorie A" : TxtFcalcaireCatA.Visible = False : LblFcalcaireCatA.Visible = False : TxtkcalcaireCatA.Visible = False
        End If
    End Sub

    Private Sub RbtnFCalcaireCatB_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnFCalcaireCatB.CheckedChanged
        If RbtnFCalcaireCatB.Checked = True Then
            RbtnFCalcaireCatB.Text = "Addition calcaire catégorie B - Densité :" : TxtFcalcaireCatB.Visible = True : LblFcalcaireCatB.Visible = True : TxtkcalcaireCatB.Visible = True
            If ChkbAdditionValeurType.Checked = True Then
                TxtFcalcaireCatB.Text = Addition.LL_dens.ToString("0.00") : TxtkcalcaireCatB.Text = Addition.LL_k.ToString("0.00") : TxtFcalcaireCatB.Enabled = False : TxtkcalcaireCatB.Enabled = False
            Else
                TxtFcalcaireCatB.Text = Beton.Addition.MV.ToString("0.00") : TxtkcalcaireCatB.Text = Beton.Addition.k.ToString("0.00") : TxtFcalcaireCatB.Enabled = True : TxtkcalcaireCatB.Enabled = True : TxtFcalcaireCatB.Focus()
            End If
        Else
            RbtnFCalcaireCatB.Text = "Addition calcaire catégorie B" : TxtFcalcaireCatB.Visible = False : LblFcalcaireCatB.Visible = False : TxtkcalcaireCatB.Visible = False
        End If
    End Sub

    Private Sub RbtnMetakaolin_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnMetakaolin.CheckedChanged
        If RbtnMetakaolin.Checked = True Then
            RbtnMetakaolin.Text = "Métakaolin type A - Densité :" : TxtFMetakaolin.Visible = True : LlbFMetakaolin.Visible = True : TxtkMetakaolin.Visible = True
            If ChkbAdditionValeurType.Checked = True Then
                TxtFMetakaolin.Text = Addition.MK_dens.ToString("0.00") : TxtkMetakaolin.Text = Addition.MK_k.ToString("0.00") : TxtFMetakaolin.Enabled = False : TxtkMetakaolin.Enabled = False
            Else
                TxtFMetakaolin.Text = Beton.Addition.MV.ToString("0.00") : TxtkMetakaolin.Text = Beton.Addition.k.ToString("0.00") : TxtFMetakaolin.Enabled = True : TxtkMetakaolin.Enabled = True : TxtFMetakaolin.Focus()
            End If
        Else
            RbtnMetakaolin.Text = "Métakaolin type A" : TxtFMetakaolin.Visible = False : LlbFMetakaolin.Visible = False : TxtkMetakaolin.Visible = False
        End If
    End Sub

    Private Sub rbtnFsiliceuse_CheckedChanged(sender As Object, e As EventArgs) Handles rbtnFsiliceuse.CheckedChanged
        If rbtnFsiliceuse.Checked = True Then
            rbtnFsiliceuse.Text = "Addition siliceuse de minéralogie QZ - Densité :" : TxtFsiliceuse.Visible = True : LblFsiliceuse.Visible = True : Txtksiliceuse.Visible = True
            If ChkbAdditionValeurType.Checked = True Then
                TxtFsiliceuse.Text = Addition.U_dens.ToString("0.00") : Txtksiliceuse.Text = Addition.U_k.ToString("0.00") : TxtFsiliceuse.Enabled = False : Txtksiliceuse.Enabled = False
            Else
                TxtFsiliceuse.Text = Beton.Addition.MV.ToString("0.00") : Txtksiliceuse.Text = Beton.Addition.k.ToString("0.00") : TxtFsiliceuse.Enabled = True : Txtksiliceuse.Enabled = True : TxtFsiliceuse.Focus()
            End If
        Else
            rbtnFsiliceuse.Text = "Addition siliceuse de minéralogie QZ" : TxtFsiliceuse.Visible = False : LblFsiliceuse.Visible = False : Txtksiliceuse.Visible = False
        End If
    End Sub

    Private Sub RbtnFCV_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnFCV.CheckedChanged
        If RbtnFCV.Checked = True Then
            RbtnFCV.Text = "Cendres volantes siliceuses - Densité :" : TxtFCV.Visible = True : LblFCV.Visible = True : TxtkCV.Visible = True
            If ChkbAdditionValeurType.Checked = True Then
                TxtFCV.Text = Addition.V_dens.ToString("0.00") : TxtkCV.Text = Addition.V_k.ToString("0.00") : TxtFCV.Enabled = False : TxtkCV.Enabled = False
            Else
                TxtFCV.Text = Beton.Addition.MV.ToString("0.00") : TxtkCV.Text = Beton.Addition.k.ToString("0.00") : TxtFCV.Enabled = True : TxtkCV.Enabled = True : TxtFCV.Focus()
            End If
        Else
            RbtnFCV.Text = "Cendres volantes siliceuses" : TxtFCV.Visible = False : LblFCV.Visible = False : TxtkCV.Visible = False
        End If
    End Sub

    Private Sub RbtnFLV_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnFLV.CheckedChanged
        If RbtnFLV.Checked = True Then
            RbtnFLV.Text = "Laitier vitrifié - Densité :" : TxtFLV.Visible = True : LblFLV.Visible = True : TxtkLV.Visible = True
            If ChkbAdditionValeurType.Checked = True Then
                TxtFLV.Text = Addition.S_dens.ToString("0.00") : TxtkLV.Text = Addition.S_k.ToString("0.00") : TxtFLV.Enabled = False : TxtkLV.Enabled = False
            Else
                TxtFLV.Text = Beton.Addition.MV.ToString("0.00") : TxtkLV.Text = Beton.Addition.k.ToString("0.00") : TxtFLV.Enabled = True : TxtkLV.Enabled = True : TxtFLV.Focus()
            End If
        Else
            RbtnFLV.Text = "Laitier vitrifié" : TxtFLV.Visible = False : LblFLV.Visible = False : TxtkLV.Visible = False
        End If
    End Sub

    Private Sub RbtnFFS_CheckedChanged(sender As Object, e As EventArgs) Handles RbtnFFS.CheckedChanged
        If RbtnFFS.Checked = True Then
            RbtnFFS.Text = "Fumées de silice - Densité :" : TxtFFS.Visible = True : lblFFS.Visible = True : TxtkFS.Visible = True
            If ChkbAdditionValeurType.Checked = True Then
                TxtFFS.Text = Addition.D_dens.ToString("0.00") : TxtkFS.Text = Addition.D_k.ToString("0.00") : TxtFFS.Enabled = False : TxtkFS.Enabled = False
            Else
                TxtFFS.Text = Beton.Addition.MV.ToString("0.00") : TxtkFS.Text = Beton.Addition.k.ToString("0.00") : TxtFFS.Enabled = True : TxtkFS.Enabled = True : TxtFFS.Focus()
            End If
        Else
            RbtnFFS.Text = "Fumées de silice" : TxtFFS.Visible = False : lblFFS.Visible = False : TxtkFS.Visible = False
        End If
    End Sub

#End Region

    Private Sub ChkbAdditionValeurType_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbAdditionValeurType.CheckedChanged
        If ChkbAdditionValeurType.Checked = True Then
            If RbtnFCalcaireCatA.Checked = True Then
                TxtFcalcaireCatA.Text = Addition.L_dens.ToString("0.00") : TxtkcalcaireCatA.Text = Addition.L_k.ToString("0.00") : TxtFcalcaireCatA.Enabled = False : TxtkcalcaireCatA.Enabled = False
            End If
            If RbtnFCalcaireCatB.Checked = True Then
                TxtFcalcaireCatB.Text = Addition.LL_dens.ToString("0.00") : TxtkcalcaireCatB.Text = Addition.LL_k.ToString("0.00") : TxtFcalcaireCatB.Enabled = False : TxtkcalcaireCatB.Enabled = False
            End If
            If RbtnMetakaolin.Checked = True Then
                TxtFMetakaolin.Text = Addition.MK_dens.ToString("0.00") : TxtkMetakaolin.Text = Addition.MK_k.ToString("0.00") : TxtFMetakaolin.Enabled = False : TxtkMetakaolin.Enabled = False
            End If
            If rbtnFsiliceuse.Checked = True Then
                TxtFsiliceuse.Text = Addition.U_dens.ToString("0.00") : Txtksiliceuse.Text = Addition.U_k.ToString("0.00") : TxtFsiliceuse.Enabled = False : Txtksiliceuse.Enabled = False
            End If
            If RbtnFCV.Checked = True Then
                TxtFCV.Text = Addition.V_dens.ToString("0.00") : TxtkCV.Text = Addition.V_k.ToString("0.00") : TxtFCV.Enabled = False : TxtkCV.Enabled = False
            End If
            If RbtnFLV.Checked = True Then
                TxtFLV.Text = Addition.S_dens.ToString("0.00") : TxtkLV.Text = Addition.S_k.ToString("0.00") : TxtFLV.Enabled = False : TxtkLV.Enabled = False
            End If
            If RbtnFFS.Checked = True Then
                TxtFFS.Text = Addition.D_dens.ToString("0.00") : TxtkFS.Text = Addition.D_k.ToString("0.00") : TxtFFS.Enabled = False : TxtkFS.Enabled = False
            End If
        Else
            If RbtnFCalcaireCatA.Checked = True Then
                TxtFcalcaireCatA.Text = Beton.Addition.MV.ToString("0.00") : TxtkcalcaireCatA.Text = Beton.Addition.k.ToString("0.00") : TxtFcalcaireCatA.Enabled = True : TxtkcalcaireCatA.Enabled = True
            End If
            If RbtnFCalcaireCatB.Checked = True Then
                TxtFcalcaireCatB.Text = Beton.Addition.MV.ToString("0.00") : TxtkcalcaireCatB.Text = Beton.Addition.k.ToString("0.00") : TxtFcalcaireCatB.Enabled = True : TxtkcalcaireCatB.Enabled = True
            End If
            If RbtnMetakaolin.Checked = True Then
                TxtFMetakaolin.Text = Beton.Addition.MV.ToString("0.00") : TxtkMetakaolin.Text = Beton.Addition.k.ToString("0.00") : TxtFMetakaolin.Enabled = True : TxtkMetakaolin.Enabled = True
            End If
            If rbtnFsiliceuse.Checked = True Then
                TxtFsiliceuse.Text = Beton.Addition.MV.ToString("0.00") : Txtksiliceuse.Text = Beton.Addition.k.ToString("0.00") : TxtFsiliceuse.Enabled = True : Txtksiliceuse.Enabled = True
            End If
            If RbtnFCV.Checked = True Then
                TxtFCV.Text = Beton.Addition.MV.ToString("0.00") : TxtkCV.Text = Beton.Addition.k.ToString("0.00") : TxtFCV.Enabled = True : TxtkCV.Enabled = True
            End If
            If RbtnFLV.Checked = True Then
                TxtFLV.Text = Beton.Addition.MV.ToString("0.00") : TxtkLV.Text = Beton.Addition.k.ToString("0.00") : TxtFLV.Enabled = True : TxtkLV.Enabled = True
            End If
            If RbtnFFS.Checked = True Then
                TxtFFS.Text = Beton.Addition.MV.ToString("0.00") : TxtkFS.Text = Beton.Addition.k.ToString("0.00") : TxtFFS.Enabled = True : TxtkFS.Enabled = True
            End If
        End If
    End Sub

    Private Sub ChkbFinesComplement_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbFinesComplement.CheckedChanged
        If ChkbFinesComplement.Checked = True Then
            ChkbAdditionMasseAjouteImpose.Visible = False
            LblFinesQtite.Visible = False : TxtVolFines.Visible = False : lblFinesVol.Visible = False
        Else
            ChkbAdditionMasseAjouteImpose.Visible = Visible
            If ChkbAdditionMasseAjouteImpose.Checked = True Then
                LblFinesQtite.Visible = True : lblFinesVol.Visible = True : TxtVolFines.Visible = True
            Else
                LblFinesQtite.Visible = False : lblFinesVol.Visible = False : TxtVolFines.Visible = False
            End If
        End If
    End Sub

    Private Sub ChkbAdditionMasseAjouteImposse_CheckedChanged(sender As Object, e As EventArgs) Handles ChkbAdditionMasseAjouteImpose.CheckedChanged
        If ChkbAdditionMasseAjouteImpose.Checked = True Then
            LblFinesQtite.Visible = True : lblFinesVol.Visible = True : TxtVolFines.Visible = True
        Else
            LblFinesQtite.Visible = False : lblFinesVol.Visible = False : TxtVolFines.Visible = False
        End If
    End Sub


End Class