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 création de TCD [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2007
    Messages : 218
    Par défaut Macro de création de TCD
    Bonjour à tous,
    Je bloque sur la création d'une macro permettant de créer un TCD.
    Mon fichier de départ comporte une feuille qui doit être recopiée à plusieurs reprises, via une macro, et chaque feuille est renommée avec un numéro.
    Sur chaque copie, je dois insérer un TCD relatif à cette feuille.
    Comment dois-je procéder ?
    J'ai essayé de créer la macro via l'enregistreur mais je rencontre des problèmes avec les numéros de pages qui changent et les numéros de TCD.
    Voici mon code pour le moment :

    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
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "2!R4C1:R2004C30", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="2!R4C35", TableName:=num_semaine, _
            DefaultVersion:=xlPivotTableVersion12
        Sheets("2").Select
        Cells(4, 35).Select
        With ActiveSheet.PivotTables(num_semaine).PivotFields( _
            "contenants_NOPOINTDEP")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables(num_semaine).PivotFields( _
            "pointsdepots_NOMCOM")
            .Orientation = xlPageField
            .Position = 1
        End With
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Vol_OM1"), _
            "Somme de Vol_OM1", xlSum
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Vol_OM2"), _
            "Somme de Vol_OM2", xlSum
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Total_Vol_OM"), _
            "Somme de Total_Vol_OM", xlSum
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Vol_TRI"), _
            "Somme de Vol_TRI", xlSum
     
        ActiveSheet.PivotTables(num_semaine).PivotSelect _
            "'Somme de Vol_TRI'", xlDataAndLabel, True
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        ActiveSheet.PivotTables(num_semaine).PivotSelect _
            "'Somme de Total_Vol_OM'", xlDataAndLabel, True
    Pour le moment, ça bloque à ... la première ligne.

    Merci par avance pour votre aide.

  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,

    Pour le moment, ça bloque à ... la première ligne.
    Oui... Si tu nous disais ce qui se passe ? une erreur ? laquelle ? Quel est le nom de la feuille contenant les données sources et celui de la feuille devant contenir le TCD ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2007
    Messages : 218
    Par défaut
    bonjour, ma page de départ est la page déjà copiée. Le TCD doit s'insérer sur la même feuille.
    En revanche, le nom de cette feuille va changer au fur et à mesure que j'utilise la macro puisque c'est la feuille d'origine (nommée Base) qui va se recopier avant d'insérer le TCD.
    Les feuilles copiées sont de simples numéros (1 à 52 pour le nombre de semaines de l'année).
    Le message d'erreur que j'obtiens est le suivant :
    Erreur d'exécution :"1004'
    Impossible d'afficher le rapport de tableau croisé dynamique sur un rapport existant.
    Petite correction, j'ai vu d'où venait l'erreur, un manque de place sous un TCD existant (il ne devait pas être là).
    Donc j'ai repris la macro depuis le départ, avec une feuille vierge et j'ai maintenant le message suivant :
    Erreur d'exécution '5':
    Argument ou appel de procédure incorrect
    en fait, comment puis-je faire pour définir les valeurs qui vont changer à chaque copie de ma page de départ ? Dans le code inscrit au dessus, ce sont les valeurs en rouge des lignes 2, 3 et 5.

  4. #4
    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
    Essaie comme ça :

    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
    Dim NomFeuille As String
    NomFeuille = ActiveSheet.Name
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            NomFeuille & "!R4C1:R2004C30", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:=NomFeuille & "!R4C35", TableName:=num_semaine, _
            DefaultVersion:=xlPivotTableVersion12
        Sheets(NomFeuille).Select
        Cells(4, 35).Select
        With ActiveSheet.PivotTables(num_semaine).PivotFields( _
            "contenants_NOPOINTDEP")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables(num_semaine).PivotFields( _
            "pointsdepots_NOMCOM")
            .Orientation = xlPageField
            .Position = 1
        End With
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Vol_OM1"), _
            "Somme de Vol_OM1", xlSum
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Vol_OM2"), _
            "Somme de Vol_OM2", xlSum
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Total_Vol_OM"), _
            "Somme de Total_Vol_OM", xlSum
        ActiveSheet.PivotTables(num_semaine).AddDataField ActiveSheet. _
            PivotTables(num_semaine).PivotFields("Vol_TRI"), _
            "Somme de Vol_TRI", xlSum
     
        ActiveSheet.PivotTables(num_semaine).PivotSelect _
            "'Somme de Vol_TRI'", xlDataAndLabel, True
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        ActiveSheet.PivotTables(num_semaine).PivotSelect _
            "'Somme de Total_Vol_OM'", xlDataAndLabel, True

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2007
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2007
    Messages : 218
    Par défaut

    Génial ! Merci beaucoup.
    Ca fonctionne comme il se doit.

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

Discussions similaires

  1. [XL-2013] Macro création de TCD en omettant un type de paramètre dans le filtre.
    Par LorisO dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/05/2015, 22h25
  2. [XL-2013] Macro de création de TCD utilisable sur plusieurs fichiers
    Par VictorienR dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/05/2015, 20h20
  3. [XL-2003] Création de TCD à partir de Macro ; Error : Objet requis + Total en Somme
    Par Axi91 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/04/2013, 14h50
  4. Macro à la création d'une tâche
    Par myrddin772 dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 25/11/2011, 11h28
  5. [XL-2007] Erreur 1004 lors de la création de TCD avec l'enregistreur de macro
    Par ryobanga dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2010, 15h35

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