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"
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
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
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 pour tous tes codes !
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.
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
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