J’ai ressorti un ancien fichier de mes tiroirs et je rencontre un problème de vérification de remplissage de champs qui ne se fait plus.
Private Sub bbtnValider_Click()
'Déclaration des variables
Dim ligne As Integer
Dim fd As Worksheet
'Affectation des variables
ligne = 2
Set fd = Feuil4
'Test de contrôle du remplissage des différents champs
If Len(Me.cbxSalarié) = 0 Then
Me.lblMessage = "Veuillez sélectionner le salarié."
Me.cbxSalarié.SetFocus
ElseIf Len(Me.txtDateDebut) = 0 Then
Me.lblMessage = "Veuillez saisir la date de début de l'activité."
Me.txtDateDebut.SetFocus
ElseIf Len(Me.txtDateFin) = 0 Then
Me.lblMessage = "Veuillez saisir la date de fin de l'activité."
Me.txtDateFin.SetFocus
ElseIf Len(Me.cbxActivité) = "" Then
Me.lblMessage = "Veuillez sélectionner l'activité."
Me.cbxActivité.SetFocus
Else 'Si tous les champs sont remplis, on procède à l'enregistrement.
'Recherche de la première ligne vide
While fd.Cells(ligne, 3).Value <> ""
ligne = ligne + 1
Wend
'Inscription du nouvel enregistrement dans la base
fd.Cells(ligne, 2).Value = UCase(Me.cbxSalarié)
fd.Cells(ligne, 3).Value = CDate(Me.txtDateDebut)
fd.Cells(ligne, 4).Value = CDate(Me.txtDateFin)
fd.Cells(ligne, 5).Value = Me.cbxActivité
End If
'On vide le formulaire
Call BTNAnnuler_Click
'On ferme le formulaire
Call btnQuitter_Click
'Libération des variables
Set fd = Nothing
Range("G3").Select
End Sub
Option Explicit
Private Sub bbtnValider_Click()
'Déclaration des variables
Dim ligne As Integer
Dim fd As Worksheet
'Affectation des variables
ligne = 2
Set fd = Feuil4
'Test de contrôle du remplissage des différents champs
If Len(Me.cbxSalarié) = 0 Then
Me.lblMessage = "Veuillez sélectionner le salarié."
Me.cbxSalarié.SetFocus
Exit Sub
ElseIf Len(Me.txtDateDebut) = 0 Then
Me.lblMessage = "Veuillez saisir la date de début de l'activité."
Me.txtDateDebut.SetFocus
Exit Sub
ElseIf Len(Me.txtDateFin) = 0 Then
Me.lblMessage = "Veuillez saisir la date de fin de l'activité."
Me.txtDateFin.SetFocus
Exit Sub
ElseIf Len(Me.cbxActivité) = "" Then
Me.lblMessage = "Veuillez sélectionner l'activité."
Me.cbxActivité.SetFocus
Exit Sub
Else 'Si tous les champs sont remplis, on procède à l'enregistrement.
Me.lblMessage = ""
'Recherche de la première ligne vide
While fd.Cells(ligne, 3).Value <> ""
ligne = ligne + 1
Wend
'Inscription du nouvel enregistrement dans la base
fd.Cells(ligne, 2).Value = UCase(Me.cbxSalarié)
fd.Cells(ligne, 3).Value = CDate(Me.txtDateDebut)
fd.Cells(ligne, 4).Value = CDate(Me.txtDateFin)
fd.Cells(ligne, 5).Value = Me.cbxActivité
End If
'On vide le formulaire
Call BTNAnnuler_Click
'On ferme le formulaire
Call btnQuitter_Click
'Libération des variables
Set fd = Nothing
Range("G3").Select
End Sub
'Procédure de RAZ du formulaire
Private Sub BTNAnnuler_Click()
Me.cbxSalarié = ""
Me.txtDateDebut = ""
Me.txtDateFin = ""
Me.cbxActivité = ""
Me.lblMessage = ""
End Sub
Private Sub btnQuitter_Click()
Unload Me
End Sub
Dans ton « If » il regarde si les champs sont remplis et s’il en manque un, il affiche le champ dans un label, sauf que sur ta version, il continue la macro, le vide et le ferme.
En ajoutant un « Exit Sub », il sort de la procédure après avoir affiché le message correspondant.