Cherche formule pour trouver nombre de valeurs non répetées

Le
Emile63
Bonjour et bonne année à tous! :-)

J'ai un certain nombre de chiffres dans une colonne et je souhaiterais conn=
aître, par le biais d'une formule, combien de chiffres son différents=

(car il y a beaucoup de répétitions).


Ex:

17.00
55.25
45.56
78.58
92.24
17.00
17.00
55.25
55.25
17.00
78.58
45.56

Nombres différents = 5

Merci d'avance pour votre aide,
Cordialement,
Emile
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26383174
Bonjour,

Plg est le nom de la plage nommée.
Cette formule te donne le nombre de chiffres différents
en supposant que tu n'as pas de cellules vides.

=SOMME(SI(FREQUENCE(EQUIV(Plg;Plg;0);EQUIV(Plg;Plg;0))>0;1))
DanielCo
Le #26383173
Bonjour,
Formule matricielle (valider avec Ctrl+Maj+Entrée) :
=SOMME(1/NB.SI(A1:A12;A1:A12))
Cordialement.
Daniel
Il se trouve que Emile63 a formulé :
Bonjour et bonne année à tous! :-)

J'ai un certain nombre de chiffres dans une colonne et je souhaiterais
connaître, par le biais d'une formule, combien de chiffres son différents
(car il y a beaucoup de répétitions).


Ex:

17.00
55.25
45.56
78.58
92.24
17.00
17.00
55.25
55.25
17.00
78.58
45.56

Nombres différents = 5

Merci d'avance pour votre aide,
Cordialement,
Emile
Emile63
Le #26383182
Merci beaucoup, c'est parfait.
Les deux proposition fonctionnent parfaitement.
Cordialement,
Emile
Emile63
Le #26391021
Bonjour Daniel et Michel, et aux autres également

Je reviens sur ce post, car je souhaiterais modifier ces formules en inté grant:
SOUS.TOTAL(109;.....
Sur les données affichées à l'écran, je fais des filtres, et c'est sur une base filtrés que je souhaiterais compter les valeurs qui ne se r épètent pas, (par formule).

En vous remerciant d'avance pour votre aide, je vous souhaite une bonne jou rnée.
Emile
MichD
Le #26391051
Bonjour,

Essaie une formule basée sur cet exemple, tu dois adapter
la plage de cellule H2:H70 représentant les données dans
ton application


=SOMME(SI(SOUS.TOTAL(3;DECALER(H2;LIGNE(H2:H70)-LIGNE(H2);;1));
--(PRODUITMAT((H2:H70=TRANSPOSE(H2:H70))*TRANSPOSE(SOUS.TOTAL(3;DECALER(H2;LIGNE(H2:H70)-LIGNE(H2);;1)))*(LIGNE(H2:H70)> TRANSPOSE(LIGNE(H2:H70)));LIGNE(H2:H70)^0)=1)))
Emile63
Le #26391058
Bonjour MichD,

Je te remercie pour ton aide.
J'ai utilisé ton exemple sur ma configuration, ce qui donnerait ceci:
=SOMME(SI(SOUS.TOTAL(3;DECALER($P$4;LIGNE($P$4:P1048576)-LIGNE($P$4);;1)) ;--(PRODUITMAT(($P$4:P1048576=TRANSPOSE($P$4:P1048576))*TRANSPOSE(SOUS.TO TAL(3;DECALER($P$4;LIGNE($P$4:P1048576)-LIGNE($P$4);;1)))*(LIGNE($P$4:P1048 576)>=TRANSPOSE(LIGNE($P$4:P1048576)));LIGNE($P$4:P1048576)^0)=1)))-1
{Matricielle}
Mais j'ai un problème avec la mémoire....
Excel manque de ressources lors de la tentative de calcul d'une ou plusieur es formules...

Dans ton exemple avec H70 ça fonctionne mais c'est un peu court pour ma b ase de données.
J'ai augmenté la plage à P1048576 pour me couvrir, mais Oupssss.... Plu s de mémoire!
MichD
Le #26391064
Je crois (de mémoire) que c'est à partir d'Excel 2007 qu'on peut
utiliser des colonnes entières comme paramètres dans une formule
matricielle. Ce n'est pas un secret qu'une formule matricielle gobe
beaucoup de ressources système.

Est-ce que tu es sûr que tu vas vraiment avoir besoin de plus de
1,000,000 de lignes pour ta base de données?

Tu peux utiliser des plages nommées en utilisant la fonction "Decaler()"
si tu n'as pas de cellules vides dans ta colonne. La plage nommée va
croitre au fur et à mesure que ta base s'étire.

Je ne peux pas faire grand-chose contre cela! Tu peux toujours essayer
d'utiliser Microsoft Office 64 bits et tu t'assures que tu as
suffisamment de mémoire vive...

L'autre alternative, c'est par programmation et non par formule!
Patrick
Le #26391146
Bonjour,

Utiliser un formule sur autant de lignes, c'est pénible pour la machine ...

Je pense que je passerais à un code vba qui fera ça plus vite et sans
soucis de mémoire non ?


Le 29-02-16 15:48, Emile63 a écrit :
Bonjour MichD,

Dans ton exemple avec H70 ça fonctionne mais c'est un peu court pour ma base de données.
J'ai augmenté la plage à P1048576 pour me couvrir, mais Oupssss.... Plus de mémoire!

Emile63
Le #26391223
Merci MichD et Patrick pour vos propositions.

En effet, je suis sur Excel 2007 - Office 64 est au budget pour l'été ; -)

MichD:
C'est vrai que je n'ai pas besoin de 1'000'000 de lignes, mon fichier pourr ait en contenir 5'000 max. mais j'ai testé la formule avec 700 (contenu a ctuel de ma BdD) et c'est pareil... Pas de mémoire.. :-(
Du coup, je ne suis pas certain que Décaler() puisse me venir en aide, do mmage!
Je te rejoins pour l'alternative en VBA que vous mentionnez avec Patrick.
Mais comment m'y prendre ?
Sachant que je travail sur un [Tableau1] et que je souhaite faire (ré)agi r le code que si je change le filtre de la colonne [Projets], je suppose qu 'il faudrait partir avec: Worksheet_SelectionChange(ByVal Target As Range)
Mais après, heu...
-Un coup de main, serait bienvenu. ;-)

Merci d'avance pour votre sollicitude,
Emile
Publicité
Poster une réponse
Anonyme