Jolis boutons avec animation Appui pour Feuille Excel

Jolis boutons avec animation Appui pour Feuille Excel 1.1

  • Initiateur de la discussion Initiateur de la discussion nullosse
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nullosse

XLDnaute Occasionnel
nullosse a soumis une nouvelle ressource:

Jolis boutons avec animation Appui pour Feuille Excel - code VBA pour créer de jolis boutons (avec animation) dans feuille Excel pour exécuter des macros

Salut,
je vous propose du code VBA pour créer de jolis boutons pour exécuter des macros dans des feuilles Excel.
Les boutons sont créés à partir de formes.
Il y a 4 styles de boutons :
Bouton Bleu
Bouton Sombre
Bouton Apple
Bouton Néon

Regarde la pièce jointe 1230517

La fonction CreatePremiumButton permet de créer les boutons
VB:
CreatePremiumButton( _
    ByVal BtnName As String, _
    ByVal Caption As String, _
    ByVal PosX As Double, _
    ByVal PosY As...

En savoir plus sur cette ressource...
 
nullosse a mis à jour Jolis boutons avec animation Appui pour Feuille Excel avec une nouvelle entrée de mise à jour:

Jolis boutons avec animation Appui pour Feuille Excel

Salut,
Voici une mise à jour ( V1.1)
Les Changements :
Il y a maintenant 6 styles de boutons :
Bouton Bleu
Bouton Vert
Bouton Orange
Bouton Sombre
Bouton Apple
Bouton Néon
Regarde la pièce jointe 1230908

La fonction CreatePremiumButton a maintenant un nouveau paramètre Font qui permet de changer le style de la police du texte du bouton.
VB:
VB:
Sub CreatePremiumButton( _
    ByVal BtnName As String, _
    ByVal Caption As String, _
    ByVal PosX As...

Lire le reste de cette entrée de mise à jour...
 
Bonjour Nullosse,
Jolie démo.
Mais j'ai un petit souci lors de réactivation du bouton "Sauver" ( sur Win10 XL2007 VBA 6.3 )
Initial :
1780826705697.png

Désactivation :
1780826729462.png

Réactivation :
1780826749019.png

Cordialement.
 
Bonjour Nullosse,
Jolie démo.
Mais j'ai un petit souci lors de réactivation du bouton "Sauver" ( sur Win10 XL2007 VBA 6.3 )
Initial :
Regarde la pièce jointe 1230911
Désactivation :
Regarde la pièce jointe 1230912
Réactivation :
Regarde la pièce jointe 1230913
Cordialement.
Salut Sylvanu,
il doit y avoir quelque chose d'incompatible dans la réactivation dans la version 2007 d'Excel : en version 2010 , il n'y a pas le problème.
Il faudrait voir si en fait ce n'est pas la création des boutons qui pose problème : Exécuter la procédure CreateAllDemoButtons qui recrée tous les boutons.
 
Dernière édition:
Il faudrait voir si en fait ce n'est pas la création des boutons qui pose problème : Exécuter la procédure CreateAllDemoButtons qui recrée tous les boutons.
Exact, mais si c'est spécifique à 2007je laisse tomber. Ces problèmes d'incompatibilité sont agaçant et difficile à cerner.
Pour le fun, voici le résultat sur 2007 . 😅

Test5.gif
 
Re,
Dans la fonction :
VB:
    ' =====================================
    ' 3D
    ' =====================================
    With shp.ThreeD
        .Visible = msoTrue
        .BevelTopType = msoBevelCircle
        .BevelTopDepth = 3
        .BevelTopInset = 2
    End With
Il me suffit de passer le Vivible de True à False pour que tout redevienne correct.
Mais si c'est spécifique à 2007 je laisse tomber.
A l'origine je pensais que cela touchait toutes les versions, c'est pour ça que je vous l'ai signalé.
Bonne fin de WE.
 
Re, Dans la fonction :
VB:
 ' ===================================== ' 3D ' ===================================== With shp.ThreeD .Visible = msoTrue .BevelTopType = msoBevelCircle .BevelTopDepth = 3 .BevelTopInset = 2 End With
Il me suffit de passer le Vivible de True à False pour que tout redevienne correct. Mais si c'est spécifique à 2007 je laisse tomber. A l'origine je pensais que cela touchait toutes les versions, c'est pour ça que je vous l'ai signalé. Bonne fin de WE.
Bonjour nullosse, Le Forum @nullosse : TOP NICKEL ! Good JOB !
Re, Dans la fonction :
VB:
 ' ===================================== ' 3D ' ===================================== With shp.ThreeD .Visible = msoTrue .BevelTopType = msoBevelCircle .BevelTopDepth = 3 .BevelTopInset = 2 End With
Il me suffit de passer le Vivible de True à False pour que tout redevienne correct. Mais si c'est spécifique à 2007 je laisse tomber. A l'origine je pensais que cela touchait toutes les versions, c'est pour ça que je vous l'ai signalé. Bonne fin de WE.
Exact, mais si c'est spécifique à 2007je laisse tomber. Ces problèmes d'incompatibilité sont agaçant et difficile à cerner. Pour le fun, voici le résultat sur 2007 . 😅 Regarde la pièce jointe 1230914
Bonjour Nullosse, Jolie démo. Mais j'ai un petit souci lors de réactivation du bouton "Sauver" ( sur Win10 XL2007 VBA 6.3 ) Initial : Regarde la pièce jointe 1230911 Désactivation : Regarde la pièce jointe 1230912 Réactivation : Regarde la pièce jointe 1230913 Cordialement.
 
Bonjour @nullosse tu a oublié un detail
selon la longeur de texte même si ça devrait rentrer le texte est wrappé
il te faut a minima faire sauter les marges
et on pourrait même ajouter l'option d'autosize
j'ai ajouté un argument a la fonction en optionnel
VB:
' =========================================================
'   CREATION GENERIQUE
' =========================================================
Sub CreatePremiumButton( _
    ByVal BtnName As String, _
    ByVal Caption As String, _
    ByVal PosX As Double, _
    ByVal PosY As Double, _
    ByVal BtnWidth As Double, _
    ByVal BtnHeight As Double, _
    ByVal Style As BTN_STYLE, _
    ByVal MacroToCall As String, _
    Font As BTN_FONT, _
    Optional ByVal BaseColor As Long = -1, _
    Optional SizeAuto As Boolean = False)

    Dim ws As Worksheet, shp As Shape
    Set ws = ActiveSheet
    ' Suppression ancien bouton
    On Error Resume Next
    ws.Shapes(BtnName).Delete
    On Error GoTo 0
    ' Création
    Set shp = ws.Shapes.AddShape( _
        Type:=msoShapeRoundedRectangle, _
        left:=PosX, _
        top:=PosY, _
        Width:=BtnWidth, _
        height:=BtnHeight)
    shp.Name = BtnName
    ' =========================================
    ' TEXTE
    ' =========================================
    shp.TextFrame2.TextRange.Text = Caption
    With shp.TextFrame2.TextRange.Font
        .Name = Font.Name
        .Size = Font.Size
        .Fill.ForeColor.RGB = Font.Color
        .Bold = Font.Bold
        .Italic = Font.Italic
    End With
    '**********************************************************************
    'evite le wrap text si le texte est trop grand de quelque milimètres
         With shp.TextFrame2
            .MarginLeft = 0
            .MarginRight = 0
            .MarginTop = 0
            .MarginBottom = 0
            .WordWrap = msoFalse
            .VerticalAnchor = msoAnchorMiddle
            .TextRange.ParagraphFormat.Alignment = msoAlignCenter
            If SizeAuto Then .AutoSize = msoAutoSizeShapeToFitText
       End With
   '***********************************************************************
   shp.Line.Visible = msoFalse
    ' =========================================
    ' STYLE
    ' =========================================
    ApplyButtonStyle shp, Style, BaseColor
    ' =========================================
    ' TAGS POUR ANIMATION
    ' =========================================
    If Len(shp.AlternativeText) = 0 Then
       shp.AlternativeText = MacroToCall & "|1|" & _
           RGBToStr(shp.Fill.ForeColor.RGB) & "|" & _
           RGBToStr(shp.Fill.BackColor.RGB) & "|" & _
           RGBToStr(shp.TextFrame2.TextRange.Font.Fill.ForeColor.RGB)
    End If
    ' =========================================
    ' ACTION
    ' =========================================
    shp.OnAction = "PremiumButtonClick"
End Sub

sub de test en autosize

Code:
Sub test()
'test en autosize
Dim MyFont As BTN_FONT, x As Long
     MyFont = DefaultFont()
    MyFont.Size = 14
 
  CreatePremiumButton _
        "BTN_SAVE" & CStr(x), _
        ChrW(10003) & " Enregistrer Sous ", _
        20 + (x * 130), 20, _
        120 - (x * 15), 30 - (x * 4), _
        btn_blue, _
        "ActionSave", _
        MyFont, _
         0, _
        True
 End Sub
1780944942184.png
 
et pour les versions qui ne gèrent pas l'autosize(ça existe)
il y a une solution qui marchent partout
c'est faire soit même l'autofit avec le boudingwidth du textrange
Code:
'**********************************************************************
    'evite le wrap text si le texte est trop grand de quelque milimètres
         With shp.TextFrame2
            .MarginLeft = 0
            .MarginRight = 0
            .MarginTop = 0
            .MarginBottom = 0
            .WordWrap = msoFalse
            .VerticalAnchor = msoAnchorMiddle
            .TextRange.ParagraphFormat.Alignment = msoAlignCenter
            If SizeAuto Then
                '.AutoSize = msoAutoSizeShapeToFitText
                shp.Width = .TextRange.BoundWidth + 8
                shp.Height = .TextRange.BoundHeight + 8
            End If
       End With
   '***********************************************************************
demo.gif
 
Bonjour @nullosse tu a oublié un detail
selon la longeur de texte même si ça devrait rentrer le texte est wrappé
Salut patricktoulon,
la fonction CreatePremiumButton c'est seulement pour créer les boutons, pas pour les placer et les ajuster suivant les contraintes de la feuille où on veut les mettre. Cela doit se faire manuellement car par exemple , on veut que les boutons aient la même taille , la même hauteur et les positionner à certains endroits. Ceci peut se faire manuellement une fois les boutons sur la feuille. Mais ton idée est intéressante et pourrait servir à certains.
Nullosse
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour