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

Je me trouve sur la page synthèse où je veux que s'exécute mon code, par conséquent le code devrait être le suivant d'après tes indications :

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

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

Application.ScreenUpdating = -1
End Sub

mais ça ne fonctionne pas... :/
 

Seb63

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

forum.jpg
est-ce que ça répond à ta question sur le module ?

pas de message d'erreur, mais pas non plus d'effet sur la feuille
 

Pièces jointes

  • forum.jpg
    forum.jpg
    58.6 KB · Affichages: 108
  • forum.jpg
    forum.jpg
    58.6 KB · Affichages: 109

Seb63

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

Re
Essayer

x=Sheets("Page de garde").Range("D28").Value
Rows(7 + 2 * x & ":26").EntireRow.Hidden = True


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

Rows("6:26").EntireRow.Hidden = False
x = Sheets("Page de garde").Range("D28").Value
Rows(7 + 2 * x & ":26").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub
 

Si...

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

salut

avec ce que j'ai compris,
dans la page de code de la feuille "Page de garde"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$D$28" Then Exit Sub
  For n = 1 To 10
     Sheets(CStr(n)).Visible = n < Target + 1
  Next
End Sub
dans la page de code de la feuille "Synthèse"
Code:
Private Sub Worksheet_Change(ByVal R As Range)
  Rows("6:26").Hidden = False
  'Rows("9:26").Hidden = Sheets("Page de garde").[D28] = 1
  'Rows("11:26").Hidden = Sheets("Page de garde").[D28] = 2   
  Rows(9 + 2 * (R - 1) & ":26").Hidden = [O1] = R
End Sub
les 2 lignes cochées semblent poser problème.
Merci pierrejean :D pour tous tes codes !
 

Pièces jointes

  • AfficherCacherOngletsLignes.xls
    53 KB · Affichages: 44
Dernière édition:

Seb63

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

Ce qui donne :
Code:
Private Sub Worksheet_Change(ByVal R As Range)
  Rows("6:26").Hidden = False
  Rows("9:26").Hidden = Sheets("Page de garde").[D28] = 1
  Rows("11:26").Hidden = Sheets("Page de garde").[D28] = 2
  Rows("13:26").Hidden = Sheets("Page de garde").[D28] = 3
  Rows("15:26").Hidden = Sheets("Page de garde").[D28] = 4
  Rows("17:26").Hidden = Sheets("Page de garde").[D28] = 5
  Rows("19:26").Hidden = Sheets("Page de garde").[D28] = 6
  Rows("21:26").Hidden = Sheets("Page de garde").[D28] = 7
  Rows("23:26").Hidden = Sheets("Page de garde").[D28] = 8
  Rows("25:26").Hidden = Sheets("Page de garde").[D28] = 9
  Rows(9 + 2 * (R - 1) & ":26").Hidden = [O1] = R
End Sub

mais qui ne me permet pas de masquer les lignes avec le résultat de 'page de garde'!D28 mais qui m'oblige à inscrire manuellement le même chiffre en O1 de la feuille synthèse que celui de la 'page de garde'!D28.
Cela fonctionnais déjà à la base avec ce code :

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

Rows("6:26").EntireRow.Hidden = False
If Range("o1").Value = "1" Then Rows("9:26").EntireRow.Hidden = True
If Range("o1").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

Ce que je souhaite c'est :
si en 'page de garde' D28 = 1 les lignes 9 à 26 de la feuilles 'Synthèse' soient masquées.
si en 'page de garde' D28 = 2 les lignes 11 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 3 les lignes 13 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 4 les lignes 15 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 5 les lignes 17 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 6 les lignes 19 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 7 les lignes 21 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 8 les lignes 23 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 9 les lignes 25 à 26 de la feuilles 'Synthèse'soient masquées.
 
Dernière édition:

pierrejean

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

Re

peut etre mettre la macro sur l’évènement Activate

Private Sub Worksheet_Activate()
Application.ScreenUpdating = 0
Rows("6:26").EntireRow.Hidden = False
x = Sheets("Page de garde").Range("D28").Value
Rows(7 + 2 * x & ":26").EntireRow.Hidden = True
Application.ScreenUpdating = -1
End Sub
 

Si...

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

re

Ce que je souhaite c'est :
si en 'page de garde' D28 = 1 les lignes 9 à 26 de la feuilles 'Synthèse' soient masquées.
si en 'page de garde' D28 = 2 les lignes 11 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 3 les lignes 13 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 4 les lignes 15 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 5 les lignes 17 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 6 les lignes 19 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 7 les lignes 21 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 8 les lignes 23 à 26 de la feuilles 'Synthèse'soient masquées.
si en 'page de garde' D28 = 9 les lignes 25 à 26 de la feuilles 'Synthèse'soient masquées.
dans ce cas, il n'y a pas 36000 solutions
dans la page de code de la feuille "Page de garde"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$D$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
 
Dernière édition:

Discussions similaires

Statistiques des forums

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