Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 code VBA - masque afficher des lignes

Linda42

XLDnaute Occasionnel
Bonjour,

J'ai besoin de votre aide : j'ai un code VBA qui masque certaine ligne et en affiche d'autre. Je voudrais que lorsque l'on reclique dans la case formulaire (rattacher à la cellule K104), et l'effet inverse se reproduise.


Sub Marché_négocié()
Worksheets("Fiche Stratégie").Unprotect
If Worksheets("Formulaire de saisie").Range("k104").Value = False Then
Worksheets("Fiche Stratégie").Rows("106:106").EntireRow.Hidden = False
Worksheets("Fiche Stratégie").Rows("113:114").EntireRow.Hidden = True
Worksheets("Fiche Stratégie").Rows("197:201").EntireRow.Hidden = True
Else
Worksheets("Fiche Stratégie").Rows("106:106").EntireRow.Hidden = True
Worksheets("Fiche Stratégie").Rows("113:114").EntireRow.Hidden = False
Worksheets("Fiche Stratégie").Rows("197:201").EntireRow.Hidden = False
End If

Worksheets("Fiche Stratégie").Protect
End Sub

Merci à tous
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Linda,
a défaut de fichier test, on ne peut que supputer.
Dans cette PJ quand on clique sur la cellule K104, on déclenche la macro. Un second clic fait le masquage inverse.
Avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("K104")) Is Nothing Then
        Worksheets("Fiche Stratégie").Unprotect
        If Rows("106:106").EntireRow.Hidden = True Then
            Rows("106:106").EntireRow.Hidden = False
            Rows("113:114").EntireRow.Hidden = True
            Rows("197:201").EntireRow.Hidden = True
        Else
            Rows("106:106").EntireRow.Hidden = True
            Rows("113:114").EntireRow.Hidden = False
            Rows("197:201").EntireRow.Hidden = False
        End If
        Worksheets("Fiche Stratégie").Protect
    End If
    Range("L104").Select
Fin:
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    13.5 KB · Affichages: 1

job75

XLDnaute Barbatruc
Bonjour Linda42, sylvanu,

Dans le code de la feuille "Formulaire de saisie" collez cette macro :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, [K104]) Is Nothing Then Exit Sub
Cancel = True
[K104] = IIf([K104], False, True)
Marché_négocié
End Sub
Elle se déclenche quand on double-clique sur la cellule K104.

Votre macro Marché_négocié doit être placée dans un module standard.

A+
 

Jacky67

XLDnaute Barbatruc
Bonjour Linda42, sylvanu, job75
Autre proposition
Avec la ligne 106 Masquée par défaut au départ
Dans le module de la feuille "Formulaire de saisie"
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, [K104]) Is Nothing Then Exit Sub
    Cancel = True
    Application.ScreenUpdating = False
    With Worksheets("Fiche Stratégie")
        .Unprotect
        .Rows("106:106").Hidden = .Rows("106:106").Hidden = False
        .Rows("113:114").Hidden = .Rows("113:114").Hidden = False
        .Rows("197:201").Hidden = .Rows("197:201").Hidden = False
        .Protect
    End With
End Sub
 

Pièces jointes

  • masquer.xlsm
    21.1 KB · Affichages: 3
Dernière édition:

Discussions similaires

Réponses
3
Affichages
727
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…