Masquer onglets en fonction de contrôle de formulaire

Bonjour,

Je suis en train d'élaborer un fichier excel avec différents onglets.

Sur le premier je souhaiterai afficher la liste complète des onglets avec en face 2 cases à cocher contrôle de formulaire (Oui/non) par exemple.

Si oui est coché on conserve l'onglet, si non est coché, on masque l'onglet.

Est-ce que cela vous semble envisageable avec ou sans macro?

Merci d'avance!

Emilie

Bonjour

Voici un fichier que j'avais gardé sous le coude et qui a été réalisé en 2004 par maître Thierry Pourtier et Veriland (site www.veriti.net) et qui correspond à ce que vous voulez faire.

Vous pouvez reprendre les codes dans l'userform Listefeuilles

Cordialement

Bonjour,

Pourquoi ne pas simplement utiliser une liste de validation avec toutes vos feuilles ? S'ils sont affichés sur la feuille alors la feuille s'affiche ? Ca évite les contrôles ActiveX avec des codes redondants.

Cdlt,

Bonjour,

Ergotamine, merci pour le retour mais je ne vois pas bien comment l'utiliser, pourriez-vous me donner plus de détails?

Merci!

Bonjour,

Avec quelque chose d'assez "simple" comme ça, après c'est à adapter en fonction de vos besoin, on peu adapter sur une seule colonne qui masque/affiche avec un code couleur rouge/vert, etc ... Ici les feuilles se masques et s'affichent par double clic sur la cellule.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A2:B4")) Is Nothing Then
    If Target.Column = 1 Then
        Worksheets(Target.Value).Visible = True
        Else
        Worksheets(Target.Value).Visible = False
    End If
End If
End Sub

Cdlt,

10classeur1.xlsm (17.12 Ko)

Re,

Une alternative à mon message précédent et la proposition de Ergotamine

- A chaque ouverture du fichier, le code va lister automatiquement toutes les feuilles disponibles en colonne A et une case à cocher en colonne B. On peut supprimer le code (Placé dans l'editeur VBA --> Thisworkbook) si vous voulez.

Private Sub Workbook_Open()
Dim Lig As Byte
Dim sh

Lig = 1
With Sheets("Accueil")
    .Range("A:B").Clear
    For Each sh In Sheets
        If sh.Name <> "Accueil" Then
            .Range("A" & Lig) = sh.Name:
            With .Range("B" & Lig)
                .Font.Name = "Wingdings 2"
                .Font.Size = 12
                .FormulaR1C1 = "£"
            End With
                Lig = Lig + 1
        End If
    Next sh
End With
End Sub

- Pour masquer ou afficher les feuilles, faites un double click sur la case à cocher (Le code est placé dans la feuille Accueil)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B:B")) Is Nothing Then
    Cancel = False
    With Target
        .Font.Name = "Wingdings 2"
        .Font.Size = 12
        If .FormulaR1C1 = "R" Then
            .FormulaR1C1 = "£": Sheets(Range("A" & Target.Row).Value).Visible = True
        Else: .FormulaR1C1 = "R": Sheets(Range("A" & Target.Row).Value).Visible = False
        End If
    End With
End If
Cancel = True
End Sub

Cordialement

Re,

Merci Dan pour ta proposition.

J'ai modifié un peu le comportement de l'exemple joint afin de n'avoir qu'une seule colonne avec le code couleur R/V dont je parlais. A vous de nous préciser les modification à apporter.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim LR%
LR = ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
If Not Application.Intersect(Target, Range("A2:A" & LR)) Is Nothing Then
    If Worksheets(Target.Value).Visible = True Then
        Worksheets(Target.Value).Visible = False
        Range(Target.Address).Interior.ColorIndex = 3
        Else
        Worksheets(Target.Value).Visible = True
        Range(Target.Address).Interior.ColorIndex = 10
    End If
End If
End Sub

Cdlt,

@Ergotamine :

Merci Dan pour ta proposition.

Pour ??

J'ai uniquement revu la proposition parce que ce que j'avais proposé n'était pas ce qui était souhaité par le demandeur qui voulait avoir des cases à cocher.

Bonjour,

Pour poster tes solutions, comme je l'ai dit à JoyeuxNoel dans un autre sujet j'apprends énormément avec vos solutions qui sont des alternatives auxquelles je ne pense souvent pas, ou que je ne sais pas faire auxquels cas je poste autre chose pour l'ouverture d'esprit.

Par exemple je ne connaissais pas le ".FormulaR1C1 = "£"" que je vais aller m'empresser d'étudier.

Cdlt,

Rechercher des sujets similaires à "masquer onglets fonction controle formulaire"