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
| Sub CopyTCD()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
'Je prend en compte qu'il existe déjà un tableau "Tableau1" dans ma feuille
Range("Tableau1[[#Headers],[Customer]]").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.ClearContents
' J'efface mon tableau
Col = "D" ' colonne de la donnée non vide à tester
NumLig = 3
Range(Cells(4, 2), Cells(500, 7)).ClearContents 'J'efface toutes les données
With Sheets("GM ")
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 22 To NbrLig
If .Cells(Lig, Col).Value = Cells(2, 2).Value Then 'Une liste déroulante dans B2 me permet de choisir le mois
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste 'Je copie mon TCD en fonction du mois choisi
End If
Next
End With
'Creation d'un Tableau
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$B$3:$G$99"), , xlYes).Name = _ 'Bug si il y a plus de 99 lignes dans mon TCD mais si je change 99 en autre chose cela ne fonctionne plus
"Tableau1"
Range("Tableau1[[#Headers],[Colonne1]]").Select
ActiveCell.FormulaR1C1 = "Customer" 'Je renome mais colonnes
Range("Tableau1[[#Headers],[Colonne2]]").Select
ActiveCell.FormulaR1C1 = "BU"
Range("Tableau1[[#Headers],[Colonne3]]").Select
ActiveCell.FormulaR1C1 = "Month"
Range("Tableau1[[#Headers],[Colonne4]]").Select
ActiveCell.FormulaR1C1 = "Income"
Range("Tableau1[[#Headers],[Colonne5]]").Select
ActiveCell.FormulaR1C1 = "COST"
Range("Tableau1[[#Headers],[Colonne6]]").Select
ActiveCell.FormulaR1C1 = "GM"
'Tri du Tableau en fonction du revenu (décroissant)
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Top 10 Monthly Analyse").ListObjects("Tableau1"). _
Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Top 10 Monthly Analyse").ListObjects("Tableau1"). _
Sort.SortFields.Add Key:=Range("Tableau1[[#All],[Income]]"), SortOn:= _
xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Top 10 Monthly Analyse").ListObjects("Tableau1" _
).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Filtre sur les TOP 10 de clients
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=4, Criteria1:= _
"10", Operator:=xlTop10Items
End Sub |
Partager