The downpour led the Mérine River to overflow its banks, putting Moudon’s Old Town under water and inundating many cellars, the ATS news agency reported.
People were evacuated from their homes in the town, northeast of Lausanne, as a safety precaution, authorities said.
They were to be re-lodged for the night through the services of the local civil protection organization.
Emergency officials responded to 100 cases of flooded basements or homes, the 24heures newspaper reported online.
Several highways were cut because of land subsiding, including a section of the route from Moudon to Bern.
The road was scheduled to reopen in the Lausanne-Bern direction at 8pm, ATS reported.
The road was expected to open in both directions later Sunday night.
Work was also under way to clear the the route between Moudon and Thierrens, ATS said.
Deviations were put in place for roads linking Moudon and Sottens and Chesalles, which will remain closed until Monday.
The rail link between Moudon and Palezieux was also knocked out of commission by the heavy rain.
Swiss Federal Railways (CFF) said several days of work would be needed to restore service on the line.
CFF put a bus service in place to replace the train service.
The neighbouring canton of Fribourg also experienced severe flooding, according to reports.
A bout of hail exacerbated problems by blocking drains.
At least half a dozen villages were impacted by flooding and mud slides, ATS reported.