ub Transposer()
Dim db As DAO.Database
Dim tdfNewDef As DAO.TableDef
Dim fldNewField As DAO.field
Dim rstSource As DAO.Recordset, rstTarget As DAO.Recordset
Dim i As Integer, j As Integer, k As Integer
Set db = CurrentDb()
db.Execute "delete from tblFinal_Transposed where Change <> 'Initial'"
For k = 11 To 38 Step 3
Call AddRecord(k)
Next k
db.Close
End Sub
Private Sub AddRecord(field As Integer)
Set db = CurrentDb()
Set rstSource = db.OpenRecordset("Final_Table")
Set rstTarget = db.OpenRecordset("tblFinal_Transposed")
rstSource.MoveLast
rstTarget.MoveLast
rstSource.MoveFirst
For j = 0 To rstSource.RecordCount - 1
If rstSource.Fields(field) <> 0 Then
rstTarget.AddNew
rstTarget.Fields(0) = rstSource.Fields(1)
rstTarget.Fields(1) = rstSource.Fields(2)
rstTarget.Fields(2) = rstSource.Fields(3)
rstTarget.Fields(3) = rstSource.Fields(4)
rstTarget.Fields(4) = rstSource.Fields(5)
rstTarget.Fields(5) = rstSource.Fields(field).Name
rstTarget.Fields(6) = rstSource.Fields(field + 1)
rstTarget.Fields(7) = rstSource.Fields(field + 2)
For i = 8 To rstTarget.Fields.Count - 1
If rstTarget.Fields(i).Name = rstSource.Fields(6) Then
rstTarget.Fields(i) = rstSource.Fields(field)
Else: rstTarget.Fields(i) = 0
End If
Next i
rstTarget.Update
End If
rstSource.MoveNext
Next j
db.Close
End Sub
My first answer would be Yes, if the field in question does not need to be part of the final dataset.