Autres Afficher et masquer des tableaux et des sous tableaux

chaelie2015

XLDnaute Accro
Bonjour Forum
Je souhaite afficher et masquer des tableaux (11 tableaux couleur jaune) et sous tableaux(et 10 tableaux couleur vert) sous condition.
Dans la feuille"Anvers" par défaut toutes les lignes (de 5-430) sont masquées.
en première phase si je fais rentrer dans la cellule C3 une valeur par exemple 4 donc j'aurai que l’entête du tableau (jaune) et 04 tableaux jaune (1 2 3 et 4) et la dernière ligne Total.
en deuxième phase dans les 4 tableaux , si je fais rentrer dans les cellules vertes une valeur, je souhaite afficher le tableau vert selon le nombre saisi.
exemple dans tableau jaune1 dans la cellule X9 j'ai saisi 5 donc j'aurai l’entête du tableau vert et 5 lignes et ainsi de suite.
Merci par avance
NB: désolé pour le fichier joint, c'est une omission
 

Pièces jointes

  • Charlie BTB anvers 2020.xlsx
    73.3 KB · Affichages: 14
Dernière édition:
Solution
Bonjour chaelie2015, danielco,

Voyez le fichier joint et ces macros dans le code de la feuille :
VB:
Dim ligtot& 'mémorise la variable

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i&
If Not Intersect(Target, [C3,P:T]) Is Nothing Then _
    i = ActiveWindow.ScrollRow: Afficher: ActiveWindow.ScrollRow = i
End Sub

Sub Masquer()
Application.ScreenUpdating = False
Rows.Hidden = False
ligtot = [A:B].Find("Total", , xlValues).Row
Rows("9:" & ligtot).Hidden = True
End Sub

Sub Afficher()
Dim nlig&, coul&, c As Range, n&, v&, i&
Masquer
nlig = Val([C3]) 'à adapter
If nlig < 1 Then Exit Sub
coul = [A5].Interior.Color
For Each c In Range("A9:A" & ligtot)
    If c.Interior.Color = coul Then
        c.EntireRow.Hidden = False
        n =...

chaelie2015

XLDnaute Accro
Bonsoir Forum
Edit : pour les tableaux Jaunes c'est des lignes ( une ligne par tableau et un entête)
pour les tableaux verts c'est 40 lignes et un entête.
donc je souhaite afficher et masquer ces lignes en arborescence.
merci
 
Dernière édition:

chaelie2015

XLDnaute Accro
Bonjour
merci d'avoir répondu.
comme j'ai indiqué dans mon post #1
1. Dans la feuille"Anvers" par défaut toutes les lignes (de 5-430) sont masquées.
2. dans la cellule C3, je saisi un nombre pour afficher que les tableaux Jaunes.
exemple : C3=3 donc j'aurai que les lignes 5 6 7 8 9 et 51 93 et 429.
3. Etape : pour afficher les tableaux verts (on doit d'abord afficher les tableaux jaunes)
parce que dans chaque tableau jaune il y a une cellule verte, cette cellule qui va nous permettre d'afficher le nombre de ligne verts pour chaque tableau.
exemple :dans X9 = 3 donc j'aurai 3 lignes vertes affichée et un entête.
dans X51 = 2 donc j'aurai 2 lignes vertes affichée et un entête.
dans X93 = 4 donc j'aurai 4 lignes vertes affichée et un entête.
Merci
 

Pièces jointes

  • Charlie BTB anvers 2020 v1.xlsx
    74.3 KB · Affichages: 6

danielco

XLDnaute Accro
Avec la macro :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Tabl As Variant, I As Long
  Tabl = Array(1, 9, 51, 93, 135, 177, 219, 261, 303, 345, 367)
  If Target.Address = "$C$3" Then
    Rows("9:429").Hidden = True
    If IsNumeric(Target) Then
      If Target > 0 Then
        For I = 1 To Target
          Rows(Tabl(I)).Hidden = False
        Next I
      End If
    End If
  ElseIf Target.Column = 24 And IsNumeric(Application.Match(Target.Row, Tabl, 0)) Then
    Rows(Target.Row + 1 & ":" & Target.Row + 42).Hidden = True
    Rows(Target + 1 & ":" & Target.Row + Target + 1).Hidden = False
  End If
End Sub
 

Pièces jointes

  • Charlie BTB anvers 2020.xlsm
    85.9 KB · Affichages: 6

danielco

XLDnaute Accro
Oups, désolé. Remplace la macro par celle-ci :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Tabl As Variant, I As Long
  Tabl = Array(1, 9, 51, 93, 135, 177, 219, 261, 303, 345, 367)
  If Target.Address = "$C$3" Then
    Rows("9:429").Hidden = True
    If IsNumeric(Target) Then
      If Target > 0 Then
        For I = 1 To Target
          Rows(Tabl(I)).Hidden = False
        Next I
      End If
    End If
  ElseIf Target.Column = 24 And IsNumeric(Application.Match(Target.Row, Tabl, 0)) Then
    Rows(Target.Row + 1 & ":" & Target.Row + 41).Hidden = True
    Rows(Target.Row + 1 & ":" & Target.Row + Target + 1).Hidden = False
  End If
End Sub

Daniel
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 203
Membres
103 157
dernier inscrit
youma