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

  • Initiateur de la discussion Initiateur de la discussion netparty
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

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
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
205
Réponses
16
Affichages
563
Retour