Aide - VBA - cacher/afficher feuille automatiquement

Seb63

XLDnaute Nouveau
Bonjour à tous,

Regarde la pièce jointe VBA fichier aide.xls

Je souhaiterais pouvoir masquer et afficher mes feuilles selon le résultat de mes calcules ayant pour résultat OUI ou NON. Ma formule VBA fonctionne mais je fois obligatoirement faire F2+ENTREE dans chaque cellule de G3 à G12 pour que les feuilles s'affichent ou se masquent.

Mon souhait étant de ne plus avoir à faire F2+Entrée mais que l'affichage des feuilles s'effectuent dès que D28 est modifié.

L'idéal serait même de ce passer des calcules en G3:G12 et que la VBA n'interagisse qu'avec la valeur en D28 mais je ne sais pas faire, je compte sur vous.

Code :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("G3:G" & Range("G" & Rows.Count).End(xlUp).Row), Target) Is Nothing And Target.Count = 1 Then
Application.ScreenUpdating = False
Sheets(Target.Offset(0, -1).Value).Visible = Target = "OUI"

End If
End Sub





Merci d'avance

Cordialement
 

Pièces jointes

  • VBA fichier aide.xls
    54.5 KB · Affichages: 69
  • VBA fichier aide.xls
    54.5 KB · Affichages: 80
Dernière édition:

Seb63

XLDnaute Nouveau
Re : Aide - VBA - cacher/afficher feuille automatiquement

Ma feuille synthèse est "protégé" au vu des formules qu'elle contient, mais quand j'active la protection, la VBA me dit :

"Erreur d'exécution '1004':
Impossible de définir la propriété Hidden de la classe Range :FIN/DEBOGAGE


le code doit encore être modifié ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$C$28" Then Exit Sub
  For n = 1 To 10: Sheets(CStr(n)).Visible = n < Target + 1: Next
  Sheets("Synthèse").Rows("3:26").Hidden = 0
  If Target < 10 Then Sheets("Synthèse").Rows(9 + 2 * (Target - 1) & ":26").Hidden = Target
End Sub

En JAUNE : Sheets("Synthèse").Rows("3:26").Hidden = 0
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Aide - VBA - cacher/afficher feuille automatiquement

Bonjour,

il faut déprotéger la feuille dans le code et la re-protéger ensuite avec les méthodes "unprotect, protect"... A noter la protection peut être faite également directement à l'ouverture du classeur (événement "open") en utilsant l'argument "userinterfaceonly" de la méthode "protect", celui ci permet l'execution du code sur feuille protégée..

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Aide - VBA - cacher/afficher feuille automatiquement

Re,

l'aide vba te donne des exemples... essaye ceci à placer dans le module "thisworkbook" :
Code:
Option Explicit
Private Sub Workbook_Open()
Sheets("NomFeuille").Protect "toto", userinterfaceonly:=True
End Sub
 

Seb63

XLDnaute Nouveau
Re : Aide - VBA - cacher/afficher feuille automatiquement

Merci à tous pour votre aide, normalement tout est désormais opérationnel.

Ce qui donne :
Page de garde
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Sheets("Synthèse").Unprotect
  If Target.Address <> "$C$28" Then Exit Sub
  For n = 1 To 10: Sheets(CStr(n)).Visible = n < Target + 1: Next
  Sheets("Synthèse").Rows("3:26").Hidden = 0
  If Target < 10 Then Sheets("Synthèse").Rows(9 + 2 * (Target - 1) & ":26").Hidden = Target
Sheets("Synthèse").Protect
End Sub

La VBA est très interressante à manier en tout cas.

Bonne journée et encore merci
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 689
Membres
103 640
dernier inscrit
So pizza