Sub NomFeuille2()
Dim Sh As Worksheet, TmpSh As Worksheet, Tmp As Variant, TmpName As String
For Each Sh In Sheets
If Sh.Name <> "Recap" And Not IsEmpty(Sh.Range("M5")) Then
Sh.Name = Sh.Index
Tmp = Split(Sh.Range("M5"), "-")
TmpName = Left(Trim(Tmp(UBound(Tmp))), 31)
On Error Resume Next
Set TmpSh = Sheets(TmpName)
On Error GoTo 0
If Not TmpSh Is Nothing Then
Sh.Name = Left(Trim(TmpName), 29) & Sh.Index
Set TmpSh = Nothing
Else
Sh.Name = Left(Trim(TmpName), 31)
End If
End If
Next Sh
End Sub