Listen to the article
Le premier ministre, Sébastien Lecornu, a annoncé, vendredi 30 janvier, qu’il recourait, pour la troisième fois, à l’article 49 alinéa 3 de la Constitution à l’Assemblée nationale. Ce recours ouvre la voie à l’adoption définitive du projet de loi de finances 2026, après quatre mois de débats infructueux au Parlement. Le chef du gouvernement avait, dans un premier temps, écarté le recours à cette procédure souvent qualifiée de « passage en force », au nom de la recherche d’un compromis. Mais il a décidé d’y recourir pour surmonter le blocage des débats à l’Assemblée nationale.
Par ce choix, M. Lecornu engage de nouveau la responsabilité de son gouvernement, qui se retrouve de ce fait exposé à deux motions de censure promises par la gauche (les « insoumis », les écologistes et les communistes) et l’extrême droite (le Rassemblement national et l’Union des droites pour la République). Le rejet de ces motions, lors d’un vote prévu lundi 2 février, entraînerait l’adoption automatique et définitive du budget de l’Etat.
Les Décodeurs résument ce qu’il faut savoir pour comprendre comment ce dispositif fonctionne et les conséquences possibles de son utilisation.
Un engagement de responsabilité sur un texte
Ne disposant pas de majorité absolue à l’Assemblée, le gouvernement a la possibilité de « passer en force » en ayant recours à l’article 49.3 de la Constitution, qui permet d’adopter directement un texte de loi, en l’occurrence le projet de loi de finances (PLF) pour 2026.
En effet, cet alinéa 3 de l’article 49 permet au premier ministre, « après délibération du conseil des ministres », d’« engager la responsabilité du gouvernement devant l’Assemblée nationale » sur le vote de certains textes.
Depuis la révision constitutionnelle de 2008, l’usage du 49.3 est limité à un seul texte de loi par session parlementaire, à l’exception des textes budgétaires, pour lesquels le gouvernement peut y recourir sans limitation.
Le risque de la motion de censure
Pour faire adopter le budget de l’Etat par le truchement du 49.3, M. Lecornu devra engager le dispositif à trois reprises. Une première fois pour l’examen de la partie consacrée aux recettes, une deuxième pour le volet dévolu aux dépenses et une troisième sur l’ensemble du texte, à son retour à l’Assemblée après son examen par le Sénat.
A chacun de ces recours au 49.3, les députés ont la possibilité de déposer une motion de censure dans un délai de vingt-quatre heures. Si cette motion est soutenue par la majorité des députés siégeant au Palais-Bourbon, la loi est rejetée et le gouvernement est renversé. A l’inverse, si aucune motion de censure n’est déposée, ou si la motion n’obtient pas la majorité absolue, la loi est adoptée et le gouvernement se maintient.
Selon ce mode de scrutin, inversé par rapport aux votes classiques, seuls les votes en faveur de la motion de censure sont pris en compte. Il n’est donc pas possible pour les élus de choisir la position médiane de l’abstention, comme sur d’autres textes.
${isMobile ? group.nom_court_custom : group.nom_long_custom}
`;
});
toggleContainer.innerHTML += ``;
function updateHemicycle() {
dataSorted.sort((a, b) => {
const aActive = Object.keys(isActive).includes(a.id);
const bActive = Object.keys(isActive).includes(b.id);
if (aActive && bActive) {
return order.indexOf(a.nom) – order.indexOf(b.nom);
} else if (aActive) {
return -1;
} else if (bActive) {
return 1;
} else {
return 0;
}
});
let countSeats = 0;
svg.datum(Object.values(dataSorted)).call(parliament);
svg.selectAll(« circle.seat »).each(function(d, i) {
const color = d.party.id.includes(« _missing ») || typeof isActive[`${d.party.id}`] == ‘undefined’ || isActive[`${d.party.id}`] == false ? isDark ? « #FFFFFFD9 » : « #D5D8DC » : d.party[colorMode];
countSeats += d.party.id.includes(« _missing ») || typeof isActive[`${d.party.id}`] == ‘undefined’ || isActive[`${d.party.id}`] == false ? 0 : 1;
const borderColor = d.party.id.includes(« _missing ») && d.party.seats && typeof isActive[`${d.party.id.replace(« _missing », « »)}`] != ‘undefined’ && isActive[`${d.party.id.replace(« _missing », « »)}`] != false > 0 ? d.party[colorMode] : d3.rgb(color).darker(.3);
d3.select(this)
.attr(« class », « seat »)
.style(« fill », color)
.style(« stroke-width », 1)
.style(« stroke », borderColor);
});
let textSeats = `${countSeats} siège${countSeats > 1 ? ‘s’ : »}`;
let majorityCounter = `${countSeats >= majority ? `Censure votée` : ‘Pas de censure’}`;
counterText.selectAll(« text »)
.data([textSeats])
.join(« text »)
.attr(« x », widthHem / 2)
.attr(« y », isMobile ? widthHem * 0.43 : widthHem * 0.45)
.text(d => d);
majorityText.selectAll(« text »)
.data([majorityCounter])
.join(« text »)
.attr(« x », widthHem / 2)
.attr(« y », isMobile ? widthHem * 0.486 : widthHem * 0.48)
.text(d => d);
if (countSeats >= majority) {
majorityFalse.transition().duration(200).style(« opacity », « 0 »);
majorityTrue.transition().duration(500).style(« opacity », « 1 »);
} else {
majorityFalse.transition().duration(500).style(« opacity », « 1 »);
majorityTrue.transition().duration(200).style(« opacity », « 0 »);
}
}
// Draw one first time
updateHemicycle();
// Watch triggers
document.querySelectorAll(« .lmui-toggle__input »).forEach(toggle => {
toggle.oninput = (e) => {
if (e.target.checked) {
isActive[`${e.target.value}`] = e.target.checked;
isActive[`${e.target.value}_missing`] = e.target.checked;
}
else {
delete isActive[`${e.target.value}`];
delete isActive[`${e.target.value}_missing`];
}
updateHemicycle();
}
});
// Watch divide buttons
document.querySelectorAll(« .l_divide_input »).forEach(input => {
input.oninput = (e) => {
// ensure min and max are respected
const min = parseInt(input.min);
const max = parseInt(input.max);
let value = parseInt(e.target.value) || min;
if (value < min) value = min;
if (value > max) value = max;
const minusButton = input.previousElementSibling;
const plusButton = input.nextElementSibling;
minusButton.disabled = value <= min;
plusButton.disabled = value >= max;
input.value = value;
// attribute seats
const groupId = input.name;
const newValue = parseInt(e.target.value);
const actualSeats = parseInt(e.target.max);
let group = dataSorted.find(group => group.id == groupId);
group.seats = newValue;
let missingGroup = dataSorted.find(group => group.id == `${groupId}_missing`);
if (typeof missingGroup != ‘undefined’) {
if (actualSeats – newValue === 0) {
dataSorted = dataSorted.filter(group => group.id != `${groupId}_missing`);
} else {
missingGroup.seats = actualSeats – newValue;
}
} else {
if (actualSeats – newValue > 0) {
missigGroupObj = {
…group,
id: `${group.id}_missing`,
seats: actualSeats – newValue
}
dataSorted.push(missigGroupObj);
}
}
updateHemicycle();
}
});
// Watch + and – buttons
document.querySelectorAll(« .l_divide_minus »).forEach(button => {
button.onclick = (e) => {
const input = e.target.nextElementSibling;
let value = parseInt(input.value) || parseInt(input.min);
if (value > parseInt(input.min)) {
input.value = value – 1;
input.dispatchEvent(new Event(‘input’));
}
e.target.disabled = value – 1 <= parseInt(input.min);
e.target.nextElementSibling.nextElementSibling.disabled = false;
}
});
document.querySelectorAll(« .l_divide_plus »).forEach(button => {
button.onclick = (e) => {
const input = e.target.previousElementSibling;
let value = parseInt(input.value) || parseInt(input.min);
if (value < parseInt(input.max)) {
input.value = value + 1;
input.dispatchEvent(new Event(‘input’));
}
e.target.disabled = value + 1 >= parseInt(input.max);
e.target.previousElementSibling.previousElementSibling.disabled = false;
}
});
// Accessibility button
// document.querySelector(« .lHemSwitch »).oninput = (e) => {
// isAccessible = e.target.checked;
// colorMode = isAccessible ? isDark ? ‘color_dalt_dark’ : ‘color_dalt’ : isDark ? ‘color_dark’ : ‘color_light’;
// updateLegendColors();
// updateHemicycle();
// }
updateLegendColors();
updateHemicycle();
// Watch reinit button
document.querySelector(« .l_reinit »).onclick = (e) => {
reinit();
}
}
// Run
runHemicycle();
Un usage très répandu sous la Vᵉ République
Depuis 1958, l’article 49 alinéa 3 a été déclenché plus de 100 fois, dont 23 par la première ministre Elisabeth Borne (2022-2024). Le record absolu revient au socialiste Michel Rocard, qui a engagé la responsabilité de son gouvernement à 28 reprises, à une époque où l’usage du 49.3 n’était pas limité. A l’inverse, plusieurs premiers ministres n’y ont jamais eu recours, souvent parce qu’ils disposaient d’une large majorité.
Si les groupes politiques d’opposition ont très souvent répliqué à ces 49.3 par une motion de censure, une seule a, pour le moment, conduit à la chute du gouvernement : il s’agit de la motion introduite, en décembre 2024, contre le gouvernement de Michel Barnier, qui avait engagé sa responsabilité sur le projet de loi de financement de la sécurité sociale pour 2025. En 1962, une autre motion de censure avait également abouti, conduisant au renversement du premier ministre Georges Pompidou, mais celle-ci avait été déclenchée à l’initiative des députés (article 49.2), et non à la suite de l’engagement du gouvernement sur un texte (49.3).
« ;
html += »;
html += «
» + enCap(enToutesLettres(d.nombre)) + » recours au 49.3 en « ;
if (+d.fin > 0) {
duree = d.fin – d.debut;
} else {
duree = anneeEnCours – d.debut;
}
html += enToutesLettres(duree) + » an » + (duree >= 2 ? « s » : « ») + «
« ;
return html;
});
// la grille verticale
function make_x_gridlines() {
return d3.axisTop(x).ticks(5);
}
svg.append(« g »).attr(« class », « grid »).call(make_x_gridlines().tickSize(-height).tickFormat(« »));
// on ajoute du gras sur le dernier
d3.selectAll(« #quaranteneuftrois .tick text »).attr(« class », (d) => (String(d).indexOf(dernier) != -1 ? « gras » : « »));
// quand tu veux classer
d3.select(« input#changerClassement »).on(« change », onChange);
function onChange() {
var y0 = y
.domain(
data
.sort(
this.checked
? function (a, b) {
return a.nombre – b.nombre;
}
: function (a, b) {
return d3.ascending(a.debut, b.debut);
}
)
.map((d) => d.gvt)
)
.copy();
svg.selectAll(« rect.barre »).sort((a, b) => y0(b.gvt) – y0(a.gvt));
var transition = svg.transition().duration(500),
delay = function (d, i) {
return i * 10;
};
transition
.selectAll(« rect.barre »)
.delay(delay)
.attr(« y », (d) => y0(d.gvt));
transition.select(« .y.axis »).call(yAxis).selectAll(« g »).delay(delay);
}
// Fonction pour les milliers
function milliers(p) {
if (p < 1000) {
return p;
} else {
renvoi = String((p / 1000).toFixed(3)).replace(« . », » « );
return renvoi;
}
}
make_tooltip(« rect.barre »);










13 commentaires
The cost guidance is better than expected. If they deliver, the stock could rerate.
Good point. Watching costs and grades closely.
Good point. Watching costs and grades closely.
Silver leverage is strong here; beta cuts both ways though.
Good point. Watching costs and grades closely.
Interesting update on Comment fonctionne l’article 49.3, qui a été de nouveau déclenché par Sébastien Lecornu pour faire passer le budget ?. Curious how the grades will trend next quarter.
Good point. Watching costs and grades closely.
Exploration results look promising, but permitting will be the key risk.
Good point. Watching costs and grades closely.
Interesting update on Comment fonctionne l’article 49.3, qui a été de nouveau déclenché par Sébastien Lecornu pour faire passer le budget ?. Curious how the grades will trend next quarter.
Production mix shifting toward Politique might help margins if metals stay firm.
Good point. Watching costs and grades closely.
Uranium names keep pushing higher—supply still tight into 2026.