Private Sub Worksheet_Change(ByVal Target As Range) ' Si la feuille change, renvoie Target, sélection active sur la feuille
If Target.Address = "$F$3" Then ' Vérifie que Target est F3
champ = Target ' Charge la sélection dans une variable champ, soit F3
n = Range(champ).CurrentRegion.Rows.Count ' n prends le nombre de lignes renseignées autour de F3
' Mais il ne sert à rien puisqu'il n'est pas utilisé après
For i = 2 To Range(champ).Rows.Count ' De 2 au nombre de lignes de champ (mais comme champ vaut F3, ça vaut 1)
temoin = False ' Variable booléenne passée à faux
For c = 2 To Range(champ).Columns.Count ' De 2 au nombre de colonnes de champ (mais comme champ vaut F3, ça vaut 1)
If Range(champ).Cells(i, c) <> 0 Then temoin = True 'Si la cellule est différente de 0, temoin passe à vrai
Next c ' c suivant
Rows(i + Range(champ).Row - 1).Hidden = Not temoin ' Cache la ligne si temoin est faux
Next i ' i suivant
ActiveSheet.PrintPreview ' Affiche un aperçu avant impression
Cells.EntireRow.Hidden = False ' Réaffiche les lignes
End If ' fin du test
End Sub