Option Explicit
Const decalOmbre& = 5           ' le decalge que l'on veut (c'est en point)
Const transparence# = 0.6       'la transparence de 0  à 1
'la couleur de l'ombre ( elle peut être exprimée en (long  , vbconstante , hex )
'exemple ici la couleur bleue(ces  4 lignes designent la même couleur )
 Const couleurOmbre& = vbBlue           'exprimé en vbconstante
'Const couleurOmbre& = &HFF0000         'exprimé en hex
'Const couleurOmbre& = 16711680         'exprimé en long
'Const couleurOmbre& = 5                'exprimé en index de la palette couleur excel
Sub clearOmbre()
    Dim shap As Shape
    With ActiveSheet
        For Each shap In .Shapes
            If Left(shap.Name, 5) = "Ombre" Then shap.Delete
        Next
    End With
End Sub
Sub Ombre_a_mes_boutons()
    Dim shap As Shape, shadowShap As Shape, couleurombreB&
    If couleurOmbre <= 56 Then couleurombreB = ThisWorkbook.Colors(couleurOmbre) Else couleurombreB = couleurOmbre
    With ActiveSheet
        clearOmbre
        For Each shap In .Shapes
            If shap.Type = 8 Then
                Set shadowShap = .Shapes.AddShape(5, shap.Left + decalOmbre, shap.Top + decalOmbre, shap.Width, shap.Height)
                With shadowShap
                    .Name = "Ombre" & shap.Name
                    .ZOrder msoSendToBack
                    .Fill.ForeColor.RGB = couleurombreB
                    .Fill.Transparency = transparence
                    .Line.Visible = msoFalse
                    .ZOrder msoSendToBack
                    .OnAction = shap.OnAction
                End With
            End If
        Next
    End With
End Sub