VBA enregistrement non complet

Bonsoir,

Je voudrais que lorsqu'on clique sur mon bouton "btnAjouter" (qui permet d'ajouter un client à ma bdd), il affiche le msg d'erreur si tout n'est pas complet mais qu'il ne me rempli pas un nouvel enregistrement dans ma bdd sans avoir toutes les informations.

'Procédure permettant d'ajouter un nouveau client dans la base de données
Private Sub btnAjouter_Click()
    'On teste la saisie des champs dans le formulaire
    If Len(Me.txtNom) = 0 Then
        lblMessage = "Veuillez saisir le nom du client"
        'MsgBox "Veuillez saisir le nom du client"
        Me.txtNom.SetFocus
    ElseIf Len(Me.txtPrenom) = 0 Then
        lblMessage = "Veuillez saisir le prénom du client"
        Me.txtPrenom.SetFocus
    ElseIf Len(Me.txtDateNaissance) = 0 Then
        lblMessage = "Veuillez saisir la date de naissance du client"
        Me.txtDateNaissance.SetFocus
    ElseIf Len(Me.cboProfession) = 0 Then
        lblMessage = "Veuillez sélectionner la profession du client"
        Me.cboProfession.SetFocus
    ElseIf Len(Me.cboPaiement) = 0 Then
        lblMessage = "Veuillez sélectionner la fréquence de paiement"
        Me.cboPaiement.SetFocus
    ElseIf Len(Me.txtNbPersonne) = 0 Then
        lblMessage = "Veuillez saisir le nombre de personne à assurer auprès du client"
        Me.txtNbPersonne.SetFocus
    ElseIf (Me.OptnAcciCorpNon) = False And (Me.OptnAcciCorpOui) = False Then
        lblMessage = "Veuillez choisir si le client prend une assurance d'accidents corporels du client"
        Me.txtPrenom.SetFocus
    Else
        lblMessage = ""
    End If

    Sheets("Clients").Activate
    Range("A1").Select
    Selection.End(xlDown).Select 'On se positionne sur la dernière ligne non vide
    Selection.Offset(1, 1).Select 'On se décale d'une ligne vers le bas
    ActiveCell = txtNom.Value
    ActiveCell.Offset(0, 1).Value = txtPrenom
    ActiveCell.Offset(0, 2).Value = txtDateNaissance
    ActiveCell.Offset(0, 3).Value = cboProfession
    ActiveCell.Offset(0, 4).Value = cboAssuranceHospi
    If (Me.OptnAcciCorpOui) = True Then
        ActiveCell.Offset(0, 5).Value = "Oui"
    Else
        ActiveCell.Offset(0, 5).Value = "Non"
    End If
    ActiveCell.Offset(0, 6).Value = txtCapitaux
    ActiveCell.Offset(0, 7).Value = txtNbPersonne

   With ActiveSheet.ListObjects(1)
        'si dernière ligne du tableau non vide, ajout d'une ligne
        If .ListColumns("Num Client").DataBodyRange.Rows(.ListRows.Count) <> Empty Then .ListRows.Add
        'incrémentation automatique du numéro de client
        .ListColumns("Num Client").DataBodyRange.Rows(.ListRows.Count) = Application.Max(.ListColumns("Num Client").DataBodyRange) + 1
    End With

End Sub

bonsoir,

une proposition d'adaptation de ton code, à tester :

'Procédure permettant d'ajouter un nouveau client dans la base de données
Private Sub btnAjouter_Click()
'On teste la saisie des champs dans le formulaire
    If Len(Me.txtNom) = 0 Then
        lblMessage = "Veuillez saisir le nom du client"
        'MsgBox "Veuillez saisir le nom du client"
        Me.txtNom.SetFocus
    ElseIf Len(Me.txtPrenom) = 0 Then
        lblMessage = "Veuillez saisir le prénom du client"
        Me.txtPrenom.SetFocus
    ElseIf Len(Me.txtDateNaissance) = 0 Then
        lblMessage = "Veuillez saisir la date de naissance du client"
        Me.txtDateNaissance.SetFocus
    ElseIf Len(Me.cboProfession) = 0 Then
        lblMessage = "Veuillez sélectionner la profession du client"
        Me.cboProfession.SetFocus
    ElseIf Len(Me.cboPaiement) = 0 Then
        lblMessage = "Veuillez sélectionner la fréquence de paiement"
        Me.cboPaiement.SetFocus
    ElseIf Len(Me.txtNbPersonne) = 0 Then
        lblMessage = "Veuillez saisir le nombre de personne à assurer auprès du client"
        Me.txtNbPersonne.SetFocus
    ElseIf (Me.OptnAcciCorpNon) = False And (Me.OptnAcciCorpOui) = False Then
        lblMessage = "Veuillez choisir si le client prend une assurance d'accidents corporels du client"
        Me.txtPrenom.SetFocus
    Else
        lblMessage = ""
        Sheets("Clients").Activate
        Range("A1").Select
        Selection.End(xlDown).Select    'On se positionne sur la dernière ligne non vide
        Selection.Offset(1, 1).Select    'On se décale d'une ligne vers le bas
        ActiveCell = txtNom.Value
        ActiveCell.Offset(0, 1).Value = txtPrenom
        ActiveCell.Offset(0, 2).Value = txtDateNaissance
        ActiveCell.Offset(0, 3).Value = cboProfession
        ActiveCell.Offset(0, 4).Value = cboAssuranceHospi
        If (Me.OptnAcciCorpOui) = True Then
            ActiveCell.Offset(0, 5).Value = "Oui"
        Else
            ActiveCell.Offset(0, 5).Value = "Non"
        End If
        ActiveCell.Offset(0, 6).Value = txtCapitaux
        ActiveCell.Offset(0, 7).Value = txtNbPersonne

        With ActiveSheet.ListObjects(1)
            'si dernière ligne du tableau non vide, ajout d'une ligne
            If .ListColumns("Num Client").DataBodyRange.Rows(.ListRows.Count) <> Empty Then .ListRows.Add
            'incrémentation automatique du numéro de client
            .ListColumns("Num Client").DataBodyRange.Rows(.ListRows.Count) = Application.Max(.ListColumns("Num Client").DataBodyRange) + 1
        End With
    End If

End Sub
Rechercher des sujets similaires à "vba enregistrement complet"