1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Sub Masque_Semaines_EK()
Dim LigneDeButTableau As Long
Dim LigneFinTableau As Long
Dim PremiereLigne As Long
Dim DerniereLigne As Long
Dim Semaine As Byte
Dim I As Long
'on demande quelle est la semaine à traiter
Semaine = CDbl(InputBox("Merci d'indiquer le N° de semaine à faire afficher", "Saisie"))
Application.ScreenUpdating = False
With ActiveSheet
' On définit d'abord les limites de la recherche ( Première ligne, dernière ligne).
' On fait apparaître toutes les lignes, dans le cas où certaines sont déjà masquées.
.Rows.Hidden = False
PremiereLigne = 4
DerniereLigne = .Cells(.Rows.Count, 2).End(xlUp).Row + 5 ' Visiblement, il y a 5 lignes en dessous du dimanche
' On recherche la ligne de la semaine choisie, sachant que le ligne de la semaine 1 est la première ligne + 1
LigneDeButTableau = 0
For I = PremiereLigne + 1 To DerniereLigne '
If .Cells(I, 2) = Semaine Then
' Si la ligne de la semaine est trouvée, la première ligne du tableau correspond à la ligne trouvée - 1, et la ligne de fin à + 14 (1+14=15 lignes), et on quitte la boucle
LigneDeButTableau = I - 1
LigneFinTableau = LigneDeButTableau + 14
Exit For
End If
Next I
' Si on a trouvé la ligne, alors on peut cacher les autres lignes
If LigneDeButTableau > 0 Then
' On distingue le cas où la semaine est la semaine 1 du reste, car il n'y a rien à cacher avant.
Select Case LigneDeButTableau
Case 4
.Range(.Rows(LigneFinTableau + 1), .Rows(DerniereLigne)).Hidden = True
Case Else
.Range(.Rows(4), .Rows(LigneDeButTableau - 1)).Hidden = True
' Si la semaine est la dernière de l'année, il n'y a rien à cacher après.
If Semaine < 52 Then
.Range(.Rows(LigneFinTableau + 1), .Rows(DerniereLigne)).Hidden = True
End If
End Select
End If
End With
'réactivation de la mise à jour de l'écran
Application.ScreenUpdating = True
End Sub |
Partager