Option Explicit
Function ValidateForm() As Boolean
txtName.BackColor = vbWhite
cmbQualification.BackColor = vbWhite
txtCity.BackColor = vbWhite
txtState.BackColor = vbWhite
txtCountry.BackColor = vbWhite
ValidateForm = True
If Trim(txtName.Value) = "" Then
MsgBox "Indiquez le nom et prénom", vbOKOnly + vbInformation, "Name"
txtName.BackColor = vbRed
txtName.Activate
ValidateForm = False
ElseIf optMme.Value = False And optMle.Value And OptMr.Value = False And optMle.Value = False Then
MsgBox "Indiquez le Genre.", vbOKOnly + vbInformation, "Genre"
ValidateForm = False
ElseIf cmbQualification.Text <> "Patron" And cmbQualification.Text <> "Grand Patron" And _
cmbQualification.Text <> "Employé" Then
MsgBox "Indiquez la qualification", vbOKOnly + vbInformation, "Qualification"
cmbQualification.BackColor = vbRed
cmbQualification.Activate
ValidateForm = False
ElseIf Trim(txtCity.Value) = "" Then
MsgBox "Indiquez la commune d'habitation", vbOKOnly + vbInformation, "City name"
txtCity.BackColor = vbRed
txtCity.Activate
ValidateForm = False
ElseIf Trim(txtState.Value) = "" Then
MsgBox "Indiquez le pays d'habitation", vbOKOnly + vbInformation, "State Name"
txtState.BackColor = vbRed
txtState.Activate
ValidateForm = False
ElseIf Trim(txtCountry.Value) = "" Then
MsgBox "Indiquez le département d'habitation", vbOKOnly + vbInformation, "Country Name"
txtCountry.BackColor = vbRed
txtCountry.Activate
ValidateForm = False
End If
End Function
Function Reset()
Application.ScreenUpdating = False
txtName.Value = ""
txtName.BackColor = vbWhite
'optHomme.Value = False
'optFemme.Value = False
cmbQualification.Text = ""
cmbQualification.BackColor = vbWhite
txtCity.Value = ""
txtCity.BackColor = vbWhite
txtState.Value = ""
txtState.BackColor = vbWhite
txtCountry.Value = ""
txtCountry.BackColor = vbWhite
Application.ScreenUpdating = True
End Function
Private Sub cmdReset_Click()
Dim i As Integer
i = MsgBox("Do you want to reset this form?", vbQuestion + vbYesNo + vbDefaultButton2, "Form Reset")
If i = vbYes Then
Call Reset
End If
End Sub
Private Sub cmdEffacer_Click()
Reset
End Sub
Private Sub cmdEnregistrer_Click()
Application.ScreenUpdating = False
Dim iRow As Long
iRow = Sheets("Data").Range("A1048576").End(xlUp).Row + 1
If ValidateForm = True Then
With ThisWorkbook.Sheets("Data")
.Range("A" & iRow).Value = iRow - 1
.Range("B" & iRow).Value = txtName.Value
'.Range("C" & iRow).Value = IIf(OptMr.Value = True, "Mr", "Mme")
'If .Range("C" & iRow).Value <> "" Then .Range("C" & iRow).Value = "Mle"
' ******************************************************************************
' Solution ci-dessous donné par @ChTi160
' iif imbriqué
.Range("C" & iRow).Value = IIf(OptMr.Value = True, "Mr", IIf(optMme.Value = True, "Mme", "Mle"))
' ******************************************************************************
.Range("D" & iRow).Value = cmbQualification.Text
.Range("E" & iRow).Value = txtCity.Value
.Range("F" & iRow).Value = txtState.Value
.Range("G" & iRow).Value = txtCountry.Value
End With
Call Reset
Else
Application.ScreenUpdating = True
Exit Sub
End If
Application.ScreenUpdating = True
End Sub