Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim a, vbc As Object, i%
a = [Liste]
If Not IsArray(a) Then ReDim a(1 To 100) As String '100 modifiable
For Each vbc In Me.VBProject.VBComponents
If vbc.Name = Sh.CodeName Then
For i = UBound(a) - 1 To 1 Step -1
a(i + 1) = a(i) 'décale chaque item d'un cran vers la fin de liste
Next i
a(1) = vbc.Name 'toujours en tête de liste
Me.Names.Add "Liste", a ', Visible:=False 'nom défini, éventuellement masqué
End If
Next
End Sub
Sub derniere_feuille()
Dim a, i%, x$, s As Object
a = [Liste]
If IsArray(a) Then
For i = 1 To UBound(a)
x = a(i)
For Each s In Sheets
If s.CodeName = x Then s.Select: Exit Sub
Next s, i
End If
MsgBox "Créez de nouvelles feuilles..."
End Sub