Microsoft 365 Compter des quantités sur plusieurs critères

netparty

XLDnaute Occasionnel
Bonjour à tous
Je cherche le moyen de compter la quantités de matériel en regroupant les modèles identiques.
Auriez-vous une idée pour la formule à utiliser.

Merci d'avance
 

Pièces jointes

  • Total des types.xlsm
    9.6 KB · Affichages: 14

job75

XLDnaute Barbatruc
Bonjour à tous,

Une solution VBA avec le filtre automatique :
VB:
Sub Unique()
Dim d As Object, i&, x$
Set d = CreateObject("Scripting.Dictionary")
With [A1].CurrentRegion.Resize(, 9)
ReDim resu(1 To .Rows.Count, 1 To 1)
resu(1, 1) = "Quantité"
    For i = 2 To .Rows.Count
        x = .Cells(i, 1) & .Cells(i, 6) & .Cells(i, 8)
        If x <> "" And Not d.exists(x) Then d(x) = i
        resu(d(x), 1) = resu(d(x), 1) + 1
    Next
    .AutoFilter
    .Columns(9) = resu
    .AutoFilter 9, ">0"
End With
End Sub
A+
 

Pièces jointes

  • Total des types.xlsm
    17.9 KB · Affichages: 4

netparty

XLDnaute Occasionnel
Bonjour à tous,

Une solution VBA avec le filtre automatique :
VB:
Sub Unique()
Dim d As Object, i&, x$
Set d = CreateObject("Scripting.Dictionary")
With [A1].CurrentRegion.Resize(, 9)
ReDim resu(1 To .Rows.Count, 1 To 1)
resu(1, 1) = "Quantité"
    For i = 2 To .Rows.Count
        x = .Cells(i, 1) & .Cells(i, 6) & .Cells(i, 8)
        If x <> "" And Not d.exists(x) Then d(x) = i
        resu(d(x), 1) = resu(d(x), 1) + 1
    Next
    .AutoFilter
    .Columns(9) = resu
    .AutoFilter 9, ">0"
End With
End Sub
A+
Bonjour @job75

Merci c'est pas mal
Par contre si je veux adapter l'emplacement de mes colonnes ou ajouter un autre filtre que faut-il adapter dans le code.
Je joint le fichier adapté
Bonne journée
 

Pièces jointes

  • Total des types-Job75.xlsm
    16.2 KB · Affichages: 4

Cousinhub

XLDnaute Barbatruc
Bonjour,
Une solution à base de Power Query (plus un code VBA pour actualiser).
Dans l'onglet "Base", ta base de données sous forme de Tableau Structuré, et nommé "T_Data"
Dans l'onglet "Recap", à gauche, tous les titres de ta base de données en colonne A (à bien renseigner - un Copier/Coller, recopie "Transposée", pour avoir une concordance exacte des titres)
En colonne B, tu choisis les filtres (données) dont tu veux calculer les types de manière unique (une validation des données te permet de choisir le X)
Le bouton "Actualiser"
Et le Tableau "T_Final", qui te donne les nombres uniques selon tes choix...
Bon dimanche
 

Pièces jointes

  • PQ_Total des types.xlsm
    29.5 KB · Affichages: 2

netparty

XLDnaute Occasionnel
Bonjour,
Une solution à base de Power Query (plus un code VBA pour actualiser).
Dans l'onglet "Base", ta base de données sous forme de Tableau Structuré, et nommé "T_Data"
Dans l'onglet "Recap", à gauche, tous les titres de ta base de données en colonne A (à bien renseigner - un Copier/Coller, recopie "Transposée", pour avoir une concordance exacte des titres)
En colonne B, tu choisis les filtres (données) dont tu veux calculer les types de manière unique (une validation des données te permet de choisir le X)
Le bouton "Actualiser"
Et le Tableau "T_Final", qui te donne les nombres uniques selon tes choix...
Bon dimanche
Bonjour @Cousinhub

Un tout grand merci, cela à l'air si facile avec PowerQuery

Bon dimanche
 

job75

XLDnaute Barbatruc
Par contre si je veux adapter l'emplacement de mes colonnes ou ajouter un autre filtre que faut-il adapter dans le code.
Pour adapter il suffit en effet de modifier les positions des colonnes :
VB:
Sub Unique()
Dim d As Object, i&, x$
Set d = CreateObject("Scripting.Dictionary")
With [A1].CurrentRegion.Resize(, 30)
ReDim resu(1 To .Rows.Count, 1 To 1)
resu(1, 1) = "Quantité"
    For i = 2 To .Rows.Count
        x = .Cells(i, 6) & .Cells(i, 16) & .Cells(i, 18)
        If x <> "" And Not d.exists(x) Then d(x) = i
        resu(d(x), 1) = resu(d(x), 1) + 1
    Next
    .AutoFilter
    .Columns(30) = resu
    .AutoFilter 30, ">0"
End With
End Sub
 

Pièces jointes

  • Total des types-Job75.xlsm
    18.1 KB · Affichages: 4

netparty

XLDnaute Occasionnel
Pour adapter il suffit en effet de modifier les positions des colonnes :
VB:
Sub Unique()
Dim d As Object, i&, x$
Set d = CreateObject("Scripting.Dictionary")
With [A1].CurrentRegion.Resize(, 30)
ReDim resu(1 To .Rows.Count, 1 To 1)
resu(1, 1) = "Quantité"
    For i = 2 To .Rows.Count
        x = .Cells(i, 6) & .Cells(i, 16) & .Cells(i, 18)
        If x <> "" And Not d.exists(x) Then d(x) = i
        resu(d(x), 1) = resu(d(x), 1) + 1
    Next
    .AutoFilter
    .Columns(30) = resu
    .AutoFilter 30, ">0"
End With
End Sub
Bonjour @job75

Merci pour cette adaptation et est-il possible d'avoir le résultat dans une nouvelle feuille ?

Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 691
Messages
2 090 989
Membres
104 721
dernier inscrit
Hmidou