Somme d'une colonne en fonction d'une autre sans doublons

brucine Messages postés 21828 Date d'inscription   Statut Membre Dernière intervention   -  
brucine Messages postés 21828 Date d'inscription   Statut Membre Dernière intervention   -

Bonjour,

Ce doit être bête comme, chou, mais je ne trouve pas (Excel 2019).

à l'article 26 en B4, la résolution doit être rejetée sans deuxième vote de rattrapage par la formule en E30 notamment si le total pour ne dépasse pas le tiers des tantièmes de tous les copropriétaires (dans l'exemple il dépasse) et si le total des voix et non pas des votes pour P en E ne dépasse pas la moitié des voix totales.

Dans l'exemple qui nous intéresse, 9 en 26 et plus grand que 16/2 en B26 et conduit à une erreur: deux des copropriétaires ont chacun deux lots, il y a donc un total de 16 voix et non pas 18 correctement calculé.

Mais à l'identique je ne devrais sommer en E26 que les P correspondant à des voix individuelles, 7 et pas 9 conduisant alors au résultat exact (rejet).

Bref, je ne trouve pas comment sommer en E26 les valeurs de P de E7 à E24 ne correspondant qu'à un nom unique de B7 à B24.

Merci.

https://cijoint.org/r/kaQ44DEX#Ihp3K4c3FPIqs3v9Rd0OYuqaob5nQ+CjgOFfH2DNyuw=

 

A voir également:

2 réponses

Nain_Porte_Quoi Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   2
 

Hello,

j'ai une solution à la c*** qui ne fonctionne que si les 2 noms sont ensembles : fusionnez les cellules E8:E9 et E10:E11

(désolé, j'avais prévenu, ça n'est certainement pas la bonne solution)

Edit : après quelques minutes de réflexion voici une formule qui fonctionne avec 365 mais je ne sais pas pour 2019 (je ne crois pas en fait)

=NBVAL(UNIQUE(FILTRE(CHOISIRCOLS(B7:E24;1;4);E7:E24="P")))/2

Edit Bis : vu que je ne dors pas (encore) un peu de VBA
 

Function Compter_Sans_Doublons(Liste_Noms As Range, Liste_Votes As Range, Compte_Quoi As String) As Long
    
    Dim i As Long
    Dim Dico As Object
    Dim Nom As String
    
    Set Dico = CreateObject("Scripting.Dictionary")
    
    For i = 1 To Liste_Noms.Count
        Nom = Trim(Liste_Noms.Cells(i, 1).Value)
        
        If Liste_Votes.Cells(i, 1).Value = Compte_Quoi Then
            If Not Dico.Exists(Nom) Then
                Dico.Add Nom, 1
            End If
        End If
    Next i
    
    Compter_Sans_Doublons = Dico.Count

End Function

A coller dans un module

Pour l'utiliser, dans E6 vous copiez/collez ceci

=Compter_Sans_Doublons(B7:B24;E7:E24;"P")

Il faudra ensuite enregistrer le classeur en XLSM

0
brucine Messages postés 21828 Date d'inscription   Statut Membre Dernière intervention   3 466
 

Bonjour,

En effet tes formules ne sont pas disponibles dans Excel 2019.

Je garde ta solution sous le coude en attendant de voir si quelqu'un d'autre a une solution par formule (peut-être matricielle?), je suis allergique à VBA.

0
yclik Messages postés 3880 Date d'inscription   Statut Membre Dernière intervention   1 565
 

Bonjour

Si bien compris

une proposition avec en colonne F  de calcul de doublons

en F7 à recopier vers le bas

=NB.SI($B$7:$B$24;B7)

en pour la somme 

=SOMMEPROD((E7:E24="P")*(F7:F25=1))
0
brucine Messages postés 21828 Date d'inscription   Statut Membre Dernière intervention   3 466
 

Bonjour,

Il y a une coquille dans la deuxième formule, c'est F24.

Elle ne rend que les votes des personnes ayant un seul lot (5) alors que les deux en ayant 2 ne comptent chacune que pour une voix: 5+2.

Dans le cas d'espèce (chaque personne ne peut avoir que 1 ou 2 lots, c'est le cas), on obtient le bon compte par:

=SOMMEPROD((E7:E24="P")*(F7:F24=1))+SOMMEPROD((E7:E24="P")*(F7:F24>1))/2

Je suppose que s'il pouvait y en avoir jusqu'à 3 (par exemple) on devrait faire dans la deuxième condition F7:F24=2 et 3 dans une troisième.

Ne reste plus qu'à mettre le résultat en E26 et cacher la colonne F qui n'est pas décorative (ou à en insérer une nouvelle cachée sans quoi on va tronquer E30-F30 fusionnés).

Merci.

0