let rec _Modification_Expr expr our_Hash_table nomModule =
  match expr with
    Binaire (exprL, binOp, exprR) -> 
      let gauche,modif1 = (_Modification_Expr exprL our_Hash_table nomModule) 
      in
      let droite,modif2 = (_Modification_Expr exprR our_Hash_table nomModule) 
      in   
      (Binaire(gauche, binOp, droite), modif1 || modif2)
  | Varia (id, sonT) -> 
      if sonT = Inconnu 
      then 
        (_Recherche_Type_Expr nomModule id our_Hash_table) 
      else 
        (Varia( id, sonT),false
  | Construct(_) -> 
      raise Cas_impossible 
  | Unaire (unOp, exprR) -> 
      let droite, modif = _Modification_Expr exprR our_Hash_table nomModule 
      in
      (Unaire(unOp, droite),modif)
  | Case([]) -> (Case([]),false)
  | Case ((condition, exprR)::liste_case) -> 
      (match (_Modification_Expr (Case(liste_case)) our_Hash_table nomModule) with
        Case(reste), modif1 ->
          let gauche,modif2 = (_Modification_Expr condition our_Hash_table nomModule) 
          in
          let droite,modif3 = (_Modification_Expr exprR our_Hash_table nomModule) 
          in
          (Case((gauche, droite)::reste), (modif1 || modif2 || modif3))
      | _ -> raise Cas_impossible)
  | Num (i) -> (Num (i), false)
  | Chaine(s) -> (Chaine(s), false)
  | NotDet(liste) -> (NotDet(liste), false)
  | Ensemble(_) -> raise Cas_impossible