Bonjour Laurent, le Forum
Tu n'étais pas trop loin de ta solution, voici ton Private Module du UserForm2 révisé/corrigé et commenté :
'Pour t'obliger à déclarer tes Variables (ty aurais vu que grace à ça "TextBox_Date" n'existait pas dans ton UserForm)
Option Explicit
'A l'initialise, pas la peine de vider les TextBox, elles sont vides !
Private Sub UserForm_Initialize()
'Par Contre je mets le bouton Valider Défaut pour que la saisie se fasse avec [Entrée]
Me.CommandButton1.Default = True
End Sub
'Je mets le Focus pour La TextBox Date à l'Activation.
Private Sub UserForm_Activate()
Me.TextBox1.SetFocus
End Sub
Private Sub CommandButton1_Click()
Dim TheTextBox As Control 'Déclaration de Variable pour la boucle de nettoyage
Dim TheDate As Date 'Déclaration de Variable pour récupérer la Date dans les deux cellules
Dim L As Integer 'Déclaration de Variable pour la Dernière Ligne Vide
'Ici le Test, si c'est bon on initilaise la Variable
If IsDate(Me.TextBox1) Then
TheDate = CDate(Me.TextBox1)
Else
'Sinon on fait le message et on sort
MsgBox "Veuillez entrer une date valide.", vbOKOnly, "Erreur"
Me.TextBox1.SetFocus
Exit Sub
End If
'On trouve la dernière ligne
L = Sheets("Chambre_Rec").Range("A65536").End(xlUp).Row + 1
'Ok ça tu connais, mais donc on envoie la Variable TheDate au lieu de la TextBox1
With Sheets("Chambre_Rec")
.Range("A" & L).Value = TheDate
.Range("B" & L).Value = TextBox2.Value
.Range("C" & L).Value = TextBox4.Value
.Range("D" & L).Value = TextBox6.Value
.Range("G" & L).Value = TheDate
.Range("H" & L).Value = TextBox3.Value
.Range("I" & L).Value = TextBox5.Value
.Range("J" & L).Value = TextBox7.Value
End With
'Ici c'est une astuce pour vider toutes tes TextBox par une Boucle...
For Each TheTextBox In Me.Controls
If TypeOf TheTextBox Is MSForms.TextBox Then
TheTextBox = ""
End If
Next
Me.TextBox1.SetFocus
End Sub
Private Sub CommandButton2_Click()
Unload UserForm2
End Sub
Bon Appétit
@+Thierry