Bonjour
Tu utilises un ListObject donc code en conséquence et prend l'habitude donner un nom signifiant aux tableaux structurés : Tableau1 n'a pas plus de sens que Classeur1 ou Feuil1
tes lignes avant if MsgBox ne servent à rien : le nom du tableau suffit à Excel pas besoin de la feuille ni du calcul de position de sa dernière ligne
Dim j As ListRow
With [Tableau1].ListObject
Set j = .ListRows.Add
With j.Range
.Cells(1, 1) = TextBox1.Value
.Cells(1, 2) = TexBox2.Value
....
End With
End With
ou plus lisible avec les noms de colonnes dont la position peut évoluer sans toucher au code
Dim j As Long
j = [Tableau1].ListObject.ListRows.Add.Index
[tableau1[Nom]].Rows(j) = ...
[tableau1[Ville]].Rows(j) =...
[tableau1[Date]].Rows(j) = ...
[tableau1[Salaire]].Rows(j) = ...