Count par catégorie

Bonjour,

Dans un onglet j'ai les données suivantes:

Type Catégorie, champs1, champs2,....champs500

Type Catégory contient les types suivants: Cat1, Cat2,....Cat7

les champs contiennet les données suivantes: chaine de cacatères ou champs numériques, il peuvent être aussi vide ou 0.

Le but est d'avoir le count de chaque champ dans une catégorie, par le pivot table est possible mais sauf que j'ai plus que 500 champs, et par défaut le donne parfois des sommes, je dois retoucher chaque formule et ça prend un temps considérable.

est il possible d'automatiser ça?

Ci-joint dans un fichier excel dans le même onglet les données initiales et le résultats, le but est de mettre le résulat dans un autre onglet si c'est possible.

Pouvez-vous me conseiller?

Merci par avance,

Cdt

Alex

11classeur-3.xlsx (8.65 Ko)

Bonjour,

En M2 puis en tirant à droite et en bas. Vous verrez que dans votre résultat il y a des incohérences en P5 où il y a bien un champ correspondant en E5 or vous avez inscrit 0 et en Q7 où vous inscrivez 1 alors qu'il n'y a pas de champs plein sur cette combinaison :

=SOMMEPROD(($A$1:$A$6=T$1)*($A$1:$H$1=$S2)*($A$1:$H$6>0)) 'Pour les cellules >0
=SOMMEPROD(($A$1:$A$6=T$1)*($A$1:$H$1=$S2)*($A$1:$H$6<>"")) 'Pour les cellules non vides

Possible de mettre une table structurée pour faciliter la formule de façon dynamique :

=SOMMEPROD((BDD[[Category]:[Category]]=M$1)*(BDD[#En-têtes]=$L2)*(BDD[#Données]>0)*1)

Cf fichier joint

Cdlt,

Merci beaucoup, ça marche pour un petit tableau mais pour mon tableau qui a 100000 lignes et presque 800 colonnes, j'ai un problème de mémoire pour le calcule.

Peut-être VB peut m'aider s'il y a quelqu'un qui a une solution?

Il y a quelqu'un qui peut proposer une solution ?

Bonjour,

Une approche POWER QUERY comme vous semblez pouvoir travailler sous 365 (profil non à jour ?).

Cdlt,

c 'est parfait, j'ai excel 360 dans mon pc pro, mais je n'ai pas le droit d'importer des fichiers et m'envoyer des fichiers, dans mon pc perso, j'utilise ultra office ou Excel par web directement qui est une version gratuite mais limitée en fonctionnalité, je ne voie que le résultat mais j'ai du mal à voir ce que vous avez fait pour avoir ce résultat. Hélas.

je vais voir s'il y a un autre moyen pour voir ce que vous avez fait

Hi, au sujet de https://forum.excel-pratique.com/excel/count-par-categorie-157809 et avec POWER QUERY.

les champs que j'ai ne sont pas tous numériques, ils peuvent être texte, Null, N/A..

j'ai compris ta méthode, si j'applique pas le modification de type en numérique, j'ai lors du group by, j'ai une erreur DataFormat.Error: Invalid cell value '#NAME?'.

Avez-vous une idée comment résoudre ça ?

Bonjour,

Il faut passer par la suppression de l'étape de conversion de type automatique (2ème étape si je ne dis pas de bêtises) afin de ne pas avoir d'erreurs de typage de données :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(Source, {"Category"}, "Attribut", "Valeur"),
    #"Lignes groupées" = Table.Group(#"Supprimer le tableau croisé dynamique des autres colonnes", {"Category", "Attribut"}, {{"Nombre", each Table.RowCount(_), Int64.Type}}),
    #"Colonne dynamique" = Table.Pivot(#"Lignes groupées", List.Distinct(#"Lignes groupées"[Category]), "Category", "Nombre", List.Sum)
in
    #"Colonne dynamique"

Cdlt,

merci, j'ai une erreur quelque part dans mon fichier original qui bloque, j'ai la même erreur DataFormat.Error: Invalid cell value '#NAME?'.

quand je clique sur le flèche en bas pour afficher tous les Value afin de sélectionner j'ai en bas le message DataFormat.Error: Invalid cell value '#NAME?'.

Malheursement, je ne peux pas partager mon fichier, il est dans un pc pro et c'est pas possible de le sortir de de faire entrer d'autre fichier.

Bonjour,

A quelle étape vous bloquez dans l'éditeur POWER QUERY ? Avez vous une table structurée dénommée Tableau1 ?

Sans fichier je ne pourrais faire plus désolé. Bon courage.

Cdlt,

j'ai remplacé la Valeur #NAME par vide et ça marche sur un exemple mais pour tous j'ai un problème OUTOFMEMORY, j'ai trop de données.

Merci beaucoup pour l'aide, j'ai appris bcp de chose.

re-bonjour,

j'ai beaucoup de données, du coup je vais procédé par catégorie.

seul problème, le count ne doit pas compter les valeur 0, null et vide alors que ton la solution proposé, le count compte aussi les 0.

pouvez-vous m'aider?

Bonjour,

Dans ce cas on ajoute une étape de filtre pour retirer les zéros en amont de l'agrégation :

let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(Source, {"Category"}, "Attribut", "Valeur"),
    #"Lignes filtrées" = Table.SelectRows(#"Supprimer le tableau croisé dynamique des autres colonnes", each ([Valeur] <> 0)),
    #"Lignes groupées" = Table.Group(#"Lignes filtrées", {"Category", "Attribut"}, {{"Nombre", each Table.RowCount(_), Int64.Type}}),
    #"Colonne dynamique" = Table.Pivot(#"Lignes groupées", List.Distinct(#"Lignes groupées"[Category]), "Category", "Nombre", List.Sum)
in
    #"Colonne dynamique"

Cdlt,

merci beaucoup

Rechercher des sujets similaires à "count categorie"