re,
une autre possibilité,
uniquement 2 macro pour l'ensemble des bouton (A à W)
execute une fois la macro "Affecte_macro_ShapeClick"
puis fait le test par un clic sur les boutons de A, B, C, E,... etc...
Sub ShapeClick()
Dim NomShape As String
NomShape = Application.Caller
g = Right(NomShape, 2)
n = Val(g) / 2
lettre = "abcdefghijklmnopqrstuvw"
chiffre = Array(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46)
t = Mid(lettre, n, 1)
Range("H:H").Find(What:=t & "*", After:=Range("H1"), LookIn:=xlValues, LookAt:=xlWhole).Activate
End Sub
Sub Affecte_macro_ShapeClick()
For Each shp In ActiveSheet.Shapes
x = Val(Right(shp.Name, 2))
If x <= 46 Then shp.OnAction = "ShapeClick"
Next
End Sub