Plugin “scrutin de liste à la proportionnelle”

Formulaire de calcul de répartition de sièges.

Proposer sur son site de calculer la répartition des sièges dans un scrutin de liste à la proportionnelle.

Un scrutin de liste à la proportionnelle propose de répartir les sièges à pourvoir dans une assemblée proportionnellement au nombre de voix.

Après une première répartition des sièges, il reste en général encore de sièges à pourvoir. On peut les répartir (cf. infra.) :
-  selon la méthode de la plus forte moyenne.
-  selon celle du plus fort reste.

Ce plugin permet d’afficher un formulaire pour calculer la répartition des sièges entre des listes.

Avertissement

Ce plugin n’est plus maintenu. On lui préférera “Opérations électorales”, qui contient les mêmes fonctionnalités, et bien plus !

Installation

Le plugin s’installe comme n’importe quel autre plugin.

Il nécessite SPIP 2.0 minimum et SPIP-Bonux.

Utilisation

Insérer le formulaire :
-  dans un article en écrivant

<formulaire|scrut_prop|liste=A;B;C,...> 


-  dans un squelette en écrivant #FORMULAIRE_SCRUT_PROP{A;B;C;...}

Ou A;B; C ... sont les noms des listes.

Vous pouvez éventuellement entourer le code de <div class="ajax"> et </div> pour avoir un formulaire ajaxé [1].

Insertion avancée du formulaire

A partir de la version 1.2, il est possible de ne plus proposer aux remplisseurs de formulaires le choix pour les données suivantes :
-  nombres de sièges
-  seuil pour atteindre des élus
-  valeur de la prime majoritaire
-  type de répartition (plus fort reste ou plus forte moyenne)
-  nombres d’inscrits

Ce sera donc le toilemestre / le rédacteur qui forcera l’une des ses valeurs.

Pour ce faire:
-  dans un squelette mettre

#FORMULAIRE_SCRUT_PROP{A;B;C;...,siege=vvv,seuil=www,prime=xxx,repartition=yyy,inscrits=zzz}


-  dans un article mettre

<formulaire|scrut_prop|liste=A;B;C;...|siege=vvv|seuil=www|prime=xxx|repartition=yyy|inscrits=zzz|>

Où vvv,www,xxx,zzz sont des entiers [2]. Et où yyy peut prendre les valeurs :
-  “reste” pour une répartition au plus fort reste
-  “moyenne” pour une répartition à la plus forte moyenne.

Attention ! Il est obligatoire dans ce cas de passer “tout” les arguments. Sinon SPIP “s’embrouille” et prend par exemple le nombre d’inscrits pour le nombre de sièges ... [3] Si jamais vous ne voulez pas “forcer” une variable :
-  dans un squelette, écrire nom_de_la_variable='', par exemple

#FORMULAIRE_SCRUT_PROP{A;B;C;...,siege=vvv,seuil='',prime=xxx,repartition=yyy,inscrits=zzz}

pour ne pas forcer de seuil.
-  dans un article, mettre simpleme nom_de_la_variable=|, par exemple

<formulaire|scrut_prop|liste=A;B;C;...|siege=vvv|seuil=|prime=xxx|repartition=yyy|inscrits=zzz|>

.

Note (valable avant la version 1.2.1)

Vous pouvez mettre des espaces dans les noms de listes, cependant si vous souhaiter être conforme (X)HTML, ne le faite pas. Les attributs “name” des listes pour le moment sont générées par le nom des listes, espaces compris.

Se servir du formulaire

Le formulaire apparaît.

Exemple de formulaire

Remplissez le nombre voix par liste, le nombre de votes blancs ou nuls, le nombre d’inscrits, le seuil minimum de voix (en pourcentage, arrondi à la voix inférieure) pour avoir des élus, le nombre de sièges disponibles et choisissez si vous souhaitez une répartition au plus fort reste ou à la plus forte moyenne. A partir de la version 1.1, vous pouvez également préciser une prime majoritaire de siège, qui sera donnée à la liste arrivée en tête.

