Alors là, comme ça, je n'ai pas vraiment d'idée mais il n'y a pas de raison que ça marche sur un fichier et pas sur un autre.
Les erreurs de compilation sont des saisies imparfaites (if sans end if, pas de sub au début, ...).
Par exemple, le méthode .protect toute seule et donc pas rattachée à la feuille sur laquelle elle devrait agir provoquerait probablement une erreur de compilation.
Il faut avoir une des 2 choses suivantes :
Sheets("blabla").protect allowformattingcells:=true 'ou ws.protect ...
ou
with ws
.protect allowformattingcells:=true 'ou sheets("blabla")
'code
end with
Il s'agit d'une méthode portant sur les feuilles donc il faut toujours un objet feuille avant .protect.
Cdlt,