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 :

Realiser un TCD avec une plage variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut Realiser un TCD avec une plage variable
    Bonjour

    voila j essaye de réaliser un TCD avec une plage dynamique mais cela n est pas chose si simple en étant débutant je coince sur plusieurs points ;

    je suis là pour apprendre et surtout comprendre :

    dans mon code j ai une erreur voir 2 ou je bloque clairement , merci d avance pour votre aide,

    Premier soucis :
    *La définition de ma plage variable j ai un message d erreur et le résultat de mon code pour définir tabtcd = Nothing
    *Pour la source data je ne sais pas si c est correct de mettre directement SourceData:="tabtcd"

    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
     
    Sub Bouton4_Cliquer()
     
    ' TCD Macro
    ' Réalisation du TCD à partir des données brutes
     
    Dim derlig As Long
     
    Dim tabtcd As Range
     
    derlig = Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row
     
    tabtcd = Sheets("Feuil1").Rows("C" & derlig)
     
    tabtcd.Select
     
     
    'Probleme : la source du TCD est dynamique et création TCD page 2 ....
     
     
        Sheets.Add
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "tabtcd", Version:=xlPivotTableVersion14).CreatePivotTable _
            TableDestination:="Feuil2!R1C1", TableName:="Tableau croisé dynamique1", _
            DefaultVersion:=xlPivotTableVersion14
        Sheets("Feuil2").Select
        Cells(1, 1).Select
     
     
    'D par ligne
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Currency")
            .Orientation = xlRowField
            .Position = 1
        End With
     
     
     
    'V par D
     
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("USD Equivalent"), _
            "Nombre de USD Equivalent", xlCount
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de USD Equivalent")
            .Caption = "Somme de USD Equivalent"
            .Function = xlSum
        End With
     
     
    'P par d
     
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Revenue"), _
            "Nombre de Revenue", xlCount
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de Revenue")
            .Caption = "Somme de Revenue"
            .Function = xlSum
        End With
     
     
     
    End Sub

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut
    bonjour,

    j ai regardé l exemple cité mais et j ai donc adapté mon code comme ci dessous

    Cependant une autre erreur apparait ligne 16 et 19 de code ,pour la création de mon TCD l'erreur d execution 1004 me disant , Le nom du champ du TCD n est pas valide. Pour créer un rapport le TCD, vous devez utiliser des données sous forme de liste avec des étiquettes de colonnes. Si vous changer le nom du Champ de TCD, vous devez taper un nouveau nom pour le champ.

    Plse help je suis perdu là

    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
     
    Sub Bouton4_Cliquer()
     
    ' TCD Macro
    ' Réalisation du TCD à partir des données brutes
     
    Dim i As Integer
     
    i = 6
     
    Range("C1:I65536").Select
     
    'Probleme : la source du TCD est dynamique et création TCD page2
     
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Feuil1!R1C1:R65536C9", Version:=xlPivotTableVersion14).CreatePivotTable _
            TableDestination:="Feuil2!R1C1", TableName:="Tableau croisé dynamique" & i, _
            DefaultVersion:=xlPivotTableVersion14
        Sheets("Feuil2").Select
        Cells(1, 1).Select
     
     
    'Devises par ligne
     
        With ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields( _
            "Currency")
            .Orientation = xlRowField
            .Position = 1
        End With
     
     
     
    'Volumes par Devises
     
        ActiveSheet.PivotTables("Tableau croisé dynamique" & i).AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique" & i).PivotFields("USD Equivalent"), _
            "Nombre de USD Equivalent", xlCount
        With ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields( _
            "Nombre de USD Equivalent")
            .Caption = "Somme de USD Equivalent"
            .Function = xlSum
        End With
     
     
    'PnL par devises
     
        ActiveSheet.PivotTables("Tableau croisé dynamique" & i).AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique" & i).PivotFields("Revenue"), _
            "Nombre de Revenue", xlCount
        With ActiveSheet.PivotTables("Tableau croisé dynamique" & i).PivotFields( _
            "Nombre de Revenue")
            .Caption = "Somme de Revenue"
            .Function = xlSum
        End With
     
    i = i + 1
     
    End Sub

  4. #4
    Invité
    Invité(e)
    Par défaut
    si ta feuille source ne contient pas de données c'est normal.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 15
    Par défaut
    Ma feuille de départ contient des données mais pas sur les 65536 lignes mais normalement j ai essayé sans code même si il n y pas de données dans toute la sélection le TCD se réalise donc la je comprends pas trop ?

    C est pour cela qu'à la base je voulais passer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim derlig As Long
     
    Dim tabtcd As Range
     
    derlig = Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row
     
    tabtcd = Sheets("Feuil1").Rows("C" & derlig)
     
    tabtcd.Select
    et ensuite mettre tabtcd dans ma SourceData:= "tabtcd", pour en effet que lui même délimite la plage de données pour réaliser le TCD

  6. #6
    Invité
    Invité(e)
    Par défaut
    j'ai testé ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    i = 6
     
    Range("C1:I65536").Select
     
    'Probleme : la source du TCD est dynamique et création TCD page2
     
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Feuil1!R1C1:R65536C9", Version:=xlPivotTableVersion14).CreatePivotTable _
            TableDestination:="Feuil2!R1C1", TableName:="Tableau croisé dynamique" & i, _
            DefaultVersion:=xlPivotTableVersion14
        Sheets("Feuil2").Select
        Cells(1, 1).Select
    bien sur je ne dispose pas de l'onglet "Tableau croisé dynamique6" et j'ai l'erreur 1004 ??????

Discussions similaires

  1. Realiser un TCD avec une plage dynamique
    Par TRESOALEX dans le forum Général VBA
    Réponses: 0
    Dernier message: 26/04/2013, 09h55
  2. [XL-2010] Création TCD sur onglet variable (a partir d'une plage variable)
    Par WilliamAd dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/06/2012, 10h42
  3. [XL-2003] saisir des formules avec une plage variable de données
    Par nazaire dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/01/2011, 08h35
  4. Créer un graph avec une plage de donnée variable
    Par Damien.020 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/04/2010, 09h04
  5. Créer un graph avec une plage de donnée variable
    Par nono le golfeur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/06/2007, 17h15

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