Sub Masquer_Lignes_Conditionnel()
Dim Plage As Range, PlageVide As Range
Dim L As Byte
Dim C As Byte
Dim Chaine As String
Application.ScreenUpdating = False
'Trier les tableaux -----------------------------------------------------------
For L = 1 To 3
Set Plage = Choose(L, Range('A6:H45'), Range('A50:H89'), Range('A94:H133'))
Plage.Sort Key1:=Plage.Cells(1, 4), Order1:=xlAscending
Next L
'Masquer les lignes vides -----------------------------------------------------
'Détermine plage de cellule vide
Set PlageVide = ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks)
'Masque chaque ligne contenant 8 cellules vides ou égales à 0
For L = 6 To 133
Select Case L
Case Is < 46, 50 To 89, Is > 93 'pour exclure les zones de titre
Set Plage = Application.Intersect(Rows(L), PlageVide)
If Not Plage Is Nothing Then
If Plage.Count = 8 Then Rows(L).Hidden = True
Else
Chaine = ''
For C = 1 To 8
Chaine = Chaine & CStr(Cells(L, C))
Next C
If Val(Chaine) = 0 Then Rows(L).Hidden = True
End If
End Select
Next L
Application.ScreenUpdating = True
End Sub