Microsoft 365 somme.si en excluant les doublons

sebsti34

XLDnaute Nouveau
Bonjour,

après des heures à chercher et à faire des tests j'en appel aux pros

J'ai un fichier (celui que j'ai mis en exemple contient des données bidons car l'autre est une usine à gaz avec 700 lignes qui évoluent plusieurs fois par jour)

Je souhaiterais donc faire une somme de la colonne B, seulement si il y a une date en colonne D sans prendre en compte le doublon en colonne A. Dans mon tableau le bon résultat est donc 1400 et avec mes formules que j'ai testé je tombe toujours sur 1600 car je n'arrive pas à éliminer le doublon en A. Le chiffre en B sera toujours le même par rapport à la donnée en A donc peut importe quelle ligne est choisi pour la somme.
Je sais supprimer les doublons avec l'onglet données, mais je ne veux pas les supprimer, simplement ne pas les prendre en compte dans mon somme.si.
J'ai aussi essayé une formule avec SI(NB.SI afin d'afficher des 0 ou des 1 dans une colonne ajoutée à la fin mais le 1 s'ajoute bien sur le derniere doublon de la liste et c est pas forcément celui qui a une date en colonne D

quelqu'un pourrait me donner une piste?

Merci d'avance, bonne journée à tous.
 

Pièces jointes

  • exemple.xlsx
    9 KB · Affichages: 17
Solution
allez, pour aller encore un peu plus loin ... si je veux ajouter un critère de date pour que ça comptabilise uniquement entre telle date et telle date ou après telle date.
Voyez ce fichier (2) et la fonction VBA complétée avec 2 arguments supplémentaires facultatifs :
VB:
Function MaSomme#(plage As Range, colNom%, colDate%, colSomme%, Optional dat1 As Date, Optional dat2 As Date)
Dim d As Object, tablo, i&, dat, test As Boolean
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
tablo = plage 'matrice, plus rapide
For i = 1 To UBound(tablo)
    dat = tablo(i, colDate)
    test = IIf(dat1 And dat2, dat >= dat1 And dat <= dat2, True)
    If IsDate(tablo(i, colDate)) Then If test Then...

Hasco

XLDnaute Barbatruc
Bonjour,

Une proposition avec en E1 la formule : =NB.SI($A$1:$A1;$A1) (Attention: la position des $ est importante). formule à tirer vers le bas.

Pour le résultat : =SOMME.SI.ENS($B$1:$B$6;$E$1:$E$6;"<2";$D$1:$D$6;"<>") Le '<2' peut être remplacé par '=1'.

Cordialement
 

Pièces jointes

  • Exemple.xlsx
    9.2 KB · Affichages: 6

sebsti34

XLDnaute Nouveau
Bonjour,

Merci pour ce retour rapide mais ça ne fonctionne pas avec cet exemple modifié.
Le 2 s'affiche en face d'une case alors qu'il y a une date et donc n'est pas pris en compte dans le somme.si. Parfois il y aura une date pr V1, V2 en colonne C, parfois une date uniquement pour V2, ou V3 etc...
 

Pièces jointes

  • Exemple.xlsx
    9.4 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Une variante en PJ pour le fun.
En E on met 1 si on doit tenir compte de la valeur ou non, sinon 0.

Mais deux questions :
1- Qu'appelez vous un doublon ? Puisque le fichier de Roblochon répond strictement à la demande.
2- En cas de doublon, elimine t-on le 1er ou le second ? ( résultat différents si valeurs des deux est différente )
 

Pièces jointes

  • Exemple (13).xlsx
    13.9 KB · Affichages: 6

sebsti34

XLDnaute Nouveau
Je viens d'appliquer la formule "élimination du 1er doublon" à mon tableau réel et ça fonctionne mais pas tout le temps...je comprends pas pkoi.
Parfois il n'y a pas de doublon et j'ai un 0 qui s'affiche, parfois 1, et quand il y a des doublons parfois il est bien repéré et parfois non
 

sebsti34

XLDnaute Nouveau
voici mon réél.
En dernière colonne c'est la formule. Je souhaiterait avoir 1 qui s'affiche lorsqu'en colonne 34 j'ai une date sans prendre en compte le doublon en colonne 2. la ligne avec la date correspond parfois au 1er doublons, parfois 2 eme, parfois 3 eme...
Merci de votre aide.
 

Pièces jointes

  • réel.xlsx
    433 KB · Affichages: 5

Hasco

XLDnaute Barbatruc
Re,

En AM5 vous aviez : =SI(ET(NB.SI($B5:$B5;$B6)=1;$AH5<>"");1;0) or il vous faut : =SI(ET(NB.SI($B5:$B5;$B5)=1;$AH5<>"");1;0)

Pour éviter le SI(..;..;..) vous pouvez mettre : =--ET(NB.SI($B5:$B5;$B5)=1;$AH5<>"") qui forcera la conversion des VRAI et FAUX en 1 et 0

Corrigez et dites-nous si cela corrige le problème.

Cordialement
 

Discussions similaires

Haut Bas