Sub change()
Dim tb As Shape, tc As Shape, bk As Shape
Dim idx As String
'
' Contrôle de l'appelant
If TypeName(Application.Caller) <> "String" Then Exit Sub
'
' Si string, spliter le nom dans un tableau
idx = Split(Application.Caller, "_")(2)
If Not IsNumeric(idx) Then Exit Sub
'
' Les objets
With ActiveSheet
Set tb = .Shapes("Toggle_Textbox_" & idx)
Set tc = .Shapes("Toggle_Circle_" & idx)
Set bk = .Shapes("Toggle_Background_" & idx)
End With
'
' Si OFF
If tb.TextFrame.Characters.Text = "OFF" Then
tb.TextFrame.Characters.Text = "ON"
tc.Left = bk.Left - tc.Width / 2
tc.Fill.ForeColor.RGB = RGB(8, 104, 24)
Else
tb.TextFrame.Characters.Text = "OFF"
tc.Left = bk.Left + bk.Width - tc.Width / 2
tc.Fill.ForeColor.RGB = RGB(255, 255, 255)
End If
End Sub