Option Explicit
Sub clearOmbre()
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 decalOmbre, shap As Shape, shadowShap As Shape
decalOmbre = 4
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 = vbRed
.Fill.Transparency = 0.7
.Line.Visible = msoFalse
.ZOrder msoSendToBack
.OnAction = shap.OnAction
End With
End If
Next
End With
End Sub
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
bonjour Patrickre
Bonjour
avant de dire que ca ne fonctionne pas il faut le faire correctement