XL 2019 Toggle button

pulelian

XLDnaute Nouveau
Bonjour à tous,

je suis nouveau sur le forum et cherche à réaliser :

- si toggle_circle est blanc ="OFF" donc inactif est reste à gauche

inactif
- si toggle_circle est vert ="ON" donc actif est se déplace à droite

2020 09 01 13 32 22 dash 1 xlsm enregistre
Avec le code en Feuil1 du fichier, quelqu’un pourrait-il me dire ce qui fait que le résultat final n'est pas concluant ?

merci, ^^
 

Pièces jointes

  • dash-1.xlsm
    29.4 KB · Affichages: 22

D.D.

XLDnaute Impliqué
Hello,

Mets
VB:
Function change_Toggle_buttn_status(Toggle_Circle As Object, Toggle_Background As Object, Toggle_Textbox As Object, Active As Boolean)

au lieu de
Code:
Function change_Toggle_buttn_status(Toggle_Background As Object, Toggle_Textbox As Object, Toggle_Circle As Object, Active As Boolean)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Voici une possibilité.

P.S. en Vba une Function est censée retourner une valeur. Sinon c'est une SUB.

cordialement

[Edition] si vous avez beaucoup de vos "Toogle_buttons" indicés de 1 à N nous pouvons faire de votre procédure une procédure plus générique grâce à Application.Caller :
VB:
Sub change()

    Dim tb As Shape, tc As Shape, bk As Shape
    Dim idx As String
    
    '
    ' Contrôle de l'appelant
    If TypeName(Application.Caller) <> "String" Then Exit Sub
    '
    ' Si string, spliter le nom dans un tableau
    idx = Split(Application.Caller, "_")(2)
    If Not IsNumeric(idx) Then Exit Sub
 
    '
    ' Les objets
    With ActiveSheet
        Set tb = .Shapes("Toggle_Textbox_" & idx)
        Set tc = .Shapes("Toggle_Circle_" & idx)
        Set bk = .Shapes("Toggle_Background_" & idx)
    End With
    
    '
    ' Si OFF
    If tb.TextFrame.Characters.Text = "OFF" Then
        tb.TextFrame.Characters.Text = "ON"
        tc.Left = bk.Left - tc.Width / 2
        tc.Fill.ForeColor.RGB = RGB(8, 104, 24)
    Else
        tb.TextFrame.Characters.Text = "OFF"
        tc.Left = bk.Left + bk.Width - tc.Width / 2
        tc.Fill.ForeColor.RGB = RGB(255, 255, 255)
    End If

End Sub

voir dash-2.xlsm
 

Pièces jointes

  • dash-1.xlsm
    25.9 KB · Affichages: 3
  • dash-2.xlsm
    28.4 KB · Affichages: 3
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 122
Messages
2 095 470
Membres
106 271
dernier inscrit
laptitebulle06