J'essaye,
Sub Bouton1_Cliquer()
Sheets(2).Activate
End Sub
Ce 1er code s'exécute lors du clic sur le bouton onglet 1, et affiche à l'écran l'onglet 2.
Sub clic_case()
Dim a As Variant
Dim c As Object
Dim li As Long
With Sheets(2)
a = Application.Caller
Set c = .Shapes(a).TopLeftCell 'renvoi l'objet range où l'objet est cliqué
li = c.Row ' n° ligne de l'objet range
If .Shapes(a).TextFrame.Characters.Text = "ü" Then
.Shapes(a).TextFrame.Characters.Text = ""
traiter Cells(li, 4), False 'exécute la routine 'traiter' avec des valeurs
Else
.Shapes(a).TextFrame.Characters.Text = "ü"
traiter Cells(li, 4), True 'exécute la routine 'traiter' avec des valeurs
End If
End With
End Sub
Ce second code s'exécute lors d'un clic sur une forme (représentant la case à cocher) qui est dans une cellule (objet range)
Sub traiter(ByVal Vlr As String, ByVal Cch As Boolean)
Dim x As Long
With Sheets(1)
For x = 5 To 17
'si texte trouvé et case décochée, effacer le texte dans la liste onglet 1
If .Cells(x, 3) = Vlr And Not (Cch) Then .Cells(x, 3) = "": Exit For
'si cellule vide et case cochée, écrire le texte dans la liste onglet 1
If .Cells(x, 3) = "" And Cch Then .Cells(x, 3) = Vlr: Exit For
Next x
End With
End Sub
Ce dernier code permet d'écrire dans la feuille 1 la valeur de la cellule contenant votre texte de la ligne de la case cochée.
Ce code ne traite pas d'éventuelles erreurs qui pourraient être rencontrées, je n'ai pas approfondi...