Ça serait plus sûr avec ton classeur, pour connaître toutes les feuilles qui y sont ; comme tu as utilisé :
Sheets.Add After:=ThisWorkbook.Sheets(3) c'est qu'il doit y avoir au moins 3 feuilles, et tu insères
la nouvelle feuille toujours après la 3ème feuille, même quand il y en aura bien plus.
Pour faire ta demande, je pense que c'est possible sans avoir à tester si une feuille existe ou non.
Essaye ce code VBA :
Private Sub lstPeriode_Change()
Dim NumLigne As Integer, n As Integer, chn As String
NumLigne = Me.lstPeriode.ListIndex + 4 'Numéro de période
Me.TextBox1.Value = Sheets("Liste").Cells(NumLigne, 9).Value ' Date 1
Me.TextBox2.Value = Sheets("Liste").Cells(NumLigne, 10).Value 'Date 2
Sheets.Add After:=ThisWorkbook.Sheets(3): n = Worksheets.Count - 3
chn = "Rapport P" & lstPeriode.ListIndex + 1 & "-" & Right(TextBox1.Value, 4)
If n > 1 Then chn = chn & "-" & n
ActiveSheet.Name = chn
End Sub
Si tu vois qu'une feuille Rapport ne se termine pas par le bon numéro,
ajuste le -3 de n = Worksheets.Count - 3
J'ai été long à te répondre car j'ai dû vérifier la logique de ton code VBA
pour y intégrer le mien (et en plus, je tape pas vite ! ).
N'oublie pas de me donner ton avis.
dhany