Bonjour
Ton code ne fonctionne pas tout à fait correctement car il n'insère pas un ligne mais une cellule et écrase les cellules gérées par offset.
Personnellement j'utilise une technique qui me paraît plus sûre et je te la propose. La sélection des cellules, même si elle est suggérée par l'enregistreur, ne sert qu'à alourdir le code et l'exécution.
J'ai supposé que ta date était dans textbox3 car "tadate" était simplement pour te permettre de mettre ton appellation propre.
Private Sub CommandButton1_Click()
Dim lig As Double
If Not IsDate(TextBox3.Value) Then ' tu peux mettre un message d'erreur
' MsgBox "date incorrecte"
TextBox3.SelStart = 0
TextBox3.SelLength = Len(TextBox3.Value)
TextBox3.SetFocus
Exit Sub
End If
If Not IsNumeric(TextBox4.Value) Then ' tu peux mettre un message d'erreur
' MsgBox "montant incorrect"
TextBox4.SelStart = 0
TextBox4.SelLength = Len(TextBox3.Value)
TextBox4.SetFocus
Exit Sub
End If
lig = Sheets("Facture").Cells.SpecialCells(xlCellTypeLastCell).Row + 1
Sheets("Facture").Cells(lig, 2).Value = ComboBox1.Value
Sheets("Facture").Cells(lig, 3).Value = CDate(TextBox3.Value)
Sheets("Facture").Cells(lig, 4).NumberFormat = "# ##0,00 €"
Sheets("Facture").Cells(lig, 4).Value = TextBox4.Value
Sheets("Facture").Cells(lig, 5).Value = CheckBox1 ' tu vas avoir VRAI ou FAUX
End Sub
toujours zen