Annuler l'action de Me.hide et Unload Me sur VBA
Bonjour à tous.
Voila en fait je dois créer un test de personnalité avec des checkbox de forme "Je suis plutôt" "ou plutôt" et j'aimerais créer une macro où si l'on a pas coché tous les choix de réponses un MsgBox apparait pour nous dire qu'il faut tout compléter.
Le soucis c'est que quand je fais ça et que je clique sur valider en admettant que je n'ai pas tout rempli, et bien le MsgBox apparait mais mon userform et les résultats incomplets apparaissent dans la base de données que j'ai créé.
Voici ma macro en l'état actuel
Private Sub Valider_Click()
' cette sub assure le transfert des données du userform vers la table excel
Dim Rng As Range
Dim NoLigne As Integer
'On effectue le transfert pour déterminer à quelles types de dominantes on appartient
With ThisWorkbook.Worksheets("BDD")
NoLigne = .Range("DebZon_BDDeval").CurrentRegion.Rows.Count + 1
If ChkVisageAnime.Value = False And ChkVisageFerme.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkDominant.Value = False And ChkAccommodant.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkEntreprenant.Value = False And ChkObeissant.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkActif.Value = False And ChkReflechi.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkFerme.Value = False And ChkConciliant.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkBavard.Value = False And ChkSilencieux.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkRefAuxPersonnes.Value = False And ChkRefALaTache.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkExpansif.Value = False And ChkReserve.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkJovial.Value = False And ChkSerieux.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
ElseIf ChkBcpDeGestes.Value = False And ChkPeuDeGestes.Value = False Then
MsgBox "Veuillez répondre à toutes les questions"
End If
If TxtFstColumn < 6 And TxtSndColumn < 6 Then
.Cells(NoLigne, 5) = "Contrôlant"
.Cells(NoLigne, 6) = UF_TDP.TxtFstColumn.Caption
.Cells(NoLigne, 7) = UF_TDP.TxtSndColumn.Caption
ElseIf TxtFstColumn < 6 And TxtSndColumn > 5 Then
.Cells(NoLigne, 5) = "Analysant"
.Cells(NoLigne, 6) = UF_TDP.TxtFstColumn.Caption
.Cells(NoLigne, 7) = UF_TDP.TxtSndColumn.Caption
ElseIf TxtFstColumn > 5 And TxtSndColumn > 5 Then
.Cells(NoLigne, 5) = "Facilitant"
.Cells(NoLigne, 6) = UF_TDP.TxtFstColumn
.Cells(NoLigne, 7) = UF_TDP.TxtSndColumn.Caption
ElseIf TxtFstColumn > 5 And TxtSndColumn < 6 Then
.Cells(NoLigne, 5) = "Promouvant"
.Cells(NoLigne, 6) = UF_TDP.TxtFstColumn
.Cells(NoLigne, 7) = UF_TDP.TxtSndColumn.Caption
End If
End With
Me.Hide
Unload Me
MsgBox "Vos données ont bien été prises en compte et ont été enregistré dans la base de donnée", vbExclamation, strValidationapp
End SubVous voyez ? il faudrait que je puisse annuler me.Hide et unload Me et le msgbox lorsqu'on valide mais que les deux checkbox sont False ! J'aimerais un genre de Me.stay...
Un GRAND MERCI à ceux qui m'aideront
C'est bon j'ai trouvé, en fait c'est la fonction .setfocus qui fait tout !
Pour ceux qui un jour galèrent, voila la formule que j'ai appliqué à toutes les checkbox
If Not (ChkVisageAnime Or ChkVisageFerme) Then
MsgBox "Veuillez compléter toutes les questions", vbExclamation
ChkVisageAnime.SetFocus