Comment accéder à plusieurs toggle button dans une frame ActiveX ?

hzdvd

XLDnaute Nouveau
Bonjour à tous et merci par avance pour l'aide que vous m'apportez.

Evidemment, je suis un débutant...
Je cherche à créer un groupe de contrôles ToggleButton mutuellement exclusifs dans une frame ActiveX sachant que je ne souhaite pas utiliser de Userform car je veux que mes éléments soient intégrés dans ma feuille de calcul.
J'ai trouvé une réponse sur le site microsoft :
XL97: How To Create a Group of Mutually Exclusive ToggleButtons

Tout fonctionne à merveille mais uniquement avec un UserForm.
Même si je suis sûr que la réponse est ultra simple, je bloque sur le code du module si je fais une frame ActiveX sans UserForm !.
Et particulièrement là où le code est en rouge :

'Variable to hold name of ToggleButton that was clicked.
Public Clicked As String

Sub ExclusiveToggleButtons()

Dim Toggle As Control​

'Loop through all of the ToggleButtons on Frame1
For Each Toggle In UserForm1.Frame1.Controls

'If Name of ToggleButton matches name of ToggleButton
'that was clicked...​
If Toggle.Name = clicked Then​
'...select the button
Toggle.Value = True​
Else
'...deselect the button
Toggle.Value = False​
End If​
Next​
End Sub

En d'autres termes, je ne sais pas accéder à ma frame ActiveX qui n'est pas dans un Userform.

Pouvez-vous m'aider ?
De plus je ne sais pas où insérer ce bout de code. Toujours dans un module ?
Et où insérer le code des event MouseUp des ToggleButton dans mon cas ?

Merci !
 

mécano41

XLDnaute Accro
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

Bonjour,

Avec ceci dans le code de la feuille qui porte les boutons ToggleButton1 et ToggleButton2, si tu cliques sur le premier, le second prend la position opposée et inversement (mais ai-je bien compris...). Il n'y a pas de frame.

Code:
Option Explicit

Private Sub ToggleButton1_Click()
If ToggleButton1 = True Then
ToggleButton2 = False
ElseIf ToggleButton1 = False Then
ToggleButton2 = True
End If
End Sub

Private Sub ToggleButton2_Click()
If ToggleButton2 = True Then
ToggleButton1 = False
ElseIf ToggleButton2 = False Then
ToggleButton1 = True
End If
End Sub

Cordialement
 

hzdvd

XLDnaute Nouveau
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

Merci beaucoup pour cette réponse.

Cette méthode ne comportant pas de frame fut ma première approche.
La difficulté de cette méthode est la gestion de mes 264 boutons !
Si je ne peux pas les regrouper en frames, je ne vais probablement pas pouvoir m'y retrouver et le code va probablement être terrible.

J'ai 6 parties dans ma feuille de calcul.
Chaque partie contient 11 éléments et pour chaque élément, il y a 4 boutons...

D'autres idées ?
Dois-je me limiter à un UserForm ?

En tout cas, merci !
David
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

Bonjour à tous,
La difficulté de cette méthode est la gestion de mes 264 boutons !
ces 264 boutons sont-ils indispensables :confused:
cette maladie se nomme Varicelle :):)

J'ai 6 parties dans ma feuille de calcul.
Chaque partie contient 11 éléments et pour chaque élément, il y a 4 boutons...
Pour autant que les 6 parties et que chaque groupe de 11 éléments soient bien disposés sur la feuille
............ je verrais:

1 userform qui permettrais de travailler sur une des 6 parties de la feuille (6 optionbutton dans 1 frame)
11 optionbutton (dans une frame) pour choisir l"élément concerné
4 boutons = 4 procédures à écrire au lieu de 264

à+
Philippe
 

mécano41

XLDnaute Accro
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

...264 boutons, il faut commencer par réfléchir au besoin et voir s'il est réel...

Ensuite tu parles de boutons mutuellement exclusifs mais, dans ton cas, ce serait (je suppose) sur un groupe de 4 boutons.

Les ToggleButtons ont deux positions : TRUE et FALSE qui changent à chaque appui.

donc

- si l'on met l'un quelconque des 4 boutons à TRUE, il faut que les 3 autres passent à FALSE et qu'une certaine action soit lancée
- mais si l'on appuie à nouveau sur le même bouton, on fait quoi? On laisse les boutons en l'état et l'on ne lance aucune action?


Contrairement à ce que tu penses, ce ne sera pas simple. Je pense qu'il faut nommer tes boutons en fonction de leur position ; par ex. un trigramme genre 3B4 ou 3 désigne ta "partie" (de 1 à 6), B désigne ton "élément" ( de 1 à 11 mais je prends un lettre pour faciliter ensuite l'analyse - le Nb. de caractères est fixe) et le 4 désigne le bouton parmi (de 1 à 4). Après, il faut faire un module de classe et analyser la position du bouton pour positionner ensuite les 4 boutons du groupe et lancer les actions nécessaires...

Un Userform te faciliterait certainement la vie...

EDIT : je vois que Phlaurent55 (Bonjour!) penche du même côté...

Cordialement
 

hzdvd

XLDnaute Nouveau
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

Bonjour à tous,
ces 264 boutons sont-ils indispensables :confused:
cette maladie se nomme Varicelle :):)


Pour autant que les 6 parties et que chaque groupe de 11 éléments soient bien disposés sur la feuille
............ je verrais:

1 userform qui permettrais de travailler sur une des 6 parties de la feuille (6 optionbutton dans 1 frame)
11 optionbutton (dans une frame) pour choisir l"élément concerné
4 boutons = 4 procédures à écrire au lieu de 264

