Professeur agrégé de biologie, il est élu en mars 1988, conseiller général du canton de Montsalvy à l'âge de 25 ans. Il occupe ainsi le poste laissé vacant à la suite du décès de son père, Guy, conseiller général sortant décédé en décembre 1987. C'est alors le plus jeune conseiller général de France[1]. En 1989, il devient, comme son père de 1979 à son décès, maire de Montsalvy. En 2001, il est élu président du conseil général du Cantal à l'âge de 38 ans, ce qui en fait à nouveau le plus jeune président de conseil général de France. Il est ensuite réélu sur le canton de Montsalvy puis, à la suite du redécoupage cantonal, sur le canton d'Arpajon-sur-Cère.
Pour se conformer à la loi contre le cumul des mandats, il devient conseiller municipal de Montsalvy et conseiller communautaire à la communauté de communes de Montsalvy qu'il a présidée de 1995 à 2008.
Le , dans le cadre de l'affaire Fillon, il renonce à soutenir le candidat LR François Fillon à l'élection présidentielle[2] et appelle au retour d'Alain Juppé[3]. Son parrainage en faveur du vainqueur de la primaire de droite et du centre est toutefois rendu public dix jours après la mise en examen du candidat LR.
Il est élu député de la première circonscription du Cantal, au second tour, le avec 55,96 % des voix. Il succède ainsi à Yves Coussain qui ne se représente pas. Il se dit volontiers proche de la droite sociale et affirme avoir gardé ses distances avec Nicolas Sarkozy durant le mandat présidentiel de celui-ci entre 2007 et 2012[1].
Il est battu aux élections législatives de juin 2012 en n'obtenant que 48,37 % des voix face au maire PS d'Aurillac Alain Calmette, qui lui en obtient 51,63 %.
Il est à nouveau élu le au second tour avec 51,11 % des voix et siège dans le groupe des Républicains[4].