IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création d'un PivotTable pour chaque PivotFields sélectionnés dans la même feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut Création d'un PivotTable pour chaque PivotFields sélectionnés dans la même feuille
    Salut à tous,

    Encore un problème avec ces PivotTable : ce coup-ci c'est au niveau de la création dynamique des PivotTable que ça se passe.

    Je voudrais afficher une série de PivotTable l'un en dessous des autres en ne faisant varier que le 2ème PivotField en xlRowField.
    Avec le PivotItems.Visible j'arrive à obtenir les tableaux individuellement, mais là où ça coince, c'est lorsque j'essaye de générer dynamiquement ces tableaux avec une simple boucle et en ne faisant varier que la ligne du TableDestination et le TableName.

    Voilà un résumé du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    For i = 1 to NbItems
     
        Dim PTName As String
        PTName = "PivotTable" & i
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "DATA!A1:P500").CreatePivotTable TableDestination:= _
            "RESULT!R" & derLTot & "C1", TableName:=TabPTName, DefaultVersion:= _
            xlPivotTableVersion10
     
        With ActiveSheet.PivotTables(PTName).PivotFields("données1")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables(PTName).PivotFields("données2")
            .Orientation = xlRowField
            .Position = 2
        End With
     
        For j = 1 To NbItems
            ActiveSheet.PivotTables(PTName).PivotFields("données2").PivotItems(ListeDonnées2(j)).Visible = True
        Next j
        For j = 1 To NbItems
            If ListeDonnées2(i) <> ListeDonnées2(j) Then
                ActiveSheet.PivotTables(PTName).PivotFields("Techno_FatherLot").PivotItems(ListeDonnées2(j)).Visible = False
            End If
        Next j
     
        With ActiveSheet.PivotTables(PTName).PivotFields("données3")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables(PTName).AddDataField ActiveSheet.PivotTables( _
            PTName).PivotFields("Nbdonnées"), "Somme des données", xlSum
     
        j = 1
        While Cells(1, j).Value <> ""
            j = j + 1
        Wend
        derLTot = derLTot + j + 5
     
    Next i
    Je sais pas si j'ai été assez clair, donc n'hésitez à me demander des précisions en cas

    Merci d'avance

  2. #2
    Membre confirmé Avatar de zoidy
    Inscrit en
    Avril 2006
    Messages
    184
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 184
    Par défaut
    Finalement ce code marche impeccable (à part une petite modif sur le comptage des lignes pour l'espacement), donc je le laisse pour ceux que ça intéresse

    Le problème venait juste du fait que pas mal de lignes plus haut il y avait déjà un PivotTable dont le TableDestination était de R1C1 sur la feuille RESULT, donc il appréciait pas trop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    For i = 1 to NbItems 'NbItems à calculer plus haut
     
        Dim PTName As String
        PTName = "PivotTable" & i
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "DATA!A1:P500").CreatePivotTable TableDestination:= _
            "RESULT!R" & derLTot & "C1", TableName:=TabPTName, DefaultVersion:= _
            xlPivotTableVersion10
     
        With ActiveSheet.PivotTables(PTName).PivotFields("données1")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables(PTName).PivotFields("données2")
            .Orientation = xlRowField
            .Position = 2
        End With
     
        'Sélection de l'Item à afficher
        For j = 1 To NbItems
            ActiveSheet.PivotTables(PTName).PivotFields("données2").PivotItems(ListeDonnées2(j)).Visible = True
        Next j
        For j = 1 To NbItems
            If ListeDonnées2(i) <> ListeDonnées2(j) Then
                ActiveSheet.PivotTables(PTName).PivotFields("Techno_FatherLot").PivotItems(ListeDonnées2(j)).Visible = False
            End If
        Next j
     
        With ActiveSheet.PivotTables(PTName).PivotFields("données3")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables(PTName).AddDataField ActiveSheet.PivotTables( _
            PTName).PivotFields("Nbdonnées"), "Somme des données", xlSum
     
        'Pour décaler le prochain tableau de 3 lignes
        While Cells(derLTot, 1).Value <> ""
            derLTot = derLTot + 1
        Wend
        derLTot = derLTot + j + 5
     
    Next i

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 40
    Dernier message: 28/09/2015, 14h12
  2. Création d'un onglet pour chaque résultat d'un filtre
    Par Antoine_d33 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/03/2015, 15h29
  3. [Débutant] Comment faire un UPDATE pour une Entitiy sélectionnée dans la View
    Par jérémyp8 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 15/01/2015, 21h43
  4. Réponses: 0
    Dernier message: 02/10/2012, 11h57
  5. macro pour remplire une liste dans une même cellule
    Par fabiend83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/07/2006, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo