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:

pierrejean

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

Bonjour Seb23

A tester:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$28" Then
  For Each sh In Sheets
   If sh.Name <> "Page de garde" Then sh.Visible = False
  Next
  For n = 1 To Target.Value
      Sheets(CStr(n)).Visible = True
  Next
End If
End Sub


End Sub
 
Dernière édition:

Seb63

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

Merci pour ton aide, malheureusement ça ne fonctionne pas : message d'erreur (voir image)

Erreur1.jpg

Erreur.jpg

Merci d'avance
 

Pièces jointes

  • Erreur.jpg
    Erreur.jpg
    40.1 KB · Affichages: 120
  • Erreur.jpg
    Erreur.jpg
    40.1 KB · Affichages: 144
  • Erreur.jpg
    Erreur.jpg
    40.1 KB · Affichages: 147
  • Erreur1.jpg
    Erreur1.jpg
    40.1 KB · Affichages: 151
  • Erreur1.jpg
    Erreur1.jpg
    40.1 KB · Affichages: 144
  • Erreur.jpg
    Erreur.jpg
    35.1 KB · Affichages: 111
  • Erreur.jpg
    Erreur.jpg
    35.1 KB · Affichages: 107

Seb63

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

Finalement j'ai encore besoin d'un peu d'aide, mon fichier d'utilisation comporte 2 feuilles supplémentaires nommées "synthèse" et "METHODE", le problème étant quand je sélectionne un nombre en D28 ces feuilles se masquent également, comment les maintenir visible en permanence ?

Regarde la pièce jointe VBA fichier aide.xls

Effectivement pierrejean le débug était pour le moins simple à réalisé, étonnament ça n'avais pas fonctionné la première fois.
 

Pièces jointes

  • VBA fichier aide.xls
    61 KB · Affichages: 70
  • VBA fichier aide.xls
    61 KB · Affichages: 67

pierrejean

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

re

teste:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$28" Then
  For Each sh In Sheets
 If sh.Name <> "Page de garde" and sh.name <>"synthèse" and sh.name <> "METHODE" Then sh.Visible = False
  Next
 For n = 1 To Target.Value
  Sheets(CStr(n)).Visible = True
Next
End If
End Sub
 
Dernière édition:

Seb63

XLDnaute Nouveau
(RESOLU) Aide - VBA - cacher/afficher feuille automatiquement

re

teste:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$28" Then
  For Each sh In Sheets
 If sh.Name <> "Page de garde" and sh.name <>"synthèse" and sh.name <> "METHODE" Then sh.Visible = False
  Next
 For n = 1 To Target.Value
  Sheets(CStr(n)).Visible = True
Next
End If
End Sub

c'est parfait ! un GRAND merci pierrejean
 

Seb63

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

dans la feuille "synthèse" j'essai de cacher des lignes en fonction du nombre indiqué en page de garde cellule C28
j'ai écris ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0

Rows("6:26").EntireRow.Hidden = False
[If Worksheets("Page de garde").Range("D28").Value = "1" Then Rows("9:26").EntireRow.Hidden = True
If Range("Page de garde!D28").Value = "2" Then Rows("11:26").EntireRow.Hidden = True
If Range("o1").Value = "3" Then Rows("13:26").EntireRow.Hidden = True
If Range("o1").Value = "4" Then Rows("15:26").EntireRow.Hidden = True
If Range("o1").Value = "5" Then Rows("17:26").EntireRow.Hidden = True
If Range("o1").Value = "6" Then Rows("19:26").EntireRow.Hidden = True
If Range("o1").Value = "7" Then Rows("21:26").EntireRow.Hidden = True
If Range("o1").Value = "8" Then Rows("23:26").EntireRow.Hidden = True
If Range("o1").Value = "9" Then Rows("25:26").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub

Si je fait référence à un chiffre en cellule "o1" de ma feuille le code fonctionne mais lorsque j'essai de faire référence à l'autre feuille cela ne fonctionne pas... où est mon erreur ?
 

Pierrot93

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

Re,
peut être ainsi :
Code:
If Sheets("NomFeuille").Range("o1").Value = "3" Then Sheets("NomFeuille").Rows("13:26").EntireRow.Hidden = True

A noter, si la feuille concernée est celle dans lequel le code est exécuté, pas la peine de le préciser...
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 613
dernier inscrit
luluinmauritius