Microsoft 365 ombrage bouton

riv

XLDnaute Nouveau
bonjour a tous comment peut on ajouter un effet d'ombrage a un bouton sur Excel 365, on m'a parler de l'onglet "outils de dessin" mais je n'ai rien

merci d'avance

1677739522010.png
 

patricktoulon

XLDnaute Barbatruc
Bonjour
si ton bouton est un shape
pour les shapes c'est dans le menu contextuel
format de la forme et dans le menu à gauche "Effet" puis "Ombre"
voir capture
demo.gif


si ton bouton est un activX dans ses propriéte (dans VBE) c'est shadow (true ou false )
demo.gif
 

patricktoulon

XLDnaute Barbatruc
bon allez un peu de bricolage ne fait pas de mal ça détend
VB:
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

demo.gif
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour
avant de dire que ca ne fonctionne pas il faut le faire correctement


  1. si tu utilise option explicit tache de déclarer toute les variables
  2. et pour que ça fonctionne au click du bouton il faut bien évidement lui affecter la macro "Ombre_a_mes_boutons"
 

Pièces jointes

  • Classeur1(2).xlsm
    18.3 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
re
et pour te facilité la tache
je te propose de mettre les variable en constante
de façon a ce que tu n'est que ces 4 lignes a modifier pour changer la couleur , la transparence , le decalage de l'ombre
et je te montre comment on peut utiliser une des 4 façons d'initier la couleur de l'ombre
VB:
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
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
321

Statistiques des forums

Discussions
314 630
Messages
2 111 359
Membres
111 114
dernier inscrit
ADA1327