Coder un Toggle Button
Bonjour,
Sur un feuillet excel, j'ai plusieurs ToggleButton (boutons à bascule) qui font partie d'une sorte de menu permettant de gérer le contenu du feuillet.
Actuellement chaque macro liée à chaque togglebutton ressemble à :
Private Sub ToggleButtonAd_Click()
If ToggleButtonAd.Value = True Then
Call Macro_Ad
Else
Call Macro_CLEARAd
End If
End Sub
Mon problème, c'est que je souhaite copier ce menu et donc ces togglebuttons sur plusieurs feuillets au sein du fichier.
Question 1 : Je vois 2 options dont je ne sais pas laquelle est la meilleure : SOIT garder exactement les mêmes noms initiaux pour les toggle buttons créés (ou copiés) sur les autres feuillets (et la même macro pour chacun) SOIT dupliquer les macros dans une nouvelle copie pour chaque nouveau toggle button. Qu'en pensez-vous ?
Question 2 : je ne sais pas comment copier coller des toggle buttons sur d'autres feuillets en conservant le paramétrage (Name) de chacun. Ce problème est le moins génant car au pire, je re-saisirai à la main le nom de chaque Toggle button
Question 3 : Lorsqu'un toggle button est "ON" sur le feuillet1, l'équivalent de ce togglebutton sur les feuillets 2 et 3 (c'est à dire les 2 "copies" du toggle button initial) doivent être également "ON". Et si l'un est "OFF", les 2 autres doivent être "OFF" également. Comment rédiger la macro pour permettre cela?
Sur ce dernier point, j'ai essayé le code ci-dessous (dans ce cas, le toggle button du feuillet 1 est ToggleButtonAh et sa copie sur le feuillet 2 est ToggleButtonAhCopie) mais ça ne marche pas :-(
Private Sub ToggleButtonAd_Click()
If ToggleButtonAh Then
ToggleButtonAhCopie = True
Else
ToggleButtonAhCopie = False
End If
If ToggleButtonAd.Value = True Then
Call Macro_Ad
Else
Call Macro_CLEARAd
End If
End Sub
Question 4 : ce qui pourrait également m'aider, ce serait une macro qui dit "si la cellule B10 du feuillet DATA est vide, alors le ToggleButtonAd est OFF, sinon il est ON". (sachant que les ToggleButtons ne sont pas sur le feuillet DATA).
J'ai essayé ça :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Sheets("DATA").Range("B10") = "" Then
ToggleButtonAh = False
Else
ToggleButtonAh = True
End If
End Sub
... mais ça ne marche pas :-(
Bonsoir Nicopat,
Les contrôles sont attachés à l'objet parent (donc la feuille dans ton cas) ou ils sont créés.
Private Sub ToggleButton1_Click()
'Code sur Feuil1
If ToggleButton1 = True Then Sheets("Feuil2").ToggleButton1 = True Else Sheets("Feuil2").ToggleButton1 = False
End Sub
Donc deux contrôles peuvent porter le même nom si ils ne sont pas sur la même feuille.
Dans le code ci-dessus le 2ième ToggleButton suivra la position (ON/OFF) du 1ier.
Bonsoir Nicopat,
Les contrôles sont attachés à l'objet parent (donc la feuille dans ton cas) ou ils sont créés.
Private Sub ToggleButton1_Click() 'Code sur Feuil1 If ToggleButton1 = True Then Sheets("Feuil2").ToggleButton1 = True Else Sheets("Feuil2").ToggleButton1 = False End Sub
Donc deux contrôles peuvent porter le même nom si ils ne sont pas sur la même feuille.
Dans le code ci-dessus le 2ième ToggleButton suivra la position (ON/OFF) du 1ier.
Merci X Cellus !
Comment puis-je également rédiger une macro qui régule la position des boutons selon la valeur d'une cellule (c'est la question 4) ?
J'ai essayé ça dans la feuille DATA :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("B10") = "" Then
Sheets("Feuil1").ToggleButtonAh = False
Else
Sheets("Feuil1").ToggleButtonAh = True
End If
End Sub
... mais ça ne marche pas :-(
Si jamais tu sais aussi faire ça :
Question 2 : je ne sais pas comment copier coller des toggle buttons sur d'autres feuillets en conservant le paramétrage (Name) de chacun. Ce problème est le moins génant car au pire, je re-saisirai à la main le nom de chaque Toggle button
A nouveau,
Ne pas passer par SelectionChange. Mais Utiliser:
Worksheet_Change
Ainsi la modif sur la cellule B10 sera reconnue.
Bonjour, Nicopat et X cellus
Une remarque en passant : si tu changes la propriété ( "ON" "OFF") de ton Toggle bouton Feuille 1 par un évènement vba change ....
Tu devras ajouter la même ligne de commande pour les toggle bouton des autres feuilles car dans ce cas aucun clic du toggle n'est détecté.