Le canton de Treignac est limitrophe de la Haute-Vienne et drainé par la Vézère et son petit affluent local la Soudaine, qui naît à Saint-Hilaire-les-Courbes et conflue avec la Vézère à 6 km en aval de Treignac. Séparé en deux par la Vézère d’Est en Ouest, le canton est aussi séparé du Nord au Sud par la Montagne à l’Est et le plateau d’Uzerche à l’Ouest. Treignac conserve plusieurs éléments de son passé médiéval, notamment une belle halle et un vieux pont traversant la Vézère. Son canton comprend 12 communes : Affieux, Chamberet, L’Église-aux-Bois, Lacelle, Le Lonzac, Madranges, Peyrissac, Rilhac-Treignac, Saint-Hilaire-les-Courbes, Soudaine-Lavinadière, Treignac et Veix. Il comptait 4941 habitants en 2006.