Macro pour récupérer le SOUSTOTAL(104,x) d'une colonne de tableau

Salut tout le monde !

J'espère que tout va bien pour vous !

Je travaille en ce moment sur un projet , et j'ai besoin de vous , peut-être que certain d'entre vous pourront m'aider ?

J'ai un tableau dans une feuille 1 , je souhaite créer une Macro qui ira filtrer 1 à 1 les éléments d'une colonne du tableau et pour chaque filtre effectué , faire le SOUSTOTAL(104)(Donc le maximum) d'une colonne M du tableau , et le noter dans une Feuille 2 en collant à chaque fois en collage spécial valeur , pour ne pas perdre la valeur du maximal filtré à chaque itération !

Je sais pas si je suis clair !

Mais si vous pouvez m'aider je suis preneur !!

Merci beaucoup et passez une excellente journée !

Très sincèrement

Shadow ^^

Bonjour ShadowSneaks,

Un exemple de macro que vous pourrez tester :

Sub FiltrerEtMax()

    Dim sht1 As Worksheet
    Dim sht2 As Worksheet
    Dim tbl As ListObject
    Dim rng As Range
    Dim cell As Range
    Dim lastRow As Long
    Dim i As Long

    Set sht1 = ThisWorkbook.Worksheets("Feuille1") ' Modifiez "Feuille1" par le nom de votre feuille
    Set sht2 = ThisWorkbook.Worksheets("Feuille2") ' Modifiez "Feuille2" par le nom de votre feuille
    Set tbl = sht1.ListObjects("Tableau1") ' Modifiez "Tableau1" par le nom de votre tableau
    Set rng = tbl.ListColumns("Colonne1").DataBodyRange ' Modifiez "Colonne1" par le nom de la colonne à filtrer

    ' Désactive les mises à jour d'écran pour une exécution plus rapide
    Application.ScreenUpdating = False

    i = 1 ' Initialiser le compteur pour la feuille 2
    For Each cell In rng
        ' Filtre le tableau
        tbl.Range.AutoFilter Field:=1, Criteria1:=cell.Value
        ' Calcule le maximum de la colonne M
        maxVal = Application.WorksheetFunction.Subtotal(104, tbl.ListColumns("M").DataBodyRange)
        ' Ecrire le maximum dans la Feuille 2
        sht2.Cells(i, 1).Value = maxVal
        i = i + 1
    Next cell

    ' Réactive les mises à jour d'écran
    Application.ScreenUpdating = True

End Sub

Notez que ce code écrira les valeurs maximum dans la première colonne de la Feuille 2, en commençant à la première ligne. Si vous voulez qu'il écrive ailleurs, vous pouvez modifier la ligne sht2.Cells(i, 1).Value = maxVal.

Afin que vous puissiez comprendre mon problème , vous pourrez trouver ci joint un exemple qui ressemble à mon fichier dans sa mise en forme , si vous pouviez essayez d'appliquer la formule ici , je n'y arrive pas ^^

La colonne à filtrer 1 à 1 est la colonne "Key" de la feuille "Diamant Brut" , et le SousTotal est à récupérer dans la colonne Prix à chaque fois

La valeur obtenue doit être collée spécialement en valeur pour éviter d'être effacée dans la Feuille 2 : "KPI" dans la cellule correspondante à la Key filtrée

Merci beaucoup !

10exemple.xlsx (11.57 Ko)

Bonjour ShadowSneaks, Abder,

Sinon en utilisant un TS (Tableau Structuré) et une fonction plus basique MAX()

=SOMMEPROD(MAX((Tableau1[Key]=B4)*(Tableau1[Prix])))

Aucunement besoin de filtre

A+

Rechercher des sujets similaires à "macro recuperer soustotal 104 colonne tableau"