Aller au contenu
Qui a voté quoi ?

Comment sont présentées les données ?

Officiel ou éditorial ?

Données officielles : intitulés, dates, types de vote, résultats, positions nominatives, mandats et groupes proviennent des exports JSON de l’Assemblée nationale, sans modification. Les identifiants officiels (PA…, PM…, PO…, VTANR5L17V…) sont conservés.

Ajouts éditoriaux : les thèmes, les titres simplifiés, les résumés et l’explication de « pour » / « contre » propres à chaque scrutin sont rédigés par Qui a voté quoi ?. Ils sont stockés à part (data/editorial/) et toujours signalés comme tels. L’ordre des groupes de gauche à droite est aussi un choix éditorial.

La nature du vote (amendement, article, ensemble du texte, motion…) est déduite automatiquement de l’intitulé officiel.

Un petit ensemble vérifié

Le site présente pour l’instant une sélection de 14 scrutins publics de la XVIIe législature. Chacun est contrôlé à l’import : le décompte nominatif doit correspondre exactement au décompte officiel par groupe et à la synthèse du scrutin, l’effectif reconstitué ne peut pas dépasser 577 sièges, et les effectifs de groupe reconstitués sont comparés à ceux publiés dans le scrutin.

Dernier import (28 octobre 2026 à 21:45) : 0 erreur, 20 avertissements.
  • Scrutin n° 217 : Groupe PO845401 : position majoritaire publiée « abstention » alors que le décompte donne 118 pour, 0 contre, 3 abst. (le site affiche la position du décompte)
  • Scrutin n° 2105 : Groupe PO845407 : position majoritaire publiée « abstention » alors que le décompte donne 56 pour, 1 contre, 6 abst. (le site affiche la position du décompte)
  • Scrutin n° 2105 : Groupe PO845454 : position majoritaire publiée « contre » alors que le décompte donne 21 pour, 4 contre, 0 abst. (le site affiche la position du décompte)
  • Scrutin n° 2106 : Groupe PO845401 : position majoritaire publiée « abstention » alors que le décompte donne 121 pour, 0 contre, 2 abst. (le site affiche la position du décompte)
  • Scrutin n° 2107 : Groupe PO845401 : position majoritaire publiée « abstention » alors que le décompte donne 19 pour, 101 contre, 3 abst. (le site affiche la position du décompte)
  • Scrutin n° 2107 : Groupe PO845425 : position majoritaire publiée « abstention » alors que le décompte donne 7 pour, 34 contre, 8 abst. (le site affiche la position du décompte)
  • Scrutin n° 2107 : Groupe PO845454 : position majoritaire publiée « contre » alors que le décompte donne 20 pour, 9 contre, 7 abst. (le site affiche la position du décompte)
  • Scrutin n° 2107 : Groupe PO845470 : position majoritaire publiée « abstention » alors que le décompte donne 14 pour, 13 contre, 6 abst. (le site affiche la position du décompte)
  • Scrutin n° 2107 : Groupe PO845485 : position majoritaire publiée « abstention » alors que le décompte donne 11 pour, 3 contre, 9 abst. (le site affiche la position du décompte)
  • Scrutin n° 2107 : Groupe PO845514 : position majoritaire publiée « abstention » alors que le décompte donne 12 pour, 1 contre, 3 abst. (le site affiche la position du décompte)
  • Scrutin n° 2957 : Groupe PO845401 : position majoritaire publiée « abstention » alors que le décompte donne 119 pour, 0 contre, 2 abst. (le site affiche la position du décompte)
  • Scrutin n° 2957 : Groupe PO845454 : position majoritaire publiée « contre » alors que le décompte donne 26 pour, 9 contre, 1 abst. (le site affiche la position du décompte)
  • Scrutin n° 2957 : Groupe PO845470 : position majoritaire publiée « abstention » alors que le décompte donne 26 pour, 3 contre, 4 abst. (le site affiche la position du décompte)
  • Scrutin n° 2957 : Groupe PO845485 : position majoritaire publiée « abstention » alors que le décompte donne 12 pour, 3 contre, 6 abst. (le site affiche la position du décompte)
  • Scrutin n° 4758 : Groupe PO845425 : position majoritaire publiée « contre » alors que le décompte donne 18 pour, 3 contre, 28 abst. (le site affiche la position du décompte)
  • Scrutin n° 4758 : Groupe PO845439 : position majoritaire publiée « contre » alors que le décompte donne 2 pour, 9 contre, 27 abst. (le site affiche la position du décompte)
  • Scrutin n° 4758 : Groupe PO845470 : position majoritaire publiée « pour » alors que le décompte donne 9 pour, 0 contre, 25 abst. (le site affiche la position du décompte)
  • Scrutin n° 4758 : Groupe PO845514 : position majoritaire publiée « abstention » alors que le décompte donne 1 pour, 10 contre, 2 abst. (le site affiche la position du décompte)
  • Scrutin n° 7408 : Groupe PO845485 : position majoritaire publiée « pour » alors que le décompte donne 2 pour, 2 contre, 12 abst. (le site affiche la position du décompte)
  • 18 sièges sans contour géographique (Français établis hors de France, Saint-Barthélemy et Saint-Martin, Wallis-et-Futuna, Polynésie Française, Nouvelle-Calédonie) : accessibles par la recherche et la liste

