Bonjour,
Je suis maire d'un petit village et très prochainement le conseil municipal devra se prononcer sur une nouvelle représentativité des communes au sein des communautés de communes. Je me permets de vous interroger car il me semble que les techniques de calcul qui nous sont présentées sont fumeuses. Voici la situation par un exemple.
Population totale de la Communautés de communes: 7714
"Communes
numéro" Population municipale
1 302
2 211
3 215
4 208
5 578
6 421
7 240
8 81
9 178
10 108
11 171
12 53
13 4090
14 161
15 697
Nous avons 22 sièges à distribuer. La première répartition se fait en divisant la population de chaque commune par le rapport de la population totale par le nombres de sièges et en arrondissant à l'entier inférieur.
On distribue le reste des sièges à la plus forte moyenne.
Quelles seront les communes qui auront des sièges et combien?
Comment calculer sur une feuille libreoffice?
D'avance merci
Bonjour,
Les communes 5-6-15 auront 1 siège chacun
La communes 13 aura les 19 sièges restant (alors qu'elle n'en mérite que 11 au départ)
population | sièges | sièges supplémentaires | total sièges | |
7714 | 22 | |||
1 | 302 | 0 | 0 | |
2 | 211 | 0 | 0 | |
3 | 215 | 0 | 0 | |
4 | 208 | 0 | 0 | |
5 | 578 | 1 | 1 | |
6 | 421 | 1 | 1 | |
7 | 240 | 0 | 0 | |
8 | 81 | 0 | 0 | |
9 | 178 | 0 | 0 | |
10 | 108 | 0 | 0 | |
11 | 171 | 0 | 0 | |
12 | 53 | 0 | 0 | |
13 | 4090 | 11 | 8 | 19 |
14 | 161 | 0 | 0 | |
15 | 697 | 1 | 1 | |
total | 14 | 8 | 22 |
Pour faire ce tableau sous excel, je pense que c'est la même chose pour libreoffice :
Il faut taper les données dans les 2 premières lignes et les deux première colonnes
En recopiant le mot "population" dans la case B1
dans la case B2 on peut écrire =SOMME(B3:B17)
dans la case C3 la formule est =ENT(B3/B2*C2)
dans la case C4 la formule est =ENT(B4/B2*C2)
dans la case C5 la formule est =ENT(B5/B2*C2)
dans la case C6 la formule est =ENT(B6/B2*C2)
dans la case C7 la formule est =ENT(B7/B2*C2)
dans la case C8 la formule est =ENT(B8/B2*C2)
dans la case C9 la formule est =ENT(B9/B2*C2)
dans la case C10 la formule est =ENT(B10/B2*C2)
dans la case C11 la formule est =ENT(B11/B2*C2)
dans la case C12 la formule est =ENT(B12/B2*C2)
dans la case C13 la formule est =ENT(B13/B2*C2)
dans la case C14 la formule est =ENT(B14/B2*C2)
dans la case C15 la formule est =ENT(B15/B2*C2)
dans la case C16 la formule est =ENT(B16/B2*C2)
dans la case C17 la formule est =ENT(B17/B2*C2)
dans la case C18 la formule est =SOMME(C3:C17)
dans la case D15 la formule est =C2-C18
dans la case E3 la formule est =C3-D3
dans la case E4 la formule est =C4-D4
...
Selon moi, il serait plus juste que 8 derniers sièges soient distribué au 8 plus grosses communes n'ayant pas de voix:
Il y aurait alors 11 voix pour la ville 13 et seules les villages 8-10-12 n'auraient pas de voix
Merci pour la réponse mais je me suis mal expliqué: après la première distribution, les sièges sont distribués à la plus forte moyenne qui est recalculée après chaque attribution d'un siège.
J'espère avoir été plus clair.
Par exemple si on s'arrête aux 14 premiers postes, à qui faut-il donner le 15e puis le 16e poste?
Je ne vois pas ce que vous appelez la moyenne la plus élevée.
Est-ce le rapport population/sièges car toutes les villes n'ayant pas reçu de siège sont à l'infini.
Il faudrait alors regarder les villes les plus grandes n'ayant pas reçu de siège:
Cela reviendrait à ce que je préconisais:
Selon moi, il serait plus juste que 8 derniers sièges soient distribué au 8 plus grosses communes n'ayant pas de voix:
Il y aurait alors 11 voix pour la ville 13 et seules les villages 8-10-12 n'auraient pas de voix
Vous avez mis le doigt sur la difficulté pour faire la répartition sur un tableur.
A la main, je divise chaque population des communes ayant au moins 1 siège par le nombre de sièges obtenus. Ainsi j'obtiens 518 pour la C5, 421 pour la C6, 371,8 pour C13 et 697 pour C15. Je regarde parmi ces résultats et les populations de communes n'ayant pas de délégués quel est le nombre le plus élevé. Dans notre cas, c'est C15. Je lui rajoute donc un siège. Je refais les calculs: C5,C6,C13 ne bougent pas, mais j'ai 348,5 pour C15. La plus forte moyenne est alors C5 avec 578, je lui attribue un siège et je refais les calculs. Le 17ème siège est attribué à C6, le 18ème à C13, le 19ème à C15, le 20ème à C13, le 21ème à C13 et le 22ème à C1.
C'est cela que je n'arrive pas à le faire automatiquement sur le tableur.
J'espère avoir éclairci le problème.
Bonjour,
Je pense avoir bien compris comment faire le calcul à la main et je crois bien que ce calcul n'est possible sur tableur qu'à l'aide d'une macro en VBA (sur Excel). Sur Open Office Calc, c'est sans doute possible aussi mais le langage (star basic il y a quelques années) n'est pas aussi complet que Visual Basic pour Applications.
Si j'ai le temps, je regarde ça demain matin
Voici une solution. Le calcul n'est certainement pas optimisé mais il est facile à comprendre puisqu'il correspond pas à pas à ce qu'on pourrait faire à la main.
La macro écrite suppose que les colonnes A et B sont remplies respectivement par les n° des communes et par leurs populations.
La ligne 1 est utilisée pour mettre les titres des colonnes
Une remarque : avec ce mode de calcul, la commune la plus peuplée reçoit plus de la moitié des sièges (14/22). Elle a donc la majorité absolue des voix. Certaines communes n'ont pas de siège.
Voici le code avec quelques commentaires :
Sub Répartition()
nbSièges = 22
nbCommunes = 15
PopulationTotale = 0
For k = 1 To nbCommunes
PopulationTotale = PopulationTotale + Cells(k + 1, 2)
Next
Cells(1, 1) = "Numéro"
Cells(1, 2) = "Population"
Cells(2 + nbCommunes, 1) = "Total"
Cells(2 + nbCommunes, 2) = PopulationTotale
'
'Calcul de la répartition proportionnelle intégrale et de la première attribution de sièges
'
Cells(1, 3) = "Répartition proportionnelle"
Cells(1, 4) = "1ère attribution"
Total = 0
For k = 1 To nbCommunes
Cells(k + 1, 3) = Cells(k + 1, 2) * nbSièges / PopulationTotale
Cells(k + 1, 4) = Int(Cells(k + 1, 3))
Total = Total + Cells(k + 1, 4)
Next
SiègesAttribués = Total
Cells(2 + nbCommunes, 4) = Total
'
'Calcul des moyennes et attribution des autres sièges
'
n = 1 'n représente le rang de la prochaine attribution de sièges
Do While SiègesAttribués < nbSièges
Cells(1, 3 + 2 * n) = "Moyenne"
Cells(1, 4 + 2 * n) = "Répartition " & n
MoyenneMax = 0 'initialisation de la meilleure moyenne
For k = 1 To nbCommunes
If Cells(k + 1, 2 + 2 * n) > 0 Then 'si la commune k a au moins 1 siège
Cells(k + 1, 3 + 2 * n) = Cells(k + 1, 2) / Cells(k + 1, 2 + 2 * n) 'alors moyenne = population/sièges
Else
Cells(k + 1, 3 + 2 * n) = Cells(k + 1, 2) 'sinon moyenne = population
End If
If Cells(k + 1, 3 + 2 * n) > MoyenneMax Then 'actualisation de la meilleure moyenne
MoyenneMax = Cells(k + 1, 3 + 2 * n)
End If
Next
For k = 1 To nbCommunes 'attribution d'un siège à la commune ayant la meilleure moyenne
If Cells(k + 1, 3 + 2 * n) = MoyenneMax Then
Cells(k + 1, 4 + 2 * n) = Cells(k + 1, 2 + 2 * n) + 1
SiègesAttribués = SiègesAttribués + 1
Else
Cells(k + 1, 4 + 2 * n) = Cells(k + 1, 2 + 2 * n)
End If
Next
Cells(2 + nbCommunes, 4 + 2 * n) = SiègesAttribués
n = n + 1
Loop
End Sub
La copie d'écran ci-dessous montre les premiers calculs. En réalité, il faut 8 attributions complémentaires pour distribuer les 22 sièges...
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :