Tableau croisé dynamique avec Moyenne, Min et Max

Bonjour tout le monde,

J'éprouve quelques difficultés à réaliser un tableau croisé dynamique incluant notamment des formules telles que la moyenne, le min, etc.

Cf. exemple ici :

236tabcdminmoymax.xlsx (34.64 Ko)

Serait-il possible d'avoir l'aide précieuse de l'un ou l'une d'entre vous ?

Merci par avance,

Maxdhavys

Bonjour,

pour pouvoir profiter du TCD il faut modifier la mise en forme de ta base de données.

Voir fichier joint.

526tabcdminmoymax.xlsx (20.45 Ko)

@ + +

Bonjour,

Bonjour R@chid,

Une proposition VBA qui normalise tes données sous forme de tableau (comme préconisé par R@chid) pour le tableau croisé dynamique.

C'est une procédure évènementielle qui s'exécute à l'activation de la feuille TCD.

Ceci te permet de continuer à saisir tes données comme tu le fais.

ALT F11 pour ouvrir l'éditeur VBE. Voir module Feuil2 (TCD).

A te relire.

Cdlt.

145tabcdminmoymax.xlsm (31.97 Ko)

Merci Jean-Eric et R@chid pour vos réponses très pertinentes

Cela m'amène à vous posez une autre question : comment avez-vous procédé pour transformer "semi-automatiquement" mon tableau initial en tableau avec les colonnes, Nom, Prénom, Classe, Age, Prof, Matière, Notes ?

Bien à vous,

Maxdhavys

Re,

Comme écrit précédemment, j'ai traité ta question en VBA.

Pour voir la procédure, faire ALT F11 et voir le module Feuil2 (TCD) en haut à gauche de ton écran.

Dans ce nouveau fichier, j'ai commenté le code.

Cdlt.

81tabcdminmoymax.xlsm (30.43 Ko)
Private Sub Worksheet_Activate()
' Déclaration des variables
Dim wb As Workbook
Dim wsData As Worksheet, wsPT As Worksheet
Dim Table As ListObject
Dim rStart As Range
Dim tbl, arr()
Dim I As Long, J As Long, k As Long

    ' Gel affichage
    '----------------------------------------------------------------
    Application.ScreenUpdating = False
    ' Initialisation des variables
    '----------------------------------------------------------------
    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("Data")
    Set Table = Me.ListObjects(1)   'Tableau1 feuille Data
    ' RAZ tableau2 feuille TCD
    '----------------------------------------------------------------
    With Table
        If Not .DataBodyRange Is Nothing Then .DataBodyRange.Delete
        Set rStart = .InsertRowRange.Cells(1)
    End With
    '----------------------------------------------------------------
    ' Normalisation des données feuille Data
    ' Création tableau x lignes et 7 colonnes
    tbl = wsData.ListObjects(1).Range.Value
    For I = 2 To UBound(tbl, 1)
        For J = 6 To UBound(tbl, 2)
            If tbl(I, J) <> "" Then
                ReDim Preserve arr(7, k + 1)
                arr(0, k) = tbl(I, 1)
                arr(1, k) = tbl(I, 2)
                arr(2, k) = tbl(I, 1) & ", " & tbl(I, 2)
                arr(3, k) = tbl(I, 3)
                arr(4, k) = tbl(I, 4)
                arr(5, k) = tbl(1, J)
                arr(6, k) = tbl(I, J)
                k = k + 1
            End If
        Next J
    Next I
    ' Restitution des données normalisées en feuille TCD
    '----------------------------------------------------------------
    rStart.Resize(UBound(arr, 2), 7) = Application.Transpose(arr)
    ' Actualisation du tableau croisé dynamique
    '----------------------------------------------------------------
    Me.PivotTables(1).PivotCache.Refresh
    ' Affichage résultats
    '----------------------------------------------------------------
    Application.ScreenUpdating = True
    ' Message de fin de procédure
    '----------------------------------------------------------------
    MsgBox "Le TCD a été actualisé...", vbOKOnly + vbInformation
    '----------------------------------------------------------------
    Erase arr()
    Set rStart = Nothing
    Set Table = Nothing
    Set wsPT = Nothing: Set wsData = Nothing
    Set wb = Nothing

End Sub

Merci beaucoup Jean-Eric

Rechercher des sujets similaires à "tableau croise dynamique moyenne min max"