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 :

création d'un TCD en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut création d'un TCD en vba
    Bonjour,

    J'ai crée un petit programme pour afficher un tableau en TCD.
    Voici ce programme :
    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
    Sub client()
     
     
    Rows("1:3").Select ' selection des 3 premières lignes
    Selection.Delete Shift:=xlUp 'suppression de ces 3 premières lignes
     
    'supprimer la colonne A
    Columns("A:A").Delete Shift:=xlToLeft
     
    'suppression de la derniere colonne
    With Range("A1").CurrentRegion.Columns(Range("A1").CurrentRegion.Columns.Count)
    .Select
    .Delete
     End With
     
    Range("A1").Value = "code client"
    Range("B1").Value = "nom client"
    Range("C1").Value = "identifiant colis"
     
     
     
    'création du TCD
     
    Dim lastrow As Long
    Dim dercol As Long
    lastrow = Range("A1").End(xlDown).Row 'derniere ligne non vide du tableau
    dercol = Range("A1").End(xlToRight).Column 'derniere colonne non vide du tableau
     
    Range("A1").Select
     
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    "'PJ Trafic par client'!R1C1:R" & lastrow & "C" & dercol).CreatePivotTable TableDestination:="", _
     TableName:="Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
     
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) ' le curseur se place sur la cellule "A1"
    ActiveSheet.Cells(3, 1).Select 'selection de la cellule "A1"
     
    ActiveSheet.PivotTables("Tableau croisé dynamique2").RowGrand = False ' supprimer le total des lignes du TCD
     
     
    With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "code client")
            .Orientation = xlColumnField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
            "nom client")
            .Orientation = xlColumnField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("nom client"). _
            Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
            False, False)
     
    End Sub
    j'aimerais compléter ce programme en y rajoutant des lignes d'enregistrements :
    mon tableau comportent des dates qui font référencent a un nombre de colis flashés par jour.
    Actuellement je complete mon TCD manuellement en rajouter une par une les date (6 jours)dans la rubrique "déposer données ici".
    Puis je selectionne le champ "somme" dans la rubrique "parametre de champ".
    Vous trouvez ci dessous ce que cela donne en vba lorsque j'enregistre cette tache.
    Est il possible d'automiser cette tache.
    Attention, ce sont jamais les mêmes dates


    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
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("20/02/2012"), _
            "Nombre de 20/02/2012", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("21/02/2012"), _
            "Nombre de 21/02/2012", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("22/02/2012"), _
            "Nombre de 22/02/2012", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("23/02/2012"), _
            "Nombre de 23/02/2012", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("24/02/2012"), _
            "Nombre de 24/02/2012", xlCount
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("25/02/2012"), _
            "Nombre de 25/02/2012", xlCount
        Range("A4").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de 20/02/2012").Function = xlSum
        Range("A5").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de 21/02/2012").Function = xlSum
        Range("A6").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de 22/02/2012").Function = xlSum
        Range("A7").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de 23/02/2012").Function = xlSum
        Range("A8").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de 24/02/2012").Function = xlSum
        Range("A9").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de 25/02/2012").Function = xlSum
    En resumé est il possible d'automatiser cette tache qui permettrait de


    Données Total
    Somme de 20/02/2012 128164
    Somme de 21/02/2012 134610
    Somme de 22/02/2012 98582
    Somme de 23/02/2012 112240
    Somme de 24/02/2012 105024
    Somme de 25/02/2012 8198

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2007
    Messages
    1 247
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 1 247
    Par défaut
    oups j'ai lancé la discussion avant meme d'avoir terminé mon blabla..desole
    Ne prenez pas en compte ce qui se trouvent tout en bas du deuxième code.
    je voulais le supprimer et hop , une mauvaise manip et la discussion s'est affichée sur le forum...

Discussions similaires

  1. [XL-2013] Création de TCD via VBA
    Par Akhekhu dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 04/05/2015, 22h55
  2. [XL-2007] erreur 1004 pour la création d'un tcd via vba
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2012, 20h23
  3. Création de TCD en VBA
    Par mathieubonnefontiae dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 10/06/2011, 17h03
  4. E-XP : création TCD via VBA.
    Par gillou13 dans le forum Excel
    Réponses: 1
    Dernier message: 27/02/2009, 20h42
  5. Création DLL pour utilisation sur VBA
    Par Fbartolo dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2005, 20h44

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