Code VBA bouton de bascule sous excel
Fermé
Neliville51
Messages postés
92
Date d'inscription
mercredi 9 juillet 2008
Statut
Membre
Dernière intervention
5 juillet 2011
-
9 sept. 2010 à 11:41
pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 9 sept. 2010 à 19:42
pilas31 Messages postés 1823 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 - 9 sept. 2010 à 19:42
1 réponse
pilas31
Messages postés
1823
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
636
9 sept. 2010 à 19:42
9 sept. 2010 à 19:42
Bonjour,
Je propose la solution suivante :
1/ Créer une fonction "traiter" générique qui prend en paramétre le bouton en question :
Cette fonction s'utilise dans les macros des boutons bascule de la manière suivante
exemple pour le bouton 1 :
2/ Ensuite générer automatiquement toutes les macros "_Click" par la macro suivante :
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+
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+