Dénombre un nombre de voix
Bonjour,
Je gère l'organisation d'un vote qui a un mode de scrutin un peu particulier : ce sont des sections (des regroupements de personnes) qui votent, chacune ayant un nombre de voix différents selon sa taille. On comptabilise le nombre de voix obtenu par chaque candidat pour savoir qui est élu ou non. Sachant que, pour voter, les sections peuvent mandater une personne qui est présente physiquement pour le vote ou se faire représenter par une autre section qui sera présente (une section pouvant voter pour 1 ou 2 autres sections soit 3 votes au total).
Pour cela, j'ai un google form avec les résultats obtenus dans l'onglet Reponses : pour des raisons pratiques, il y a 3 possibilités de vote : les 4 premières colonnes (D à G) correspondent aux sections qui ne votent que pour elles, les 8 suivantes (H à O) correspondent à une section qui vote pour elle-même et pour une autre section et enfin les 12 dernières (P à AA) correspondent à une section qui vote pour elle-même et deux autres sections. Dans mon exemple, les sections 1, 2 et 7 sont présentes, les sections 4&5 sont représentées par 1 et 7 par 10.
mon fichier : https://docs.google.com/spreadsheets/d/1t7-NnaiyrjCDKf-Bj43EXrEzmbOk5dVhrHvLE5KQfTk/edit?usp=sharing
Dans l'onglet lien_votant, j'établis la correspondance entre la section, le nombre de voix associé, la présence ou non de la section (colonne C : soit le numéro correspond à une présence physique ou une représentation), et le numéro de la section à prendre en compte pour le vote (pour pouvoir ensuite attribuer à chaque vote le nombre de voix associé). Cette correspondance est préparée en amont du vote puisque les sections doivent prévenir à l'avance de leur présence ou de leur représentation.
Pour pouvoir savoir, à l'issue de chaque vote, le nombre de voix correspondant, j'ai créé 2 onglets (vote_present et vote_represente) qui me permettent de savoir pour quel candidat chaque votant a voté : pour cela, j'ai mis en pratique l'excellente solution de Filoche, que je remercie une nouvelle fois, à une autre question (https://forum.excel-pratique.com/sheets/meilleure-solution-pour-rechercher-valeur-dans-plusieurs-col...).
Mon problème vient après : je ne sais pas comment je peux dénombrer le nombre de voix (dans l'onglet nb_voix) par candidat (nombre de votes pondéré par le nombre de voix de chaque section qui vote) ; j'arrive par contre à dénombrer le nombre de sections qui votent par le candidat mais pas le nombre total de voix.
Si quelqu'un avait une idée ?
Merci
PS : si vous avez des suggestions pour faciliter le décompte, sans mettre autant d'étapes intermédiaires, je suis preneur aussi ;)
Bonjour,
Une petite solution rapide en passant par des tableaux intermédiaires, enfin tu verras :
=query(sort({vote_present!$G$17:$M$27;vote_represente!$I$14:$O$23});"select * where Col2 is not null or Col3 is not null or Col4 is not null or Col5 is not null or Col6 is not null or Col7 is not null")https://docs.google.com/spreadsheets/d/1AGQqmjCpSc9E2glmyimP_P_W14rlmVKEkpE9oN5IsMo/edit?usp=sharing
On peut utiliser également SUMPRODUCT, mais alors on a plus le détail par sections...
Cordialement,
Fil.
Bonsoir Filoche
Merci pour ta solution, qui présente une petite "faiblesse" : si je ne sélectionne qu'un seul candidat (parce que les autres candidatures ne me conviennent pas par exemple) alors le "calcul" n'est pas fait dans le tableau des colonnes H à M de vote_present (ou vote_represente).
Dans le fichier exemple, si la section 1 ne vote que pour un seul candidat alors aucun candidat dans le tableau récapitulatif n'apparait.
Bonjour,
Je n'avais pas envisagé ce cas, donc copie adaptée :
https://docs.google.com/spreadsheets/d/1hTvA5barSpsO5Ai9amKw28wKGN51rJcUJgwDFkYu5mQ/edit?usp=sharing
Après "simplification", on supprime un tableau intermédiaire :
=arrayformula(if(isblank(bycol($H$1:$M$1;lambda(m;BYROW($G$2:$G$11;lambda(n;IFERROR(query(transpose(query(arrayformula(if(ISBLANK(query($A$2:$E$11;"select * where A is not null"));"-";$A$2:$E$11));"select * where Col1 = "&n&" "));"select * where Col1 = '"&m&"' ")))))));"";byrow(F2:F11;lambda(p;p))))Bonsoir
Franchement : bravo !
Ca fonctionne super bien : je vais tacher de prendre le temps pour analyser et comprendre ta solution