Masquer plusieurs séries de lignes
Bonjour,
J'ai un fichier excel comportant 4 tableaux les uns à la suite des autres.
Tout en haut du fichier j'ai 4 cases dans lesquelles je rentre le nombre de lignes à afficher pour chaque tableau.
J'ai fais une macro Worksheet_Change pour que dès que je modifie le chiffre dans la case en haut, les lignes correspondantes se modifient. Cela marche très bien.
Mon problème est que j'ai du mettre les 4 macros dans la même sub "Worksheet_Change", et du coup, dès que je modifie une case cela fonctionne mais quand j'en modifie une autre la première s'annule...
Je met une copie du code, je ne sais pas si je suis super claire...il est un peu moche je sais...mais je débute
Merci par avance pour votre aide !!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
'nombre de ligne affiché pour le portefeuille initial
Set KeyCells = Range("d6")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Cells.EntireRow.Hidden = False
If Target = "1" Then Rows("15:38").EntireRow.Hidden = True
If Target = "2" Then Range("16:38").EntireRow.Hidden = True
If Target = "3" Then Range("17:38").EntireRow.Hidden = True
If Target = "4" Then Range("18:38").EntireRow.Hidden = True
If Target = "5" Then Range("19:38").EntireRow.Hidden = True
If Target = "6" Then Range("20:38").EntireRow.Hidden = True
If Target = "7" Then Range("21:38").EntireRow.Hidden = True
If Target = "8" Then Range("22:38").EntireRow.Hidden = True
If Target = "9" Then Range("23:38").EntireRow.Hidden = True
If Target = "10" Then Range("24:38").EntireRow.Hidden = True
If Target = "11" Then Range("25:38").EntireRow.Hidden = True
If Target = "12" Then Range("26:38").EntireRow.Hidden = True
If Target = "13" Then Range("27:38").EntireRow.Hidden = True
If Target = "14" Then Range("28:38").EntireRow.Hidden = True
If Target = "15" Then Range("29:38").EntireRow.Hidden = True
If Target = "16" Then Range("30:38").EntireRow.Hidden = True
If Target = "17" Then Range("31:38").EntireRow.Hidden = True
If Target = "18" Then Range("32:38").EntireRow.Hidden = True
If Target = "19" Then Range("33:38").EntireRow.Hidden = True
If Target = "20" Then Range("34:38").EntireRow.Hidden = True
If Target = "21" Then Range("35:38").EntireRow.Hidden = True
If Target = "22" Then Range("36:38").EntireRow.Hidden = True
If Target = "23" Then Range("37:38").EntireRow.Hidden = True
If Target = "24" Then Range("38:38").EntireRow.Hidden = True
If Target = "25" Then Cells.EntireRow.Hidden = False
End If
'nombre de lignes affiché pour les cessions
Set KeyCells = Range("j5")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Cells.EntireRow.Hidden = False
If Target = "1" Then Range("48:56").EntireRow.Hidden = True
If Target = "2" Then Range("49:56").EntireRow.Hidden = True
If Target = "3" Then Range("50:56").EntireRow.Hidden = True
If Target = "4" Then Range("51:56").EntireRow.Hidden = True
If Target = "5" Then Range("52:56").EntireRow.Hidden = True
If Target = "6" Then Range("53:56").EntireRow.Hidden = True
If Target = "7" Then Range("54:56").EntireRow.Hidden = True
If Target = "8" Then Range("55:56").EntireRow.Hidden = True
If Target = "9" Then Range("56:56").EntireRow.Hidden = True
If Target = "10" Then Cells.EntireRow.Hidden = False
End If
'nombre de lignes affiché pour les acquisitions
Set KeyCells = Range("j6")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Cells.EntireRow.Hidden = False
If Target = "1" Then Range("60:68").EntireRow.Hidden = True
If Target = "2" Then Range("61:68").EntireRow.Hidden = True
If Target = "3" Then Range("62:68").EntireRow.Hidden = True
If Target = "4" Then Range("63:68").EntireRow.Hidden = True
If Target = "5" Then Range("64:68").EntireRow.Hidden = True
If Target = "6" Then Range("65:68").EntireRow.Hidden = True
If Target = "7" Then Range("66:68").EntireRow.Hidden = True
If Target = "8" Then Range("67:68").EntireRow.Hidden = True
If Target = "9" Then Range("68:68").EntireRow.Hidden = True
If Target = "10" Then Cells.EntireRow.Hidden = False
End If
'nombre de ligne affiché pour le portefeuille final
Set KeyCells = Range("j7")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Cells.EntireRow.Hidden = False
If Target = "1" Then Rows("78:101").EntireRow.Hidden = True
If Target = "2" Then Range("79:101").EntireRow.Hidden = True
If Target = "3" Then Range("80:101").EntireRow.Hidden = True
If Target = "4" Then Range("81:101").EntireRow.Hidden = True
If Target = "5" Then Range("82:101").EntireRow.Hidden = True
If Target = "6" Then Range("83:101").EntireRow.Hidden = True
If Target = "7" Then Range("84:101").EntireRow.Hidden = True
If Target = "8" Then Range("85:101").EntireRow.Hidden = True
If Target = "9" Then Range("86:101").EntireRow.Hidden = True
If Target = "10" Then Range("87:101").EntireRow.Hidden = True
If Target = "11" Then Range("88:101").EntireRow.Hidden = True
If Target = "12" Then Range("89:101").EntireRow.Hidden = True
If Target = "13" Then Range("90:101").EntireRow.Hidden = True
If Target = "14" Then Range("91:101").EntireRow.Hidden = True
If Target = "15" Then Range("92:101").EntireRow.Hidden = True
If Target = "16" Then Range("93:101").EntireRow.Hidden = True
If Target = "17" Then Range("94:101").EntireRow.Hidden = True
If Target = "18" Then Range("95:101").EntireRow.Hidden = True
If Target = "19" Then Range("96:101").EntireRow.Hidden = True
If Target = "20" Then Range("97:101").EntireRow.Hidden = True
If Target = "21" Then Range("98:101").EntireRow.Hidden = True
If Target = "22" Then Range("99:101").EntireRow.Hidden = True
If Target = "23" Then Range("100:101").EntireRow.Hidden = True
If Target = "24" Then Range("101:101").EntireRow.Hidden = True
If Target = "25" Then Cells.EntireRow.Hidden = False
End If
End SubBonjour
Pas sur d'avoir bien compris, mais pourquoi ne pas mettre cette instruction --> Cells.EntireRow.Hidden = False en début de code et surtout une seule fois dans le code
Crdlt