OVH Cloud OVH Cloud

Compter des dates sans doublon

17 réponses
Avatar
Marie70
Bonjour à tous !

J'ai des dates dans une colonne et je veux trouver le nombre de jours
(fonction NB, OK) le problème c'est que j'ai la même date plusieurs fois !
Comment faire pour compter une seule fois chaque date ?
Merci !!!!

7 réponses

1 2
Avatar
Daniel.M
Pfffff....


Voilà. L'onomatopée recherchée était au rendez-vous. Excellent, je vais pouvoir
aller manger en paix. Repos:-)

Salutations,

Daniel M.

Avatar
david.carl
merci de la réponse.

Je m'en doutais mais confirmer est mieux que supposer.
Ceci dit, j'en reste à ma procédure car elles est extrêmement rapide et peut
être bien utile.

Je retines cependant la fomrule pour des BdD moins grosses

A+

"AV" a écrit dans le message de news:
OE$#VVx$
Selon toi , quelle est la limite de formules de cet ordre ?


SOMMEPROD est un calcul matriciel donc dès que la plage est grande le
temps de

calcul est grand !
A part ça une base de données avec 58596 lignes renseignées ça court quand
même

pas les rues ;-)
Quant à limite exacte c'est peut-être une affaire ..de puissance de
machine


AV





Avatar
anonymousA
Merci de ta réponse dont je me doutais bien un peu toutefois.

A+

"AV" a écrit dans le message de news:
OE$#VVx$
Selon toi , quelle est la limite de formules de cet ordre ?


SOMMEPROD est un calcul matriciel donc dès que la plage est grande le
temps de

calcul est grand !
A part ça une base de données avec 58596 lignes renseignées ça court quand
même

pas les rues ;-)
Quant à limite exacte c'est peut-être une affaire ..de puissance de
machine


AV





Avatar
anonymousA
Je suis bien d'accord sur la lenteur des NB.SI. Ceci dit, la colonne est
déjà triée.
Enfin, non je ne connias pas la macro de Laurent Longre.les XLL sont un
sujet sur lequel je ne me suis encore pas étendu.

Merci de ton renseignement.

"Daniel.M" a écrit dans le message de
news: OFV4wVx$
Bonjour,

AMA, avec autant de données, ça va être lent, il n'y a pas de doutes. Car
c'est

la fonction NB.SI() qui prend tout ce temps.

1.Avez-vous la possibilité de trier, ne serait-ce que temporairement, vos
données sur la colonne à compter?
2.Avez-vous accès à la librairie morefun.XLL de Laurent Longre?

Avisez pour les 2 questions et on pourra adapter.

Salutations,

Daniel M.

"anomymousA" wrote in message
news:
bonjour,

j'ai tenté d'appliquer ta formule sur le même type de données. Pour peu
de


données (1600 environ), le résultat est correct et relativement rapide.
Pour une masse de données importante, 58596 très exactement , base qui
m'a


servi de test à la procédure sous VBA que j'avais communiquée à Marie,
j'ai


abandonné, car le résultat se faisait vraiment trop attendre.
Selon toi , quelle est la limite de formules de cet ordre ?

Merci.

A+


Merci mais ça ne fait pas ce que je veux !
Je me suis certainement mal expliquée,
J'ai une colonne avec des dates ex. :
01/01/05
02/01/05
03/01/05
02/01/05
Je voudrais trouver le résultat : 3


C'est très exactement ce que fait la formule proposée !
Si tu as en A1:A4 les valeurs que tu as cité, la formule :
=SOMMEPROD(1/NB.SI(A1:A4;A1:A4))
te renvoie le résultat attendu : 3

AV













Avatar
Daniel.M
Bonjour,

Je suis bien d'accord sur la lenteur des NB.SI. Ceci dit, la colonne est
déjà triée.


Si ta plage A2:A58657 est déjà triée, la formule suivante est très rapide:

=SOMMEPROD(--(A3:A58598<>A2:A58597))

Enfin, non je ne connias pas la macro de Laurent Longre.les XLL sont un
sujet sur lequel je ne me suis encore pas étendu.


Dans les cas où ta Plage n'est pas triée,
=NB(VALEURS.UNIQUES(Plage)) peut être assez rapide.

Salutations,

Daniel M.

Avatar
Starwing
Si tu as en A1:A4 les valeurs que tu as cité, la formule :
=SOMMEPROD(1/NB.SI(A1:A4;A1:A4))


Bonjour AV,

AMHA, il serait plus prudent d'utiliser une formule tel:
=SOMMEPROD((A1:A4<>"")/NB.SI(A1:A4;A1:A4&""))
Pour éviter d'avoir #DIV/0! comme résultat si une cellule de la plage ne
contient rien.

--
Au plaisir de vous revoir ...
Visitez >> http://www.excelabo.net
Le merveilleux site de Misange
Starwing

--

Avatar
AV
Pour éviter d'avoir #DIV/0! comme résultat si une cellule de la plage ne
contient rien.


Me semble que c'était pas vraiment le souci premier mais bon...
PS : si on veut vraiment mettre des garde-fous faut aussi prévoir les cellules
cotenant des valeurs d'erreurs
Matricelle :
=SOMME(SI(ESTVIDE(plage);"";1/NB.SI(plage;plage)-ESTERREUR(plage)))
;-)
AV

1 2