à+
Philippe


Merci Philippe pour ce retour,
étant donné que l'utilisateur devra faire un choix entre 4 options pour chacun des 11 éléments.
Il devra le faire à chaque séance, sur 6 séances sachant que les résultats de ces séances doivent rester visible à l'utilisateur.
Bien sûr que je me suis dit que ces "boutons" devaient être des "option buttons". Le problème est que sur Excel, ces boutons sont petits, trop petits pour mes utilisateurs.
Conclusion : en utilisant des toggle buttons, je peux mettre un caractère de la taille que je veux.

Ceci dit, j'ai bien l'impression qu'il n'existera pas de solution simple à mon besoin. Donc revoir ce besoin pour avoir quelque chose d'intermédiaire...

Bien cordialement,
David
 

hzdvd

XLDnaute Nouveau
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

...264 boutons, il faut commencer par réfléchir au besoin et voir s'il est réel...

Ensuite tu parles de boutons mutuellement exclusifs mais, dans ton cas, ce serait (je suppose) sur un groupe de 4 boutons.

Les ToggleButtons ont deux positions : TRUE et FALSE qui changent à chaque appui.

donc

- si l'on met l'un quelconque des 4 boutons à TRUE, il faut que les 3 autres passent à FALSE et qu'une certaine action soit lancée
- mais si l'on appuie à nouveau sur le même bouton, on fait quoi? On laisse les boutons en l'état et l'on ne lance aucune action?


Contrairement à ce que tu penses, ce ne sera pas simple. Je pense qu'il faut nommer tes boutons en fonction de leur position ; par ex. un trigramme genre 3B4 ou 3 désigne ta "partie" (de 1 à 6), B désigne ton "élément" ( de 1 à 11 mais je prends un lettre pour faciliter ensuite l'analyse - le Nb. de caractères est fixe) et le 4 désigne le bouton parmi (de 1 à 4). Après, il faut faire un module de classe et analyser la position du bouton pour positionner ensuite les 4 boutons du groupe et lancer les actions nécessaires...

Un Userform te faciliterait certainement la vie...

EDIT : je vois que Phlaurent55 (Bonjour!) penche du même côté...

Cordialement


Merci encore Mécano.
J'avais également analysé le besoin de faire une grille de nommage de mes boutons afin de pouvoir m'y retrouver.
Merci pour ce précieux conseil.

David
 

hzdvd

XLDnaute Nouveau
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

rebonjour,

je viens de trouver ceci qui démontre que mon objectif initial ne pouura être atteint :
Ok, that explains it. A frame control is what's called a container control.
This means it's capable of hosting other ActiveX controls in the same way that a
UserForm or a Worksheet can. When you place a container control that is
currently hosting ActiveX controls (like your Frame control and its option
buttons) inside another container control (your worksheet), the second container
control must support a set of interfaces required for the first container
control to relay information about the objects it contains.
Unfortunately, the Worksheet object lacks those interfaces. So while you can
place a Frame control on a Worksheet, no ActiveX controls that you place inside
that Frame control will be visible to the Worksheet object.
You can create a pretty good approximation of the look of a frame control
using the various shapes available on the drawing toolbar. I think that's
probably the best workaround.


la google traduction :
Ok, ça explique tout. Un contrôle de trame est ce qu'on appelle un contrôle conteneur.
Cela signifie qu'il est capable d'héberger d'autres contrôles ActiveX de la même manière qu'un
UserForm ou une feuille de calcul possible. Lorsque vous placez un contrôle conteneur qui est
Les contrôles ActiveX actuellement d'hébergement (comme votre contrôle Frame et son option
boutons) à l'intérieur d'un autre contrôle conteneur (votre feuille de calcul), le second conteneur
contrôle doit prendre en charge un ensemble d'interfaces requis pour le premier récipient
contrôle de relayer l'information sur les objets qu'il contient.
**** Malheureusement, l'objet feuille de manque de ces interfaces. Ainsi, alors que vous pouvez
placer un contrôle Frame sur une feuille de calcul, pas de contrôles ActiveX que vous placez à l'intérieur
qui contrôle Frame sera visible à l'objet feuille de calcul.
**** Vous pouvez créer une assez bonne approximation de l'apparence d'un contrôle de trame
en utilisant les différentes formes disponibles sur la barre d'outils de dessin. Je pense que c'est
probablement la meilleure solution.

Je considère donc le sujet clos et c'est maintenant à moi de trouver un choix alternatif satisfaisant !
Merci à tous !

David
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

Re Bonjour,
je viens de trouver ceci qui démontre que mon objectif initial ne pouura être atteint :
Je considère donc le sujet clos et c'est maintenant à moi de trouver un choix alternatif satisfaisant !

David, je pense que tu laisses tomber les bras un peu trop vite d'autant plus que tu ne nous a pas montré le fichier et expliqué le fonctionnement attendu
il n'est pas rare de voir l'impossible se réaliser sur ce forum

à+
Philippe
 

Si...

XLDnaute Barbatruc
Re : Comment accéder à plusieurs toggle button dans une frame ActiveX ?

salut

...
David, je pense que tu laisses tomber les bras un peu trop vite d'autant plus que tu ne nous a pas montré le fichier et expliqué le fonctionnement attendu
il n'est pas rare de voir l'impossible se réaliser sur ce forum
...

je partage ton point de vue Philippe :D, d'ailleurs voici un exemple de ce que l'on peut faire sans aucun contrôle.
 

Pièces jointes

  • 264 faux boutons (bascule) hors Usf.xlsm
    26.1 KB · Affichages: 80

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 879
Membres
103 009
dernier inscrit
dede972