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 [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut tableau croisé dynamique
    bonjour,

    en utilisant les macro , j'ai créé un tableau croisé dynamique dans une nouvelle feuille (dans un workbook qui contient déjà 6 feuilles de données) à partir de la première feuille de données.
    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
    Sub Macro1()
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "223!L1C1:L45750C6", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="Agreg1!L1C1", TableName:="Tableau croisé dynamique1", _
            DefaultVersion:=xlPivotTableVersion12
        Sheets("Agreg1").Select
        Cells(1, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Tranche Horaire")
            .Orientation = xlRowField
            .Position = 2
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Spread relatif"), _
            "Somme de Spread relatif", xlSum
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Somme de Spread relatif")
            .Caption = "Moyenne de Spread relatif"
            .Function = xlAverage
        End With
    End Sub
    maintenant il faut que je modifie le code pour que pour chaque feuille un tableau croisé dynamique se forme dans la meme feuille (déjà créée manuellement)
    a chaque tableau je me situerai donc en A1 puis C1 puis E1.....dans la feuille créée
    mais je n arrive pas à créer une boucle qui marche..
    pouvez vous m aider???

  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
    Bonjour,

    je pense que tu dois avoir ceci en variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableDestination:="Agreg1!L1C1"
    Tu boucles sur tes feuilles, en omettant bien celle du TCD , et via un compteur initialisé à 1 (Colonne A) et incrémenté par pas de 2 (A puis C puis E), tu remplace ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TableDestination:="Agreg1!L1C1"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TableDestination:="Agreg1!L1C" & compteur
    cela devrait marcher.

    Attention que dans le reste du code, toute référence au tableau dynamique 1 doit aussi être gérée en dynamique et plus en fixe....

    je suppose que tu suis.

    Donc ceci ne fonctionnera que pour le TCD 1 mais crac boum pour les autres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ActiveSheet.PivotTables("Tableau croisé dynamique1")
    A gérer via le compteur aussi.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut
    je ne comprends pas comment dynamiser le table name?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    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
    Sub Spread_Relatif_Individuel_Moyen_Par_Heure()
      Dim Feuille As Worksheet
      Dim Colonne As Integer
      ThisWorkbook.Worksheets.Add.Name = "Agreg1"
      ThisWorkbook.Sheets("Agreg1").Activate
      For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name <> "Agreg1" Then
          ActiveWorkbook.PivotCaches.Create(xlDatabase, Feuille.Range(Feuille.Cells(1, 1), Feuille.Cells(1, 6).End(xlDown)), xlPivotTableVersion12).CreatePivotTable TableDestination:=ThisWorkbook.Sheets("Agreg1").Range("A1").Offset(0, Colonne), TableName:=Feuille.Name, DefaultVersion:=xlPivotTableVersion12
             With ActiveSheet.PivotTables(Feuille.Name).PivotFields("Tranche horaire")
                .Orientation = xlRowField
                .Position = 1
            End With
            With ActiveSheet.PivotTables(Feuille.Name).PivotFields("Date")
                .Orientation = xlRowField
                .Position = 1
            End With
            ActiveSheet.PivotTables(Feuille.Name).AddDataField ActiveSheet.PivotTables(Feuille.Name).PivotFields("Spread Relatif"), "Moyenne de Spread Relatif " + Feuille.Name, xlAverage
            Colonne = Colonne + 2
        End If
      Next Feuille
    End Sub
    Je ne sais pas si tu es à Dauphine ou dans une autre école. En tout cas, si c'est Dauphine, dépêche-toi, c'est pour 16H

    C'est le code que je refile à tous les étudiants faisant "exactement" la même chose. J'ai le projet complet et lorsque l'un d'entre-vous passe dans le coin je refile le morceau de code correspondant. Faîtes gaffe, il va falloir adapter un peu à votre sauce sinon vous allez vous faire "cramer"

    Bonne chance !

    EDIT : je n'ai même pas cherché à comprendre, j'ai pris le passage parlant des TCD dans le code. Tu me diras si c'est ça.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut
    merci beaucoup...
    mon problème est résolu

+ 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, 14h18
  2. Tableau croisé dynamique
    Par papy_tergnier dans le forum Access
    Réponses: 5
    Dernier message: 26/12/2005, 18h05
  3. Tableau croisé dynamiqué élaboré sous Access
    Par Mahefasoa dans le forum Access
    Réponses: 1
    Dernier message: 20/11/2005, 08h04
  4. tableau Croisé Dynamique
    Par Bjuice2 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/11/2005, 10h36
  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, 09h33

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