L’hémicycle à la date du vote

Chaque point représente un député en exercice le jour du scrutin : son mandat a commencé (date de prise de fonction) et n’a pas encore pris fin. Les députés remplacés (nomination au Gouvernement, démission…) n’apparaissent que pendant leur mandat effectif.

Le groupe affiché est celui enregistré dans le scrutin pour les députés ayant une position. Pour les autres, il est déduit des mandats de groupe officiels datés.

Les statuts possibles :

  • Pour — Position « pour » enregistrée par l’Assemblée nationale.
  • Contre — Position « contre » enregistrée par l’Assemblée nationale.
  • Abstention — Le député a voté « abstention » : il participe au vote sans se prononcer. Les abstentions ne comptent pas dans les suffrages exprimés.
  • Non-votant — Statut officiel : le député ne prend pas part au vote du fait de sa fonction (présidence de la séance, membre du Gouvernement…).
  • Non-votant volontaire — Statut officiel : le député a déclaré ne pas vouloir prendre part au vote.
  • Pas de vote enregistré — La source ne mentionne aucune position pour ce député, en exercice à cette date. Cela ne permet pas de savoir s’il était présent ou absent.

Motifs officiels de non-vote : Présidence de l’Assemblée nationale, Présidence de la séance, Membre du Gouvernement. Les mises au point (un député indique après coup qu’il souhaitait voter autrement) sont affichées mais ne modifient jamais le résultat officiel.

Un vote non enregistré ne signifie pas une absence : un député peut être présent sans participer à un scrutin, ou être retenu par d’autres travaux parlementaires. Nous ne déduisons jamais une présence ou une absence physique.

Nombres et pourcentages

  • Votants = pour + contre + abstention. Les barres de résultat sont en pourcentage des votants.
  • Suffrages exprimés = pour + contre. La majorité requise se calcule sur cette base (sauf motion de censure : majorité absolue des membres de l’Assemblée).
  • Par groupe, deux bases au choix : l’effectif du groupe en exercice à la date du vote (tous statuts), ou ses suffrages exprimés.

Carte et circonscriptions

Les contours proviennent du jeu « Contours géographiques des circonscriptions législatives » publié sur data.gouv.fr (dérivé des données du ministère de l’Intérieur et des contours de bureaux de vote), correspondant au découpage en vigueur pour les élections de 2024. À chaque import, chaque contour est rapproché d’un siège de la législature (numéro de département + numéro de circonscription) : tout contour sans siège, ou en double, bloque l’import.

18 circonscriptions n’ont pas de contour dans ce fichier (Français établis hors de France, Saint-Barthélemy et Saint-Martin, Wallis-et-Futuna, Polynésie Française, Nouvelle-Calédonie) : elles restent accessibles par la recherche et la sélection de territoire.

Sur la fiche d’un scrutin, chaque circonscription est colorée selon la position du député qui la représentait ce jour-là.

Sources

Mode démonstration

Si les sources officielles sont inaccessibles lors de l’import, le site passe en mode démonstration, signalé par un bandeau rouge sur toutes les pages. Les députés, groupes et votes y sont entièrement fictifs, et la carte est désactivée pour ne jamais associer un vote inventé à une personne ou à un territoire réels.

Reproduire l’import

npm run import             # télécharge les exports et reconstruit data/qvq.sqlite
npm run import -- --offline # réutilise les fichiers de data/raw/
npm run build

Pour ajouter un scrutin : inscrire son numéro dans data/selection.json, rédiger éventuellement son enrichissement dans data/editorial/scrutins.json, puis relancer l’import.