Comptage par groupe de valeur

Fermé
dna.factory Messages postés 24957 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 26 avril 2024 - 8 juil. 2013 à 15:41
dna.factory Messages postés 24957 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 26 avril 2024 - 2 sept. 2013 à 09:33
Bonjour,

J'ai un tableau comprenant un certain nombre de valeurs, et je voudrais faire l'équivalent d'un count(*) group by valeur (pour ceux qui connaissent le sql)

en gros :
origine :

1
1
1
2
2
3
4
4
5
7
(les champs sont triés par défaut)
et je voudrais avoir

1 ---- 3
2 ---- 2
3 ---- 1
4 ---- 2
5 ---- 1
7 ---- 1

J'ai trouvé cette proposition :
https://openclassrooms.com/forum/sujet/excel-equivalent-du-group-by-sql-79491
Mais elle ne me plait pas vraiment, je voulais savoir si il y avait mieux (je pense du coté des croisés dynamiques..)

6 réponses

Bonjour,

Au final tu répond toi même à la question.
Via un Tableaux Croisé Dynamique tu obtiendras le résultat.
Donne un Titre à ta colonne (ex: "Numéro" et fait Insert / PivotTables ou Tableaux Croisé Dynamique

Insert "Numéro" En Ligne puis dans Valeur.
Dans la catégorie Valeur sélectione "Compte" à la place de "Somme" et le tour est joué.
2
dna.factory Messages postés 24957 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 26 avril 2024 1 609
Modifié par dna.factory le 8/07/2013 à 16:19
merci, une collègue est finalement venu me montrer comment faire.
(c'était exactement ça)
En fait, je savais quoi utiliser, mais je ne savais pas comment l'utiliser.
Si j'ai le temps, je répondrais plus en détail à la question pour que ceux qui n'ont jamais utilisé un croisé dynamique puissent le faire.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
1 sept. 2013 à 20:39
Bonsoir
J'ai une solution à ton problème, mais je n'osai te la proposer, vu que ma proposition précédente ne te convenait pas, de plus, elle à hérité d'un -1. J'ai donc attendu que quelqu'un te fasse une proposition, mais, visiblement, ça ne se bouscule pas au portillon.
Peut-être qu'entre-temps, tu as trouvé une solution. Sinon, voici la mienne.
Tout ce fait par VBA, en reprenant le principe que je préconisais dans mon précédent Post.
Il est composé de 2 feuilles, la première "FeuilleActive", est celle où se trouve les données à comptabiliser. L'autre affiche le résultat recherché.
Tu n'as qu'a l'adapter à tes données et à cliquer sur le bouton.
En espérant que cela te convienne.
https://www.cjoint.com/?CIbuwlyS53z
cordialement
1
dna.factory Messages postés 24957 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 26 avril 2024 1 609
2 sept. 2013 à 09:33
Bah en fait, j'avait dit dans le mail que ta solution n'était pas ce que je voulait à l'époque.
Ici le résultat semble fonctionner, même si passer par un macro me sembl(ait) overkill.
Va falloir que j'analyse le fonctionnement pour l'adapter à mon besoin.

Merci, et ce coup ci, t'a +1, ce qui équilibre, nan ?
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
8 juil. 2013 à 16:10
Bonjour
autre solution

les données étant en colonne A
en colonne B faire un filtre avancé sans doublon
en colonne C, appliquer la formule =NB.SI(A2:A15;B2), à tirer vers le bas

cdlt
0
dna.factory Messages postés 24957 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 26 avril 2024 1 609
8 juil. 2013 à 16:17
C'est la méthode du lien indiqué, mais je suis pas fan (le fait de devoir rajouter une colonne, même camouflée, détruirait la mise en page catastrophique de mon fichier).
Alors oui, c'est pour des mauvaises raisons.
Merci quand même
0
dna.factory Messages postés 24957 Date d'inscription mercredi 18 avril 2007 Statut Modérateur Dernière intervention 26 avril 2024 1 609
29 août 2013 à 15:15
Question subsidaire :
Je veux incorporer dans mon résultat les valeurs non représentées.

j'ai une série d'information de la forme suivante

1
1
3
3
3
4
7
7
7
(ne pouvant compter que des chiffres de manière croissante)

et je veux un résultat du style
1 - 2
2 - 0
3 - 3
4 - 1
5 - 0
6 - 0
7 - 3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 1/09/2013 à 21:22
Bonsoir,

Tu peux utiliser le numéro de ligne exemple tu veux commencer tes sommes à la ligne 3, la syntaxe =ligne() te donne le numéro de ligne soit 3 en complétant avec -2 soit =ligne()-2 te donne le résultat 1 qui correspond à ta première valeur 1 à sommer, si tu commences tes sommes à la ligne 2 la syntaxe sera =ligne()-1 etc ...

la formule placée sur la ligne 3 pour sommer tes valeurs de la plage A2 à A100 sera

=NB.SI($A$2:$A$100;LIGNE()-2)

ou tu fais référence à une cellule contenant la valeur à sommer exemple en B2 tu as 1 en B3 tu as 2 etc
cette formule fera le reste

=NB.SI($A$2:A100;B2)

et tu incrémentes vers le bas en fonction de tes besoins
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
8 juil. 2013 à 16:36
re

"le fait de devoir rajouter une colonne, même camouflée, détruirait la mise en page catastrophique de mon fichier"

dans ma proposition, j'ai pris comme exemple la colonne B pour le filtre avancé, mais rien n'empêche de le mettre sur une autre feuille (sauf que dans ce cas, il faudra nommer la plage à filtrer) , ainsi tu ne touches pas à la structure de ta feuille

et ça marche très bien.

A+
-1