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 :

Générer un tableau croisé dynamique : erreur de propriété PivotFields [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Générer un tableau croisé dynamique : erreur de propriété PivotFields
    Bonjour à tous,

    Je me permets de poster mon problème sur ce forum car après des heures passées à tenter de le résoudre seul, je n'ai plus d'idées ( et internet non plus).

    Il s'agit d'un problème très classique de macro pour générer un tableau croisé dynamique à partir d'un champs de données composé de deux colonnes, et d'un nombre variable de lignes.
    La liste de données devant être dans la même feuille que le tableau croisé dynamique généré par le code VBA.

    Pour certaines raisons propres au commanditaire, ma macro commence par proposer à l'utilisateur d'effacer le tableau existant, puis propose de le recréer, en allant alors chercher la nouvelle plage de données (qui peut être identique).

    Le vrai code commence donc à s'exécuter après avoir cliqué deux fois sur oui dans les petites fenêtres qui apparaissent.
    Tout se passe bien, sauf lorsque que le code tente de placer le champs "application" en champs de ligne.
    J'ai alors l'erreur suivante :

    Erreur d'exécution '1004' :
    Impossible de lire la propriété PivotFields de la classe PivotTable

    C'est probablement quelque chose de très bête qui coince ici mais je ne le vois pas du tout.

    Merci d'avance pour votre attention !

    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
     
     
    Sub TCD()
    Dim Msg, Style, Title, choix1, choix
    'On Error Resume Next
    Application.ScreenUpdating = False
        ActiveWorkbook.Names.Add Name:="mazone", RefersToR1C1:= _
            "=OFFSET(Test!R1C1,,,COUNTA(Test!C1),2)" ' creation de la zone de nom
        Columns("D:E").ClearContents ' efface la colonne D et E
     
    Msg = "Souhaitez-vous effacer le TCD ?"    ' Définit le message d'effacement.
    Style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.
    Title = "Effacement du TCD "    ' Définit le titre.
    choix = MsgBox(Msg, Style, Title) ' Affiche le message.
    If choix = vbYes Then    ' L'utilisateur a choisi Oui.
        ActiveSheet.PivotTables("tcd").TableRange2.Clear 'Efface le TCD
        choix1 = MsgBox(" souhaitez vous le recréer ?", Style, "Demande de Création ") 'Ouvre un nouveau MSGBOX pour la création du TCD
        If choix1 = vbNo Then ' si la réponse est Non on sort de la macro
        Exit Sub
        Else 'sinon on crée le nouveau TCD
     
         ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="mazone" _
            ).CreatePivotTable TableDestination:=Range("H6"), TableName:="TCD"
     
        With ActiveSheet.PivotTables("TCD")
     
        ActiveSheet.PivotTables("TCD").AddDataField ActiveSheet. _
            PivotTables("TCD").PivotFields("RTO"), "Nombre de RTO", xlCount
     
         With .PivotFields("RTO")
         .Orientation = xlPageField
         .Position = 1
         End With
     
         With .PivotFields("Nombre de RTO")
         .Caption = "Min de RTO"
         .Function = xlMin
         End With
     
         With .PivotFields("APP")
         .Orientation = xlRowField
         .Position = 1
         End With
     
        End With
     
        Worksheets("Test").Range("J2").Value = Worksheets("Test").PivotTables("TCD").TableRange1.Rows.Count
     
        End If
     
    Else    ' L'utilisateur a choisi Non.
        Exit Sub    ' Effectue une action.
    End If
     
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Dans le fichier joint la cellule A1 contient "application " et non "application" comme dans votre macro. Si vous supprimez le caractère blanc, votre macro fonctionne.

    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Oh mon dieu, c'est terrible !! Jamais je n'aurais retrouvé un détail pareil, c'est tellement bête .

    Merci beaucoup pour votre aide !

    Cordialement,

  4. #4
    Invité
    Invité(e)
    Par défaut
    Mais si, mais si....

    L'astuce est assez simple, il suffit de créer une macro à partir de l'endroit où cela a échoué et de terminer manuellement votre TCD pour enregistrer les commandes dans la macro. Ensuite vous n'avez plus qu'à comparer les deux codes.

    Cordialement.
    Dernière modification par AlainTech ; 09/02/2015 à 02h36. Motif: Suppression de la citation inutile

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Pas bête du tout ça !

    Merci pour l'astuce ça me servira grandement (je ne fais que débuter sur VBA)

    Cordialement,

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

Discussions similaires

  1. [AC-2010] Erreur en mode Tableau Croisé dynamique
    Par jloois dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/01/2016, 10h47
  2. [E-03] Générer un tableau croisé dynamique depuis un UserForm
    Par moilou2 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/01/2009, 20h32
  3. [E-07] Tableau croisé dynamique - Erreur n°5
    Par Mxwell dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2009, 10h12
  4. Réponses: 0
    Dernier message: 13/02/2008, 12h11
  5. Réponses: 1
    Dernier message: 12/01/2007, 08h36

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