'
' Nom de l'onglet, et valeur de la cellule (contenant le nom de l'onglet)
Dim tabName, tabCellName As String
'
' A l'ouverture de l'onglet...
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' Evite de réentrer dans _SheetChange()
Application.EnableEvents = False
' Par défaut la cellule $A2 prend le nom de l'onglet
Sh.Range("A2").Value = Sh.Name
Application.EnableEvents = True
tabName = Sh.Name
tabCellName = Sh.Name
End Sub
'
' Si modification de la cellule $A2 (Nom de l'onglet), repercuter
' la modification sur le nom de l'onglet et vice et versa.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
' Modification de la cellule $A2
If Target.Column = 1 And Target.Row = 2 Then
Sh.Name = Target.Value
' Modification d'une autre cellule, mais entre temps
' le nom de l'onglet a été modifié.
ElseIf Sh.Name <> tabCellName Then
tabCellName = Sh.Name
tabName = Sh.Name
' Evite de réentrer dans _SheetChange()
Application.EnableEvents = False
Sh.Range("A2").Value = Sh.Name
Application.EnableEvents = True
End If
End Sub