| 19.10 | DNF | | | Veneto Classic (1.Pro) | 178.8 | | | more |
| 15.10 | 56 | | | Giro del Veneto (1.Pro) | 161.2 | | | more |
| 11.10 | 39 | | | Tour de Vendée (1.1) | 202.7 | | | more |
| 05.10 | DNF | | | Coppa Agostoni - Giro delle Brianze (1.1) | 166.7 | | | more |
| 17.09 › 21.0917-21/9 | | | | Skoda Tour de Luxembourg (2.Pro) | | | | more |
| 29 | | | Mountains classificationMountains classification | | | | |
| 17 | | | Points classificationPoints classification | | | | |
| 72 | | | General classificationGeneral classification | | | | |
| 21.09 | 87 | | | S5Stage 5 - Mersch › Luxembourg | 176.4 | | | |
| 20.09 | 99 | 64 | | S4 (ITT)Stage 4 (ITT) - Niederanven › Niederanven | 26.3 | | | |
| 19.09 | 65 | 62 | | S3Stage 3 - Mertert › Vianden | 170.5 | | | |
| 18.09 | 3 | 47 | | S2Stage 2 - Remich › Mamer | 168.4 | 12 | 10 | |
| 17.09 | 48 | 49 | | S1Stage 1 - Luxembourg › Luxembourg | 152.8 | | | |
| 19.08 › 22.0819-22/8 | | | | Tour du Limousin-Périgord - Nouvelle Aquitaine (2.1) | | | | more |
| 21.08 | DNF | | | S3Stage 3 - Saint-Jal › Masseret | 182.7 | | | |
| 20.08 | 77 | 64 | | S2Stage 2 - Thiviers › Grèzes (Les Côteaux Périgourdins) | 174.3 | | | |
| 19.08 | 15 | 9 | | S1Stage 1 - Panazol › La Courtine | 184.6 | | | |
| 06.08 › 08.086-8/8 | | | | Tour de l'Ain (2.1) | | | | more |
| 6 | | | Points classificationPoints classification | | | | |
| 44 | | | General classificationGeneral classification | | | | |
| 08.08 | 45 | | | S3Stage 3 - Plateau d'Hauteville › Belley | 130.4 | | | |
| 07.08 | 68 | 52 | | S2Stage 2 - Saint-Vulbas › Lélex Monts-Jura | 153.1 | | | |
| 06.08 | 1 | 1 | | S1Stage 1 - Feillens › Lagnieu | 163 | 20 | 14 +3 | |
| 26.07 › 30.0726-30/7 | | | | Ethias-Tour de Wallonie (2.Pro) | | | | more |
| 3 | | | Mountains classificationMountains classification | | | | |
| 81 | | | General classificationGeneral classification | | | | |
| 30.07 | 97 | | | S5Stage 5 - Bertrix › Bertrix | 183.3 | | | |
| 29.07 | 91 | 74 | | S4Stage 4 - Welkenraedt › Seraing 68k | 163.3 | | | |
| 28.07 | 46 | 33 | | S3Stage 3 - Estinnes › Antoing | 165.3 | | | |
| 27.07 | 73 | 40 | | S2Stage 2 - Huy › Sambreville | 153.1 | | | |
| 26.07 | 12 | 12 | | S1Stage 1 - Nassogne › Nassogne | 182 | | | |
| 29.06 | DNF | | | National Championships France ME - Road Race (NC) | 214.5 | | | more |
| 18.06 › 21.0618-21/6 | | | | La Route d'Occitanie - CIC (2.1) | | | | more |
| 12 | | | Mountains classificationMountains classification | | | | |
| 12 | | | Points classificationPoints classification | | | | |
| 69 | | | General classificationGeneral classification | | | | |
| 21.06 | 4 | | | S4Stage 4 - Saint-Gaudens › Saint-Girons | 128.5 | 5 | | |
| 20.06 | 108 | 98 | | S3Stage 3 - Pujaudran › Luz-Ardiden | 173.9 | | | |
| 19.06 | 95 | 44 | | S2Stage 2 - Gignac Vallée de L'Herault › Carmaux Ségala | 195.8 | | | |
| 18.06 | 51 | 51 | | S1 (ITT)Stage 1 (ITT) - Saint-Affrique › Roquefort-sur-Soulzon | 10.5 | | | |
| 08.06 | 116 | | | Brussels Cycling Classic (1.Pro) | 205.5 | | | more |
| 29.05 › 01.0629-1/5 | | | | Boucles de la Mayenne - Crédit Mutuel (2.Pro) | | | | more |
| 17 | | | Mountains classificationMountains classification | | | | |
| 56 | | | General classificationGeneral classification | | | | |
| 01.06 | 107 | | | S3Stage 3 - Javron-les-Chapelles › Laval | 163.9 | | | |
| 31.05 | 49 | 45 | | S2Stage 2 - Sainte-Suzanne › Bais | 210.2 | | | |
| 30.05 | 62 | 21 | | S1Stage 1 - Saint-Berthevin › Juvigné | 166 | | | |
| 29.05 | 19 | 19 | | ProloguePrologue - Espace Mayenne - Laval › Espace Mayenne - Laval | 5.4 | | | |
| 26.05 | 14 | | | Mercan'Tour Classic Alpes-Maritimes (1.1) | 152 | 7 | 5 | more |
| 10.05 | 16 | | | Grand Prix du Morbihan (1.Pro) | 190 | 10 | 5 | more |
| 08.05 | 29 | | | Boucles de l'Aulne - Châteaulin (1.1) | 183.1 | | | more |
| 20.04 | 95 | | | Tour du Doubs (1.1) | 196.9 | | | more |
| 19.04 | DNF | | | Tour du Jura Cycliste (1.1) | 176.4 | | | more |
| 18.04 | 76 | | | Classic Grand Besançon Doubs (1.1) | 168.65 | | | more |
| 08.04 › 11.048-11/4 | | | | Région Pays de la Loire Tour (2.1) | | | | more |
| 11.04 | DNF | | | S4Stage 4 - Sillé-le-Guillaume › Le Mans | 186.5 | | | |
| 10.04 | 79 | 56 | | S3Stage 3 - Tiercé › Hambers (La Butte de Montaigu) | 165.9 | | | |
| 09.04 | 28 | 38 | | S2Stage 2 - Cugand-la-Bernardière › Beaupréau-en-Mauges | 158.5 | | | |
| 08.04 | 61 | 62 | | S1Stage 1 - Machecoul-Saint-Même › La Baule-Escoublac | 208.4 | | | |
| 24.03 › 30.0324-30/3 | | | | Volta Ciclista a Catalunya (2.UWT) | | | | more |
| 118 | | | General classificationGeneral classification | | 5 | | |
| 30.03 | 104 | | | S7Stage 7 - Barcelona › Barcelona | 88.2 | | | |
| 29.03 | 95 | 126 | | S6Stage 6 - Berga › Berga | 72 25 | | | |
| 28.03 | 123 | 130 | | S5Stage 5 - Paüls › Amposta | 165.9 | | | |
| 27.03 | 122 | 129 | | S4Stage 4 - Sant Vicenç de Castellet › Montserrat Mil·lenari | 188.7 | | | |
| 26.03 | 138 | 136 | | S3Stage 3 - Viladecans The Style Outlets › La Molina | 218.6 | | | |
| 25.03 | 90 | 128 | | S2Stage 2 - Banyoles › Figueres | 180.5 | | | |
| 24.03 | 143 | 143 | | S1Stage 1 - Sant Feliu de Guíxols › Sant Feliu de Guíxols | 178.6 | | | |
| 02.03 | DNF | | | Faun Drome Classic (1.Pro) | 189 | | | more |
| 01.03 | DNF | | | Faun-Ardèche Classic (1.Pro) | 165.9 | | | more |
| 08.02 › 12.028-12/2 | | | | Tour of Oman (2.Pro) | | | | more |
| 49 | | | General classificationGeneral classification | | | | |
| 12.02 | 77 | | | S5Stage 5 - Imty › Jabal Al Akhdhar (Green Mountain) | 138.5 | | | |
| 11.02 | 102 | 44 | | S4Stage 4 - Oman Across Ages Museum › Oman Convention and Exhibition Center | 181.5 | | | |
| 10.02 | 53 | 42 | | S3Stage 3 - Fanja › Eastern Mountain | 180.8 | | | |
| 09.02 | 54 | 40 | | S2Stage 2 - Al Rustaq Fort › Yitti Hills | 202.9 | | | |
| 08.02 | 84 | 84 | | S1Stage 1 - Bushar › Bimmah Sink Hole | 177.7 | | | |
| 07.02 | 5 | | | Muscat Classic (1.1) | 170.3 | 28 | 50 | more |