Valider. Le formulaire vérifie que :
-  les nombres sont bien des entiers (exceptions faite du seuil).
-  il n’y a pas plus de votes (ou compris blancs ou nuls) que d’inscrits.
-  le nombre de siège n’est pas nul.
-  la prime majoritaire n’est pas supérieur au nombre de siège à pourvoir.

Puis il affiche les résultats.

Ce que calcul le formulaire

-  Le taux de participation (rapport du nombre de votants, y compris blanc ou nuls, sur le nombre d’inscrits).
-  Le taux de blancs ou nuls (rapport du nombre de blancs ou nuls sur le nombre de votants).
-  La répartition de sièges (en tenant compte du seuil nécessaire pour avoir des élus).

Reste à faire


-  Gérer l’internationalisation.
-  Proposer de mettre l’âge des candidats, en cas d’égalité au moment de la répartition de sièges restants.
-  Gérer le système complexe des Régionales Françaises, qui fonctionnent à la double proportionnelle.
-  Proposer un export CVS des résultats

Annexe : comment calculer la répartition des sièges

Étape 1

Après avoir “éliminé” les listes qui n’atteignent pas le quota de voix, on fait la somme des voix des listes restantes (“voix utiles”).

Puis on divise cette somme par le nombre de siège à pourvoir à la proportionnelle [4], c’est à dire sans les sièges de la prime majoritaire. On obtient ainsi le quotient électoral.

Pour chaque liste pouvant avoir des sièges, on divise le nombre de voix par le quotient électoral. On arrondi le résultat à l’entier inférieur. Le résultat correspond au nombre de siège initiaux de la liste.

Étape 2

Si on fait la somme des sièges attribués, il peut arriver qu’elle ne soit pas égal au nombre de sièges à pourvoir. Auquel cas, deux méthodes s’offrent à nous.


Méthode de la plus forte moyenne.

On divise le nombre de voix de chaque liste [5] par leur nombre de sièges plus 1. On obtient ainsi la moyenne de chaque liste. Celle ayant la plus forte moyenne se voit attribuer un siège de plus.

On recommence l’opération, en tenant compte du nouveau siège attribué, jusqu’à ce que tout les sièges soient attribués.


Méthode du plus fort reste

Dans la division euclidienne [6] du nombre de voix par le quotient électoral, on retient pour chaque liste le reste.

La liste ayant le plus fort reste obtient un siège supplémentaire, puis celle ayant le second plus fort reste etc. Jusquà ce que tout les sièges soient attribués.

Étape 3

Éventuellement, on attribut les sièges de la prime majoritaire à la liste arrivée en tête.

Footnotes

[1C’est à dire dont seul le formulaire sera rechargé, et non pas toute la page.

[2Exception faite de www qui peut-être un nombre décimal, à condition de remplacer la virgule par un point

[3En fait, pour SPIP, la seul chose qui compte, c’est l’ordre dans lequel les arguments sont passés.

[4C’est à dire sans ceux donnés en prime majoritaire

[5Entrant dans la répartition des sièges.

[6C’est à dire “avant la virgule”.

Discussion

3 discussions

  • 1

    Bravo pour ce travail.
    Une petite mise à jour avec l’approche des régionales est-elle envisagée ?
    Ces élections auront lieu, s’il n’y a pas report pour des raisons sanitaires, en mars 2021. Il s’agit d’un scrutin proportionnel à deux tours avec prime majoritaire.

    • Le mode de scrutin n’ayant pas changé depuis la conception du plugin (à ma connaissance), aucune mise à jour n’est nécessaire. Le plugin permet deja de mettre une prime majoritaire.

    Reply to this message

  • cemblog

    Bonjour,
    serait-il possible de remettre le lien compatible sous SPIP 2.1, le lien est actuellement mort :(
    Par avance, MERCI

    Reply to this message

  • 1

    Super idée et superbe plugin... ceci permettra probablement de démontrer l’intérêt de choisir spip pour un site municipal !

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite / PostgreSQL
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparait.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom