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 :

Pivot : Source Destination variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 76
    Par défaut Pivot : Source Destination variable
    Bonjour,

    Je ne comprends pas mon erreur. Je souhaite executer des pivots sur des feuilles differentes.

    Il marque "Run-time error 424" Object required ....

    Merci de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
         WsName = Sheets("Table").Cells(4 + i, 25)
         Sheets(WsName).Select
    ''''''''''''''''''''''''''
    ''' Active PIvot table and classify the department per order
     
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Database!R1C2:R1048576C23", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=WsName.Range("A1"), TableName:="PivotTable2", DefaultVersion _
            :=xlPivotTableVersion12
    Cdlt,

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    C'est la syntaxe du paramètre "TableDestination" qui n'est pas correcte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Database!R1C2:R1048576C23", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=Sheets(WsName).Range("A1"), TableName:="PivotTable2", DefaultVersion _
            :=xlPivotTableVersion12

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Voici un petit code pour générer des DTC.
    Il faut copier coller la class clsPivots :
    Pour ce faire dans VB menu->insertion->Module de class.
    Puis lui donner le nom clsPivots :
    Menu->affichage-> fenêtre Propriétés.

    clsPivots :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    Private tb As Object
    Public Enum PivotType
        Typeligne = 1
        TypeColonne = 2
        TypeFiltre = 3
    End Enum
    Public Enum Fonct
    Somme = -4157
    Nombre = -4112
    Moyenne = -4106
    Max = -4136
    Min = -4139
    Produit = -4149
    Chiffres = -4113
    Écartype = -4155
    Écartypep = -4156
    Var = -4164
    VarP = -4165
    End Enum
    Public Function CreerTableau(Wb As Workbook, palge As String, Name As String)
    Dim Ws As Worksheet
    Set Ws = Sheets.Add
       Set tb = Wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            palge, Version:=xlPivotTableVersion12)
       Set tb = tb.CreatePivotTable( _
            TableDestination:=Ws.Range("A1"), TableName:=Name, _
            DefaultVersion:=xlPivotTableVersion12)
    End Function
     
     
     
    Public Sub NewPivotTables(Fld As String, Orientation As PivotType, Optional SousTotaux As Boolean)
        With tb.PivotFields(Fld)
            .Orientation = Orientation
            If SousTotaux = False Then
                .LayoutSubtotalLocation = 1
            Else
                .LayoutSubtotalLocation = 2
            End If
     
            '.Position = 1
        End With
     
    End Sub
     
    Public Sub NewDataField(Fld As String, Optional Fonction As Fonct = Somme)
        tb.AddDataField tb.PivotFields(Fld), " " & Fld, Fonction
    End Sub
     
    Public Sub AfficheTotal(Linge As Boolean, Colone As Boolean)
    tb.ColumnGrand = Colone
    tb.RowGrand = Linge
    End Sub
    Public Sub Style(S As String)
     tb.TableStyle2 = S
    End Sub
    Utilisation de la class:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub TesTDC()
    Dim TDC As New clsPivots
    Dim wrk As Workbook
    Set wrk = ActiveWorkbook
    TDC.CreerTableau wrk, wrk.Sheets("Data").Name & "!" & wrk.Sheets("Data").Range("a1").CurrentRegion.Address, "TDC"
    TDC.NewPivotTables "ChampFiltre", TypeFiltre
    TDC.NewPivotTables "Champligne1", Typeligne
    TDC.NewPivotTables "Champligne2", Typeligne
    TDC.NewPivotTables "ChampColonne", TypeColonne
    TDC.NewDataField "DataField1"
    TDC.NewDataField "DataField2", Moyenne
    TDC.AfficheTotal False, False
    TDC.Style "PivotStyleDark3"
    End Sub

Discussions similaires

  1. [XL-2007] Créer un TCD à destinations variables
    Par bigor44 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/02/2013, 15h17
  2. source insight variable globale avec adresse
    Par mich35 dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 05/08/2011, 10h32
  3. Réponses: 1
    Dernier message: 27/10/2010, 18h25
  4. pivot table lignes variables
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/03/2008, 14h27
  5. Réponses: 0
    Dernier message: 24/10/2007, 16h05

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