Re,
En partant du principe que le TS doit être utilisé comme il ce doit = sans ligne vierge
Voici le code qui fonctionne
Private Sub valider_Click()
Dim Lo As ListObject
Dim dLig As Long, dNum As String, NewNum As Integer
' Avec la feuille
With Sheets("Liste Facture")
' Avec le TS : Tableau Structuré
Set Lo = .ListObjects("Tableau5")
' Ajouter une ligne vierge
Lo.ListRows.Add AlwaysInsert:=True
' Dernière ligne vierge (normalement)
dLig = Lo.HeaderRowRange.Row + Lo.DataBodyRange.Rows.Count - 1
' Dernier numéro de facture
dNum = Lo.DataBodyRange.Cells(dLig - 1, 1)
If dNum = "" Then
MsgBox "il y a un souci avec votre tableau liste de facture" & vbCr _
& "Supprimez la/les lignes vides", vbCritical, "OUPS..."
Stop
End If
' Nouveau numéro = dernier + 1
NewNum = Right(dNum, 4) + 1
' Remplir le TS
With Lo.DataBodyRange
.Cells(dLig, 1).Value = "FNN_" & Format(NewNum, "0000")
.Cells(dLig, 2).Value = P1.Value
.Cells(dLig, 4).Value = P2
.Cells(dLig, 6).Value = P3
.Cells(dLig, 9).Value = MP1
.Cells(dLig, 10).Value = CDate(txdate)
.Cells(dLig, 11).Value = Civillité
.Cells(dLig, 12).Value = nom
.Cells(dLig, 13).Value = prenom
.Cells(dLig, 14).Value = adresse
.Cells(dLig, 15).Value = Val(cp)
.Cells(dLig, 16).Value = ville
End With
End With
P2 = "-": P3 = "-": adresse = "": nom = "": prenom = "": ville = "": cp = ""
End Sub
A+