XL 2013 [Résolu] Configurer bouton d'option

  • Initiateur de la discussion Initiateur de la discussion Ginko
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Ginko

XLDnaute Nouveau
Bonjour à tous,

Je vais essayer d'être clair :

Pour me créer différentes catégories dans une même feuille, j'ai pour habitude d'utiliser la fonction Grouper/Dissocier. Or je me suis rendu compte que cela ne fonctionnait pas correctement lorsque ces parties contiennent des Zones de groupe avec boutons ; ces derniers se compactent en bouillie.

J'ai rapidement compris qu'il fallait pour cela utiliser leurs équivalent ActiveX. Et c'est là où le bât blesse : je ne connais pas grand chose à VBA (mis à part des bouts de code récupérés ci et là pour des fonctions biens précises), ce qui m'empêche complètement d'exploiter ces boutons.

Ce que je fais :

- Insérer > Autres contrôles > Microsoft Forms 2.0 Frame
Puis une fois le cadre positionné :
- Clic droit > Objet du cadre > Edition > Clic droit > Boite à outils > Bouton d'option

J'aurai trois questions :

1. Est-ce la bonne manière de faire ?
2. Comment récupérer le résultat en fonction de l'option coché ?
3. La procédure est-elle encore différente avec "Case à cocher" ?

Avec les options classiques, il suffisait d'indiquer une cellule de renvoi et d'y exploiter le résultat. Ici il faut coder quelques lignes mais même en venant de passer deux heures à essayer de trouver une réponse simple sur le net je n'ai toujours pas compris la syntaxe et les options qui rentrent en jeu.

Merci d'avance !
 
Dernière édition:
Bonjour et bienvenue sur XLD 🙂,

Vous auriez pu joindre le fichier de base (version sans ActiveX), c'est bien vu sur XLD 😉

Le fichier joint ne comporte pas d'ActiveXL. Les contrôles ont tous leur propriété "Positionnement de l'objet" à la valeur "Ne pas déplacer ou dimmensionner avec les cellules" (clique droit / Format de contrôle / onglet Propriétés)
 

Pièces jointes

Bonjour et bienvenue sur XLD 🙂,

Vous auriez pu joindre le fichier de base (version sans ActiveX), c'est bien vu sur XLD 😉

Le fichier joint ne comporte pas d'ActiveXL. Les contrôles ont tous leur propriété "Positionnement de l'objet" à la valeur "Ne pas déplacer ou dimmensionner avec les cellules" (clique droit / Format de contrôle / onglet Propriétés)

Bonjour Mapomme,

Merci de votre réponse.
En fait c'est exactement l'inverse que je souhaite faire, pouvoir réduire avec les boutons sans que cela devienne moche.

Je vous joins un exemple.
 

Pièces jointes

Bonjour Cervoz, mapomme, Staple1600,

un essai par macro :

si les lignes sont masquées, les formes correspondantes le sont également et inversement.

Seul bémol, l'évènement Calculate( utilisé pour déclencher la macro) se déclenche bien si on utilise les + ou - dans la "marge" mais pas si on clique sur le 1 pour n'afficher que le premier niveau...

Code:
Private Sub Worksheet_Calculate()
    Shapes("Zone de groupe 9").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case d'option 4").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case d'option 5").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case d'option 6").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case d'option 7").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case à cocher 1").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case à cocher 2").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case à cocher 3").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
    Shapes("Case à cocher 8").Visible = Not Worksheets("Ventilation").Rows(10).Hidden
' à adapter pour une ligne quelconque du groupe 'cave'
End Sub

A+
 
Re,

une 'astuce' (bidouille) pour que Calculate se déclenche à l'usage de + et -:
dans une cellule susceptible d'être masquée mettre une formule faisant référence à une autre cellule .
Par exemple en A5 : =A23 (modifier la couleur d'affichage si nécessaire)

A+
 
Bonjour Staple1600 😉,

Tu as l'oeil vif et la truffe humide ce matin. Tu ne laisses rien passer. Je m'en vais me cacher coupable et honteux dans la poche de mon kangourou (de slip bien sûr!).
upload_2016-10-1_14-24-58.png
 
Bonjour Cervoz, Staple1600, Paf,

Un autre essai. La cellule qui sert à détecter le recalcul est la cellule A1 avec la formule =SOUS.TOTAL(3;B:B) et au format personnalisé ;;;

Le code :
VB:
Private Sub Worksheet_Calculate()
Dim shp As Shape, xrgForme As Range, xrgVisible As Range

   Set xrgVisible = Range("b5:b" & Rows.Count).SpecialCells(xlCellTypeVisible).EntireRow
   On Error Resume Next
   For Each shp In Me.Shapes
      Set xrgForme = Range(shp.TopLeftCell, shp.BottomRightCell).EntireRow
      If Intersect(xrgVisible, xrgForme).Address <> xrgForme.Address Then
         shp.Visible = False
      Else
         shp.Visible = True
      End If
   Next shp
End Sub
 

Pièces jointes

Bonjour à tous

Juste parce que je voudrais savoir ce qu'en pense mapomme
(et parce que de si bon matin, y'a pas beaucoup de nouvelles questions à se mettre sous la dent )😉
VB:
Private Sub Worksheet_Calculate()
Dim shp As Shape, xrgForme As Range, xrgVisible As Range
Set xrgVisible = Range("b5:b" & Rows.Count).SpecialCells(xlCellTypeVisible).EntireRow
On Error Resume Next
Application.ScreenUpdating = False
    For Each shp In Me.Shapes
    Set xrgForme = Range(shp.TopLeftCell, shp.BottomRightCell).EntireRow
        shp.Visible = Not (Intersect(xrgVisible, xrgForme).Address <> xrgForme.Address)
    Next shp
End Sub
Ca marche aussi avec
shp.Visible = (Intersect(xrgVisible, xrgForme).Address = xrgForme.Address)
 
Dernière édition:
Bonjour Staple1600 🙂,

Comme de bien entendu, ça fait un code bien plus aminci et bien plus élégant 😛. En parlant d'élégance et d'amincissement, rêvons un peu : voir ICI 😀 (clique droit/ouvrir dans un nouvel onglet).
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour