Public Sub a()
Dim monShape As Excel.Shape
Dim isShape As Boolean
isShape = False
Dim curSheet As Excel.Worksheet
Dim s As Excel.Shape
'parcourir toutes les feuilles
For Each curSheet In ThisWorkbook.Sheets
isShape = False ' on par du principe qu'il n'y a pas de shape contenant "toto" dans la feuille
For Each s In curSheet.Shapes 'parcourir tous les shape de la feuille actuelle
If s.TextFrame.Characters(Start:=1, Length:=4).Text = "toto" Then
' si le contenu commence par "toto"
Set monShape = s 'récupérer le shape
isShape = True
End If
Next s
'pour chaque page, afficher le nom du shape si il existe
If isShape Then
MsgBox ("feuille: " & curSheet.Name & vbNewLine & "nom du shape contenant ""toto"": " & monShape.Name)
Else
MsgBox ("pas de shape contenant ""toto"" dans la feuille: " & curSheet.Name)
End If
Next curSheet
End Sub