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 :

tableau croisé dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut tableau croisé dynamique
    Bonjour a tous,
    j'ai un tableau sur une feuille Excel et je voudrais, en exécutant une macro, créer un tableau croisé dynamique sur une autre.
    Pour ca, j'insere une nouvelle feuille juste avant, mais apres, ca plante quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "MaFeuilleSource!L2C1:L8C22", Version:=xlPivotTableVersion10). _
            CreatePivotTable TableDestination:=NomFeuile & "!L1C1", TableName:= 
            "LeNomDuTableau", DefaultVersion:=xlPivotTableVersion10
    J'ai juste un message d'erreur d'exécution 5, sans rien de plus

    Quelqu'un peut-il m'aider ?

    Merci

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut coucoucmoi,

    voici un code qui fonctionne dans une de mes applications.

    Je te le livre Brut avec quelques commentaires en gras sur ce qui me semble important à bien maitriser, mais je suis loin d'être un expert en la matière.

    La feuille ou le Pivot table est placée est créée, par le code, juste derrière (je crois) la feuille avec les données. Donc pas besoin de la créer toi-même avant.
    Elle S'appelle "Pivot_Press", le PivotTable aussi.

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Sub Update_Pivot()
    
        Dim lrow        As Long
        Dim xlrow       As String
        
        On Error Resume Next
        
        Sheets("External").Select  'Les données de base se trouvent dans ce sheet
        lrow = ActiveSheet.UsedRange.Rows.Count 'récupère le nombre de ligne active réelles -> Le PivotTable est basé sur les données complètes.
        xlrow = lrow  
        
        Sheets("Pivot_Press").Select
        Application.DisplayAlerts = False
        ActiveWindow.SelectedSheets.Delete
        Application.DisplayAlerts = True
    
    'Je Supprime la précédente génération du Pivot Table en supprimant la feuille ou elle se trouve "Pivot_Press"
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            "External!R1C1:R" & xlrow & "C11").CreatePivotTable TableDestination:="", TableName:= _
            "Pivot_Press"
        ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
        ActiveSheet.Cells(3, 1).Select
        With ActiveSheet.PivotTables("Pivot_Press")
            .RowGrand = False
            .SmallGrid = False
        End With
        ActiveSheet.PivotTables("Pivot_Press").PivotFields("LGBI").Subtotals = Array( _
            False, False, False, False, False, False, False, False, False, False, False, False)
        ActiveSheet.PivotTables("Pivot_Press").AddFields RowFields:=Array("PRESS", _
            "ALLOY", "LGBI", "Data"), ColumnFields:="INDATE"
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("BEFORE_PC")
            .Orientation = xlDataField
            .Caption = "BEFORE PC"
            .Position = 1
            .NumberFormat = "#.##0"
        End With
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("AFTER_PC")
            .Orientation = xlDataField
            .Caption = "AFTER PC"
            .Position = 2
            .NumberFormat = "#.##0"
        End With
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("EVOL_PC")
            .Orientation = xlDataField
            .Caption = "EVOL PC"
            .Position = 3
            .NumberFormat = "#.##0"
        End With
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("BEFORE_TO")
            .Orientation = xlDataField
            .Caption = "BEFORE TO"
            .Position = 4
            .NumberFormat = "#.##0,0"
        End With
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("AFTER_TO")
            .Orientation = xlDataField
            .Caption = "AFTER TO"
            .Position = 5
            .NumberFormat = "#.##0,0"
        End With
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("EVOL_TO")
            .Orientation = xlDataField
            .Caption = "EVOL TO"
            .NumberFormat = "#.##0,0"
        End With
        ActiveSheet.PivotTables("Pivot_Press").PivotSelect "", xlDataAndLabel
        ActiveSheet.PivotTables("Pivot_Press").Format xlTable7
        With ActiveSheet.PivotTables("Pivot_Press").PivotFields("PRESS")
            .PivotItems("").Visible = False
            .PivotItems("1").Visible = False
        End With
        ActiveSheet.PivotTables("Pivot_Press").PivotFields("ALLOY").Subtotals = Array( _
            False, False, False, False, False, False, False, False, False, False, False, False)
        Range("C2").Select
        ActiveSheet.Name = "Pivot_Press" '
        'Super important : Renomme le sheet avec le pivot créé sinon au prochain passage le Delete du Sheet va foirer
         
        Application.CommandBars("PivotTable").Visible = True
        ActiveSheet.PivotTables("Pivot_Press").PivotSelect "", xlDataOnly
        Selection.NumberFormat = "#,##0"
        Application.CommandBars("PivotTable").Visible = False
        Range("C2").Select
    
        
    
    End Sub
    J'espère que tu pourras en faire quelquechose.

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut
    Oui
    Je viens de regarder ton code, j'ai pris qq petit trucs et ... nickel !
    Merci, je vais avancer un peu plus loin avec ca

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

Discussions similaires

  1. filtrer tableau croisé dynamique sous excel
    Par kernel57 dans le forum Excel
    Réponses: 7
    Dernier message: 17/11/2006, 15h18
  2. Tableau croisé dynamique
    Par papy_tergnier dans le forum Access
    Réponses: 5
    Dernier message: 26/12/2005, 19h05
  3. Tableau croisé dynamiqué élaboré sous Access
    Par Mahefasoa dans le forum Access
    Réponses: 1
    Dernier message: 20/11/2005, 09h04
  4. tableau Croisé Dynamique
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/11/2005, 11h36
  5. tableau croisé dynamique sous delphi, comment ?
    Par Brice Yao dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/07/2005, 10h33

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