Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2011, 11h38   #1
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 396
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 396
Points : 420
Points : 420
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 :
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
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 14h53   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 30/11/2011, 15h26   #3
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 396
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 396
Points : 420
Points : 420
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 !
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 15h44   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

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

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
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
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2011, 10h57   #5
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 396
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 396
Points : 420
Points : 420
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 !
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h42.


 
 
 
 
Partenaires

Hébergement Web