Come mi hai detto funziona, comunque il codice è questo (ho tolto il superfluo):

Set RsProd = Server.CreateObject("ADODB.Recordset")
SqlRsProd = "SELECT * FROM AnaProd"
RsProd.Open SqlRsProd, Connect, adOpenStatic, adLockOptimistic

RsProd.AddNew

RsProd("CodicePro") = Request.Form("Prodotto")

RsProd.Update

Set RsProdDet = Server.CreateObject("ADODB.Recordset")
SqlRsProdDet = "SELECT @@IDENTITY FROM AnaProd"
RsProdDet.Open SqlRsProdDet, Connect, adOpenStatic, adLockOptimistic

Id = RsProdDet(0)
Response.Write(Id & " - " & RsProd("Id"))

Il Response.Write(Id) stampa l'id del record appena inserito (come serve), ma se scrivo Response.Write(RsProd("Id")) perfare una prova non stampa nulla.