VBA enregistrement non complet
s
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