Hello, and welocme. you could be thinking right on the tps and ects. but before I would replace these parts, i would do two things first. even know you have cleaned the Iac, it could still be the problem. the iac has a electric motor that runs a pintle in and out. if there is a problem with this motor it will cause a high idle. also there are 4 wires to the iac, two of then are simple power and ground that runs the iac back and forth, there are two other wires that are feedback circuits to the pcm, so the pcm will know what position the iac motor is in. the pcm needs to know where the iac pintle psoition is, to know whether to command a lower or higher idle speed.
the two things I would check is the resistances at the iac motor, with the connector un plugged. here is the spec.
IAC terminal resistance:
if this checks out good, check the 4 wires between the iac motor and the pcm for being open or high resistance. if all checks ok, go ahead with your plan with the tps and ects.
The idle speed on DOHC and SOHC 1.9L engines is controlled by the PCM via an idle air control (IAC) valve. The IAC valve consists of a 2 coil stepper motor that moves a pintle valve in and out from the seat controlling the amount of air bypassing the throttle plate. The powertrain control module (PCM) controls the IAC valve by supplying ignition voltage or ground to any of the four circuits of coil A or coil B. When one circuit of a coil is supplied ignition voltage, the other side is supplied ground. Coil A and coil B are independent of each other, however both must be functional in order for the valve to move correctly. The IAC position is measured in counts, which can be read on the scan tool. When the engine is turned OFF, the IAC is retracted 80-100 counts allowing for maximum air during a restart. After the engine is started, the motor position command is based on ECT and throttle position (TP) sensor values. DTC P0507 sets when the actual engine speed is 200 RPM or more above the desired idle speed.