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
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
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.
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
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