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é.

Rechercher des sujets similaires à "coder toggle button"