Groupe sous Excel à masquer/afficher [Résolu]

luddoo91 4 Messages postés lundi 6 août 2007Date d'inscription 5 février 2010 Dernière intervention - 20 mars 2008 à 10:23 - Dernière réponse : laurentmayolle 2 Messages postés mardi 17 juillet 2007Date d'inscription 30 décembre 2010 Dernière intervention
- 29 nov. 2010 à 16:13
Bonjour

Je suis sous Excel, je voudrais simplement ajouter un bouton sur ma feuille qui masque/affiche les détails des groupes des lignes séléctionnées (comme le fait  déjà les commandes Données, Grouper et créer un plan, masquer et afficher les détails).

J'ai tenté de faire un enregistrement de macro pour obtenir le code mais il me donne

    ExecuteExcel4Macro "SHOW.DETAIL(1,24,TRUE,,21)"
    ExecuteExcel4Macro "SHOW.DETAIL(1,12,TRUE,,8)"

ce qui suppose que les groupes doivent être définis auparavant et que la feuille ne peut pas être modifiée sinon la macro ne fonctionne plus...

est ce que vous avez une idée?

Merci
Afficher la suite 

Votre réponse

3 réponses

luddoo91 4 Messages postés lundi 6 août 2007Date d'inscription 5 février 2010 Dernière intervention - 20 mars 2008 à 11:30
+1
Utile
Re,

Bon j'ai trouvé une façon de faire qui me convient parfaitment,

pour afficher j'utilise :
 ActiveSheet.Outline.ShowLevels RowLevels:=2
et
pour masquer
ActiveSheet.Outline.ShowLevels RowLevels:=1

je n'ai qu'un niveau de groupe donc ça fonctionne bien.

Je remercie quand même ceux qui ont lu mon message...

A bientôt
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de luddoo91
xavette 1 Messages postés mardi 10 juin 2008Date d'inscription 10 juin 2008 Dernière intervention - 10 juin 2008 à 10:55
0
Utile
Merci bien!
solution simple et efficace... parfait
Commenter la réponse de xavette
laurentmayolle 2 Messages postés mardi 17 juillet 2007Date d'inscription 30 décembre 2010 Dernière intervention - 29 nov. 2010 à 16:13
0
Utile
'Il faut que la cellule active soit sur la ligne juste au dessus du groupe
Sub AfficherGroup()
Dim rngRegion As Range
Dim intDerniereLigne As Integer
Set rngRegion = ActiveCell.CurrentRegion
intDerniereLigne = rngRegion.Rows.Count
If intDerniereLigne > 2 Then rngRegion.Rows(intDerniereLigne).ShowDetail = True
End Sub

Sub MasquerGroup()
Dim rngRegion As Range
Dim intDerniereLigne As Integer
Set rngRegion = ActiveCell.CurrentRegion
intDerniereLigne = rngRegion.Rows.Count
If intDerniereLigne > 2 Then rngRegion.Rows(intDerniereLigne).ShowDetail = False
End Sub
Commenter la réponse de laurentmayolle

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.