Pb de vérification de remplissage de champs dans un formulaire qui ne se fait plus

Bonsoir à tous,

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

Si un pro du VBA passe par là, je suis preneur.
Cordialement.
Suivi des activités sans changement.xlsm (56,1 Ko)

Bonjour,
Teste comme ceci

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

Bonjour Mimimathy,

Toujours aussi efficace, merci pour la réponse, c’est ok tout fonctionne.

A ton avis d’où pouvait provenir l’erreur, j’ai d’autres fichiers qui possèdent la même architecture est qui fonctionnent ?

Bonne journée.
Cordialement.

Bonjour,

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.

Bonjour,

Merci pour le renseignement, j’en tiendrait compte si, d’aventure, cela se reproduit sur mes autres fichiers.

Bonne journée.
Cordialement.