Le canton n° 31 (Vic-le-Comte) comprend les communes suivantes : Busséol, Chadeleuf, Coudes, Laps, Manglieu, Montpeyroux, Mirefleurs, Neschers, Parent, Pérignat-sur-Allier, Pignols, Plauzat, La Roche-Noire, Saint-Georges-sur-Allier, Saint-Maurice, Sallèdes, Sauvagnat-Sainte-Marthe, Vic-le-Comte, Yronde-et-Buron.
Le bureau centralisateur de ce canton est le bureau centralisateur de la commune de Vic-le-Comte.