XL 2019 Toggle button

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 !

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

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)
 
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

Dernière édition:
- 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

Discussions similaires

Réponses
6
Affichages
329
Retour