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 :

Macro de génération d'un Tableau Croisé Dynamique


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut Macro de génération d'un Tableau Croisé Dynamique
    bonjour à tous,

    J'ai besoin de votre aide de spécialiste.En effet, j'ai un problème : j'ai crée une macro avec l'enregistreur de macro d'excel pour générer un tableau croisé dynamique. Le TCD se crée parfaitement lors de l'enregistrement mais lorsque je lance la macro enregistrée, une erreur d'exécution de type 5 apparait "Argument ou appel de procédure incorrect"

    voici le code généré par excel:
    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
    Sub créationTCD()
    '
    ' créationTCD Macro
    '
     
    '
        Sheets("Historique pannes entre 2 dates").Select
        Rows("4:38").Select
        Range("C4").Activate
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Historique pannes entre 2 dates!L4C1:L38C11", Version:=xlPivotTableVersion10 _
            ).CreatePivotTable TableDestination:="TCD entre 2 dates!L8C1", TableName:= _
            "Tableau croisé dynamique12", DefaultVersion:=xlPivotTableVersion10
        Sheets("TCD entre 2 dates").Select
        Cells(8, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
            "Technicien1")
            .Orientation = xlRowField
            .position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
            "Ligne de production")
            .Orientation = xlRowField
            .position = 2
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
            "Type d'intervention")
            .Orientation = xlRowField
            .position = 3
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique12").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique12").PivotFields("Technicien1"), _
            "Nombre de Technicien1", xlCount
    End Sub
    Lorsque je lance le debugeur les lignes qui apparaissent en jaune sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Historique pannes entre 2 dates!L4C1:L38C11", Version:=xlPivotTableVersion10 _
            ).CreatePivotTable TableDestination:="TCD entre 2 dates!L8C1", TableName:= _
            "Tableau croisé dynamique12", DefaultVersion:=xlPivotTableVersion10
    Si quelqu'un peut m'aider a trouver une solution à cette erreur, ce serait vraiment génial !!!!

    Merci par avance

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2008
    Messages : 23
    Points : 10
    Points
    10
    Par défaut
    Salut,

    quand tu fais ton tableau croisé dynamique, il s'insère dans une autre feuille?
    ou il écrase les données précédente? auquel cas ta macro ne trouve plus les données au bon endroit.

  3. #3
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour à tous

    Je t'envois un bout de code que tu pourras adapter

    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
    Dim PTCache As PivotCache
    Dim PT As PivotTable
     
    Application.ScreenUpdating = False
     
     
    On Error Resume Next
        Application.DisplayAlerts = False
        Sheets("Tableau").Delete
        Worksheets.Add
        ActiveSheet.Name = "Tableau"
        Application.DisplayAlerts = True
     
        Sheets("Donnees").Select
        Set PTCache = ActiveWorkbook.PivotCaches.Add _
                            (SourceType:=xlDatabase, _
                            SourceData:=Range("A1").CurrentRegion.Address)
        Set PT = PTCache.CreatePivotTable _
                            (TableDestination:="'Tableau'!R5C1", _
                                TableName:="LeTableau")
     
        With PT
            .PivotFields("CODEEMP").Orientation = xlRowField
            .PivotFields("CODEEMP").Position = 1
     
            .PivotFields("NOM-prenom").Orientation = xlRowField
            .PivotFields("NOM-prenom").Position = 2
     
            .PivotFields("HEURE").Orientation = xlRowField
            .PivotFields("HEURE").Position = 3
            .PivotFields("HEURE").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
            .PivotFields("HEURE").PivotItems("").Visible = False
     
            .PivotFields("DESIGNATION 200").Orientation = xlRowField
            .PivotFields("DESIGNATION 200").Position = 4
     
            .PivotFields("SEMAINE").Orientation = xlColumnField
            .PivotFields("SEMAINE").Position = 1
     
            .PivotFields("NBHRS").Orientation = xlDataField
            .PivotFields("Somme de NBHRS").NumberFormat = "0.00"
            .PivotFields("CODEEMP").Subtotals = Array(False, False, False, False, False, False, False, False, False, False, False, False)
        End With
        Sheets("Tableau").Select
    Application.CommandBars("PivotTable").Visible = False
    Application.ScreenUpdating = True
    Tu dit,

    Bon courage

    Jean-Pierre
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    Merci à tout les 2 pour vos réponses

    MrBidon:
    Mon tableau s'insère dans une feuille déjà existante dans laquelle j'ai effacer les anciennes données juste avant

    Jean-Pierre49:
    J'ai adapter ton code avec mes variables et mes données ce qui donne
    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
    Sub créationTCD()
    '
    ' créationTCD Macro
    Dim PTCache As PivotCache
    Dim PT As PivotTable
     
     
        Sheets("Historique pannes entre 2 dates").Select
        Rows("4:38").Select
        Range("C4").Activate
        Sheets("TCD entre 2 dates").Select
     
        Set PTCache = ActiveWorkbook.PivotCaches.Add _
                            (SourceType:=xlDatabase, _
                            SourceData:="Historique pannes entre 2 dates!L4C1:L38C11")
        Set PT = PTCache.CreatePivotTable _
                            (TableDestination:="TCD entre 2 dates!L8C1", _
                                TableName:="Tableau croisé dynamique12")
        With PT
            .PivotFields ("Technicien1")
            .Orientation = xlRowField
            .position = 1
     
            .PivotFields ("Ligne de production")
            .Orientation = xlRowField
            .position = 2
     
            .PivotFields ("Type d'intervention")
            .Orientation = xlRowField
            .position = 3
     
             .AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields("Technicien1"), "Nombre de Technicien1", xlCount
        End With
    End Sub
    mais j'ai toujours la même erreur qui apparait dans le set PT

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 20
    Points : 13
    Points
    13
    Par défaut
    J'ai réussi a faire plus simple...en effet, j'ai crée mes tableaux par avance sur ma feuille et ma macro ne sert maintenant plus qu'a les mettes à jours via les nouvelle données et cela fonctionne parfaitement !
    Merci à tous pour vos réponses
    a bientot

  6. #6
    Membre chevronné Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Points : 2 056
    Points
    2 056
    Par défaut
    Bonjour,

    Pour que cela fonctionne :

    1/ être dans ta page de données quand tu initialise PTCache et PT

    2/ Attention à ta structure dans With



    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
        Sheets("Historique pannes entre 2 dates").Select
        Set PTCache = ActiveWorkbook.PivotCaches.Add _
                            (SourceType:=xlDatabase, _
                            SourceData:=Range("A1").CurrentRegion.Address)
        Set PT = PTCache.CreatePivotTable _
                            (TableDestination:="'TCD entre 2 dates'!L8C1", _
                                TableName:="Tableau croisé dynamique12")
     
        With PT
            .PivotFields("Technicien1").Orientation = xlRowField
            .PivotFields("Ligne de production").Orientation = xlRowField
            .PivotFields("Type d'intervention").Orientation = xlRowField
            .AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields("Technicien1"), "Nombre de Technicien1", xlCount
        End With
     
        Sheets("TCD entre 2 dates").Select
    Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
    ---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------

Discussions similaires

  1. macro Tableau croisé dynamique
    Par nounouna dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/05/2010, 13h01
  2. Tableau croisé dynamique créé par macro
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/01/2010, 18h45
  3. [XL-2003] Macro Tableau croisé dynamique
    Par Otmanes dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2009, 17h18
  4. [XL-2007] Macro tableau croisé dynamique
    Par naty76 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2009, 09h35
  5. [VBA-E] pb entre macro et tableau croisé dynamique
    Par flear dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/01/2007, 09h19

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