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 :

Besoin d'aide pour épurer du code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Besoin d'aide pour épurer du code
    Bonjour,

    Néophite en matière de programmation VBA, je m'attaque aujourd'hui à la création d'un tableau croisé dynamique. Je suis bien entendu passé par l'enregistreur de macro. Voilà ce qu'il me ressort.
    Pourriez-vous SVP m'aider à l'épurer, le rendre plus propre, plus pro ?
    D'avance merci !

    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "PMP!R1C1:R1048576C47", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="TCD!R1C1", TableName:="Tableau croisé dynamique1", _
            DefaultVersion:=xlPivotTableVersion12
        Sheets("TCD").Select
        Cells(1, 1).Select
        ActiveWorkbook.ShowPivotTableFieldList = True
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Gestion Stock")
            .Orientation = xlPageField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Compte")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Espèce")
            .Orientation = xlRowField
            .Position = 2
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Génération")
            .Orientation = xlRowField
            .Position = 3
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1")
            .HasAutoFormat = False
            .InGridDropZones = True
            .RowAxisLayout xlTabularRow
        End With
        Range("A4").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Compte"). _
            Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
            False, False)
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotSelect "Espèce", _
            xlButton, True
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Espèce"). _
            Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
            False, False)
        Range("C4").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Génération"). _
            Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
            False, False)
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Gestion Stock").CurrentPage = "(All)"
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Gestion Stock")
            .PivotItems("(blank)").Visible = False
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Gestion Stock").EnableMultiplePageItems = True
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Initial Stock Qty."), _
            "Nombre de Initial Stock Qty.", xlCount
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de Initial Stock Qty.")
            .Caption = "Somme de Initial Stock Qty."
            .Function = xlSum
            .NumberFormat = "# ##0,00"
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Initial Stock Amount"), _
            "Nombre de Initial Stock Amount", xlCount
        Range("E4").Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de Initial Stock Amount")
            .Caption = "Somme de Initial Stock Amount"
            .Function = xlSum
            .NumberFormat = "# ##0,00 €"
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Final Stock Qty."), _
            "Nombre de Final Stock Qty.", xlCount
        Range("F4").Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de Final Stock Qty.")
            .Caption = "Somme de Final Stock Qty."
            .Function = xlSum
            .NumberFormat = "# ##0,00"
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique1").PivotFields("Final Stock Amount"), _
            "Nombre de Final Stock Amount", xlCount
        Range("G4").Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            "Nombre de Final Stock Amount")
            .Caption = "Somme de Final Stock Amount"
            .Function = xlSum
            .NumberFormat = "# ##0,00 €"
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").TableStyle2 = _
            "PivotStyleMedium3"
    End Sub

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Déjà il faut que tu déclares un variable PivotTable et que tu lui assignes ton tableau croisé dynamique. Tu pourras ensuite travailler directement dessus.
    Tu peux faire pareil pour les PivotFields sur lesquels tu fais beaucoup d'opération.

  3. #3
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    ca sent le sapin, je sais que je n'y arriverai pas.
    J'ai collé le code tel quel et sa fonctionne.
    Je le reprendrai lorsque je serai aussi fort que toi ou d'autres en programmation.
    Merci du conseil ZèbreLoup !

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Je pourrais te le rendre plus propre, mais si ça marche, aucun intérêt. Il vaut mieux effectivement que ce soit toi qui le fasse quand tu auras le courage et que tu auras lu certains des très bon tutos que tu as sur ce site.

    Tu apprendras ainsi à te servir de procédures, de fonctions, de variables, d'objets. Ce sont les bases qui t'aideront à te sortir de l'enregistreur de macro.

    Bon courage et à la prochaine

  5. #5
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Merci ZebreLoup,

    Je commence à bien me défendre avec les objets, les définitions de variables et le VBA en général mais pour les TCD, je ne me sens pas encore prêts. Je vais y aller pas à pas, après avoir lu les excellents tutos de ce merveilleux site.
    Au plaisir d'un prochain post !

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

Discussions similaires

  1. Besoin d'aide pour traduire un code NASM en MASM
    Par popol03 dans le forum Assembleur
    Réponses: 2
    Dernier message: 21/05/2007, 19h06
  2. Besoin d'aide pour optimiser du code
    Par scaleo dans le forum Langage
    Réponses: 1
    Dernier message: 07/01/2007, 14h56
  3. [VB.NET] besoin d'aide pour déchiffrer un code
    Par pcdj dans le forum Windows Forms
    Réponses: 10
    Dernier message: 27/06/2006, 12h32
  4. Besoin d aide pour comprendre un code
    Par litlebasic dans le forum Delphi
    Réponses: 4
    Dernier message: 22/06/2006, 14h00
  5. Je besoin d'aide pour terminer mon code
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 07/11/2005, 00h30

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