Garder le formulaire ouvert si la réponse à MsgBox est non

Bonsoir,

j'aurai besoin d'un peu d'aide pour pouvoir garder le formulaire ouvert quand je répond non à la msgBox.

actuellement, j'ai une msgBox qui crée une ligne si je réponds oui et ferme le formulaire mais je souhaiterai que si je réponds NON (ou abandonner) le formulaire reste ouvert, n'enregistre pas la les données et positionne la curseur sur la TexBoxAff.

j'ai cherché dans les forums mais ou je ne comprend pas ou ???

voici le code:

'*******************************************************************************
'Enregistre les données
'*******************************************************************************
Private Sub BtCreer_Click()
'
Dim L%
'
If MsgBox("Confirmez-vous l'insertion de ce nouveau dossier ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
    With Sheets("GAZ 33")
        L = .Range("A" & Rows.Count).End(xlUp).Row + 1
        'Pour placer le nouvel enregistrement à la première ligne non vide du tableau
        .Range("A" & L).Value = Me.TextBoxAff.Text            ' N° aff
        .Range("B" & L).Value = Me.TextBoxClient.Text         ' Client
        .Range("C" & L).Value = Me.TextBoxTelBu.Text         ' tel bureau
        .Range("D" & L).Value = Me.TextBoxVille.Text          ' Ville
        ' Trie sur la colonne A (Cells 2,1) ou A2
        'Mettre Ascending pour ordre A à Z et Descending pour ordre Z à A
        .Range("A2:N" & L).Sort Key1:=.Range("A2"), Order1:=xlDescending, Orientation:=xlTopToBottom
    End With
End If
' Efface les donnée de la feuille formulaire
Unload UserForm1
Worksheets("Boutons").Activate
'
End Sub

je met le fichier en PJ

8msgboxnon.xlsm (24.70 Ko)

en vous remerciant pour votre aide

Bonsoir

Essayez comme ceci :

Private Sub BtCreer_Click()
'
Dim L as long
'
If MsgBox("Confirmez-vous l'insertion de ce nouveau dossier ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
    With Sheets("GAZ 33")
        L = .Range("A" & .Rows.Count).End(xlUp).Row + 1
        'Pour placer le nouvel enregistrement à la première ligne non vide du tableau
        .Range("A" & L).Value = Me.TextBoxAff.Text            ' N° aff
        .Range("B" & L).Value = Me.TextBoxClient.Text         ' Client
        .Range("C" & L).Value = Me.TextBoxTelBu.Text         ' tel bureau
        .Range("D" & L).Value = Me.TextBoxVille.Text          ' Ville
        ' Trie sur la colonne A (Cells 2,1) ou A2
        'Mettre Ascending pour ordre A à Z et Descending pour ordre Z à A
        .Range("A2:N" & L).Sort Key1:=.Range("A2"), Order1:=xlDescending, Orientation:=xlTopToBottom
    End With
   ' Décharge le formulaire
    Unload UserForm1
Else:
TextBoxAff.SetFocus : Exit Sub
End If

Worksheets("Boutons").Activate
'
End Sub

Cordialement

Merci beaucoup Dan

bonne soirée

Salut fmas le fil

La méthode à Dan est simple et efficace, moi j'aime me torturer la tête, donc avec une variable de plus

Mais elle efface les TextBox.

Private Sub BtCreer_Click()
'
    Dim L%, e As Control
    '
    Select Case MsgBox("Confirmez-vous l'insertion de ce nouveau dossier ?", vbYesNo, "Demande de confirmation d'ajout")
        Case VbMsgBoxResult.vbYes

            With Sheets("GAZ 33")
                L = .Range("A" & Rows.Count).End(xlUp).Row + 1
    'Pour placer le nouvel enregistrement à la première ligne non vide du tableau
                .Range("A" & L).Value = Me.TextBoxAff.Text            ' N° aff
                .Range("B" & L).Value = Me.TextBoxClient.Text         ' Client
                .Range("C" & L).Value = Me.TextBoxTelBu.Text         ' tel bureau
                .Range("D" & L).Value = Me.TextBoxVille.Text          ' Ville
    ' Trie sur la colonne A (Cells 2,1) ou A2
    'Mettre Ascending pour ordre A à Z et Descending pour ordre Z à A
                .Range("A2:N" & L).Sort Key1:=.Range("A2"), Order1:=xlDescending, Orientation:=xlTopToBottom
            End With
           Unload UserForm1

        Case VbMsgBoxResult.vbNo
            For Each e In Me.Controls
                If TypeOf e Is msforms.TextBox Then
                    e.Text = ""
                End If
            Next
            Me.TextBoxAff.SetFocus

        Case Else
    End Select

End Sub

Tout le monde à bien compris que c'est pour rigoler, bon WE à tous

Merci Jean Paul pour ta proposition qui me convient aussi et que j'ai gardé en supprimant cette ligne pour ne pas remettre à "blanc" le formulaire:

       e.Text = ""

en vous remerciant tous les deux

bonne soirée

Rechercher des sujets similaires à "garder formulaire ouvert reponse msgbox"