Code VBA bouton de bascule sous excel

Neliville51 Messages postés 99 Statut Membre -  
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour à tous et à toutes,

Bon voilà mon problème:
J'essaie de gérer de la documentation sous excel via vba. J'aimerais faire appliquer un code à l'ensemble des boutons de bascule de ma feuille excel. Voici le code que j'ai rédigé:

Private Sub ToggleButton1_Click()
Dim actif As Boolean
actif = ToggleButton1.Value

If actif Then
With ToggleButton1
.BackColor = vbGreen
.Caption = "Actif"
End With
Else
With ToggleButton1
.BackColor = vbRed
.Caption = "Inactif"
End With
End If

End Sub

Ce code marche pour le ToogleButton1 et j'aimerais que ça le fasse sur l'ensemble des "toobglebutton" (bouton de bascule) de ma feuille.

Merci d'avance à tous ceux et celles qui sauront m'éclaircir sur le sujet.

A bientôt



--
Il ne suffit pas d'engranger les récoltes du savoir, du savoir-faire, ni de vendanger les fruits du savoir-être et du savoir-devenir, encore faut il accepter de les offrir pour s'agrandir ensemble.
[Jacques Salomé]

1 réponse

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Je propose la solution suivante :

    1/ Créer une fonction "traiter" générique qui prend en paramétre le bouton en question :

    
    Sub traiter(bouton As ToggleButton)
    
    With bouton
        If .Value Then
            .BackColor = vbGreen
            .Caption = "Actif"
        Else
            .BackColor = vbRed
            .Caption = "Inactif"
        End If
    End With
    
    End Sub
    
    


    Cette fonction s'utilise dans les macros des boutons bascule de la manière suivante

    exemple pour le bouton 1 :

    
    Sub ToggleButton1_Click()
        Call traiter(ToggleButton1)
    End Sub
    
    


    2/ Ensuite générer automatiquement toutes les macros "_Click" par la macro suivante :

    
    Sub Init_Macro_Bascule()
    
    Dim Code As String
    Dim s As Shape
    
    For Each s In Sheets("Feuil1").Shapes
        If Mid(s.Name, 1, 12) = "ToggleButton" Then
            Code = "Sub " & s.Name & "_Click" & vbCrLf
            Code = Code & "Call traiter(" & s.Name & ")" & vbCrLf
            Code = Code & "End Sub"
            With ThisWorkbook.VBProject.VBComponents("Feuil1").CodeModule
                NextLine = .CountOfLines + 1
                .InsertLines NextLine, Code
            End With
        End If
    Next s
    
    End Sub
    
    


    3/ effacer les macros de la Feuil1 puis lancer la macro "Init_Macro_Bascule"

    J'ai supposé que tous les boutons sont dans la Feuil1.
    Mettre les deux macros "traiter" et "Init_Macro_Bascule" dans un module à part.

    Voila j'espere que c'est assez clair .
    A+
    3