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
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