let rec _Changer_Type_Assign nomModule sonExpr hashTable =
  match sonExpr with
    Binaire (exprL, binOp, exprR) -> 
      let gauche = (_Changer_Type_Assign nomModule exprL hashTable) 
      in
      let droite = (_Changer_Type_Assign nomModule exprR hashTable) 
      in   
      Binaire(gauche, binOp, droite)
  | Varia (id, _) -> 
      Varia((_Changer_Type_Var nomModule id hashTable))     
  | Construct(_) -> 
      raise Cas_impossible
  | Unaire (unOp, exprR) -> 
      let droite = (_Changer_Type_Assign nomModule exprR hashTable) 
      in
      Unaire(unOp, droite)
  | Case([]) -> 
      Case([])
  | Case ((condition, exprR)::liste_case) -> 
      (match (_Changer_Type_Assign nomModule (Case(liste_case)) hashTable) with
        Case(reste) ->
          let gauche = (_Changer_Type_Assign nomModule condition hashTable) 
          in
          let droite = (_Changer_Type_Assign nomModule exprR hashTable) 
          in
          Case((gauche,droite)::reste)
      | _ -> 
          raise Cas_impossible)
  | Ensemble(_) -> 
      raise Cas_impossible
  | expr -> 
      expr