je pense comprendre:
Tu fais appel à ta macro "Masque_lig" à partir de la feuille "DONNEES" qui est la feuille active. Si je ne me trompe pas la feuille "NOTE DE CALCULS" est protégé par un mot de passe, hors :
ActiveSheet.Unprotect ("motdepasse")
enlève la protection de la feuille active donc la feuille "DONNEES".
d'ou l'erreur.....
donc si tu veux masquer les lignes d'une autre feuille que la feuillle active voici ton code modifié:
Sub Masque_lig()
Application.ScreenUpdating = False
Dim cellule As Range
With Sheets("NOTE DE CALCULS")
.Unprotect ("motdepasse")
For Each cellule In .Range("M47:M245")
If cellule.Value = 0 Then
cellule.EntireRow.Hidden = True
Else
cellule.EntireRow.Hidden = False
End If
Next cellule
.Protect Password:="motdepasse"
End With
Application.ScreenUpdating = True
End Sub
ça fonctionne