Bonjour à tous,
Alors voilà, je viens vous voir aujourd'hui car j'aurai vraiment besoin d'un programme, cependant il dépasse mon niveau d'apprenti à VBA. Je reçois chaque semaine un Plan de livraison (exemple en pièce jointe) qui contient une liste en général de plusieurs milliers de lignes avec des pièces à livrer. Sur chaque ligne il y a : la référence de la pièce, son nom, une date de livraison et une quantité.
Le soucis c'est que sur plusieurs milliers de lignes, c'est illisible... Donc j'ai recherché comment faire, et j’ai découvert les TCD : un super outil d'ailleurs, cependant le plan de livraison étant différent chaque semaine, il faut recréer le TCD toutes les semaines en rentrant correctement les bons paramètres, un enfer surtout que je ne maîtrise vraiment pas ces TCD !
J'ai pensé donc à un code qui permettrai à la réception de chaque plan de livraison, de créer automatiquement le TCD qui détaillerai sur les deux premières colonnes les références et désignations de chaque pièce, sur les colonnes suivantes les mois de l'année (janvier à décembre 2015), et qui donnerai une quantité totale à livrer pour chaque pièce à chaque mois.
Alors après quelques recherches sur internet, je suis tombé sur un sujet un peu similaire au miens , qui y détaillait un code vraiment pas mal pour mon problème (code ci-dessous). Cependant j'ai vraiment beaucoup de mal à le comprendre, et à essayer de l'adapter à mon soucis... J'ai déjà créé un classeur de macro personnel, je sais comment rajouter une icone pour pouvoir utiliser une macro dans n'importe quel autre fichier, il ne me reste "plus que" le code à adapter...
Si quelqu'un pouvait éventuellement m'aider sur cela, ce serait génial !
Je vous met également en pièce jointe le document vierge qui était donné dans le lien pour l'utilisation du code ci-dessous.
Merci beaucoup,
Victorien
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 Option Explicit 'Option Private Module Public Sub Traitement_Importation() Dim wb As Workbook Dim wsData As Worksheet, wsPT As Worksheet Dim lastCol As Long, lastRow As Long Dim lo As ListObject Dim ptCache As PivotCache Dim pt As PivotTable Dim CalcMode As XlCalculation With Application CalcMode = .Calculation .Calculation = xlCalculationManual .ScreenUpdating = False End With Set wb = ActiveWorkbook Set wsData = wb.Worksheets(1) With wsData lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column lastRow = .Cells(Rows.Count, 1).End(xlUp).Row Set lo = wsData.ListObjects.Add(xlSrcRange, .Cells(1).Resize(lastRow, lastCol), , xlNo) With lo .Name = "tblImportation" .TableStyle = "TableStyleLight8" End With End With wb.Worksheets.Add After:=Worksheets(Worksheets.Count) Set wsPT = ActiveSheet ActiveSheet.Name = "TCD" With wsPT Set ptCache = wb.PivotCaches.Create(xlDatabase, lo.Range, 3) Set pt = ptCache.CreatePivotTable(.Cells(1), "PT_1", , 3) With pt .ManualUpdate = True With .PivotFields("Colonne2") .Orientation = xlRowField .Caption = "Mois" End With With .PivotFields("Colonne7") .Orientation = xlDataField .Position = 1 .Function = xlSum .NumberFormat = "#,##0" .Caption = "Colonne7 " End With With .PivotFields("Colonne9") .Orientation = xlDataField .Position = 2 .Function = xlSum .NumberFormat = "#,##0" .Caption = "Colonne9 " End With .ManualUpdate = False .ManualUpdate = True .PivotFields("Mois").LabelRange.Offset(1, 0).Group Start:=True, End:=True, _ Periods:=Array(False, False, False, False, True, False, False) .RowAxisLayout xlTabularRow .TableStyle2 = "PivotStyleMedium2" .ManualUpdate = False End With End With Application.Calculation = CalcMode Set pt = Nothing Set ptCache = Nothing Set lo = Nothing Set wsPT = Nothing: Set wsData = Nothing Set wb = Nothing End Sub
Partager