Sub Masquer_IV()
Dim LG&, t, pTest As Range, p As Range
t = Timer
'Création d'une feuille vide (pour pouvoir réaliser le test)
Sheets.Add
'remplissage de la plage N2:N50 avec des nombres et parmi eux quelques zéros
Set pTest = Range("N2:N50")
pTest.FormulaR1C1 = "=MOD(ROW(),RANDBETWEEN(2,12))"
'On transforme les formules en colonne N en valeurs seules
pTest = pTest.Value
'On détermine le numéro de ligne la dernière cellule non vide de la colonne N
LG = Cells(Rows.Count, "N").End(3).Row
'Dans la dernière colonne du classeur (rarememnt utilisée en génréral), on insére une formule:
'=SI(N2=;"$",1)
Cells(2, Columns.Count).Resize(LG - 1).Formula = "=IF(N2=0,""$"",1)"
'Grâce à SpecialCells, on détermine dans la dernière colonne , les cellules pour lesquelles la formule
'renvoie la valeur $ (qui est donc du texte)
Set p = Columns(Columns.Count).SpecialCells(xlCellTypeFormulas, 2)
'Mise en couleur des cellules =0 (juste pour test visuel)
Intersect(pTest, p.EntireRow).Interior.ColorIndex = 6
MsgBox "Masquer les lignes si cellule en colonne N=0", vbExclamation
'Cela permet de masquer les lignes correspondantes (sans passer par une boucle)
Application.ScreenUpdating = False
p.EntireRow.Hidden = True
Application.ScreenUpdating = True
'On supprime la dernière colonne qui contenait les formules
Columns(Columns.Count).Delete
MsgBox "Staple " & Timer - t
End Sub