public static void modifierCategorie(Categorie categorie,
                                         String nouveauNom,
                                         Icone nouvelleIcone,
                                         Utilisateur utilisateur,
                                         Role nouveauConsultationRoleMinimum,
                                         Role nouveauReponseRoleMinimum,
                                         Role nouveauSujetRoleMinimum)
            throws ChampInvalideException, ChampVideException {
        if (!categorie.peutModifierCategorie(utilisateur))
            throw new InterditException("Vous n'avez pas les droits requis pour modifier cette catégorie");

        EntityTransaction transaction = SujetRepo.get().transaction();
        String ancienNom = categorie.getNom();
        Icone ancienneIcone = categorie.getIcone();
        Role ancienConsultationRoleMinimum = categorie.getConsultationRoleMinimum();
        Role ancienReponseRoleMinimum = categorie.getReponseRoleMinimum();
        Role ancienSujetRoleMinimum = categorie.getSujetRoleMinimum();
        try {
            transaction.begin();

            categorie.setNom(nouveauNom);
            categorie.setIcone(nouvelleIcone);
            categorie.setConsultationRoleMinimum(nouveauConsultationRoleMinimum);
            categorie.setReponseRoleMinimum(nouveauReponseRoleMinimum);
            categorie.setSujetRoleMinimum(nouveauSujetRoleMinimum);

            validerCategorie(categorie);
            CategorieRepo.get().mettreAJour(categorie);

            transaction.commit();
        }
        catch(Exception e) {
            if (transaction.isActive())
                transaction.rollback();

            categorie.setNom(ancienNom);
            categorie.setIcone(ancienneIcone);
            categorie.setConsultationRoleMinimum(ancienConsultationRoleMinimum);
            categorie.setReponseRoleMinimum(ancienReponseRoleMinimum);
            categorie.setSujetRoleMinimum(ancienSujetRoleMinimum);

            throw e;
        }
    }