Ciao, a grandi linee (buttata giù al volo)..

inserisci il record nella tabella commessa :
codice:
strSQL="INSERT INTO COMMESSA (descrizione, rate) VALUES ('" & txtDes.txt & "'," & txtNumRate.text & ");"
Recuperi l'idCommessa usando una funzione del genere:
codice:
Private Function UltimoId(nTabella As String) As Long
   Dim ultimo_id As Long
   Dim objRs As ADODB.Recordset
   Set objRs = New ADODB.Recordset
   objRs.Open "SELECT @@IDENTITY FROM " & nTabella & ";", tuaConnessione
   ultimo_id = objRs(0)
   objRs.Close
   Set objRs = Nothing
   UltimoId = ultimo_id
End Function
inserisci i record nella tabella rate
codice:
numIdCommessa=UltimoId("commessa")
for i=1 to txtNumRate.text
   strSQL="INSERT INTO RATE (idCommessa, importo, dataRata) VALUES (" & numIdCommessa & "," & txtImporto.text & ",#" & tuaData & "#);"
next
P.S. suppongo che idCommessa e idRate siano di tipo contatore!