Bonjour à tous,
A l'aide d'une macro en VBA, je souhaiterais copier des données provenant d'un pivot situé dans un onglet (PivotQ) vers un autre onglet (Repartition).
L'idée est de prendre chaque valeur une par une d'ou les boucles For (les valeurs du pivot sont exprimées en fonction des jours de la semaine et des heures) et de les copier dans l'autre onglet les unes en dessous des autres dans la colonne C.
Voici le code ci dessous.
Aparemment j'aurais un probleme dans la declaration de la variable TableItem puisque j'ai l'erreur 1004 ' Application-defined or object-defined error' au niveau de la ligne Set TableItem=...
Et j'ai l'impression que la facon de sélectionner mes onglets n'est pas la bonne aussi :/ !!
Si quelqu'un a une idée pour résoudre mon problème, je suis preneur.
Merci d'avance
Code :
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim TableItem As PivotItem
Dim pvt As PivotTable
'Variables pour le pivot de l'onglet PivotQ
Dim EventHour As Integer
Dim EventDay As Integer
'variables pour l'onglet Repartition
Dim rowQ As Integer
Dim columnQ As Integer
'Pour commencer a la deuxieme ligne
rowQ = 1
'la colonne reste toujours la meme
columnQ = 3
Application.Calculation = xlManual
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
If ws.AutoFilterMode Then
ws.AutoFilterMode = False
End If
Next ws
'De lundi a dimanche
For EventDay = 1 To 7
'Durant toute la journee
For EventHour = 0 To 23
'selection de l'onglet PivotQ
Sheets("PivotQ").Visible = xlSheetVisible
Sheets("PivotQ").Activate
' Definition de pvt comme le pivot de l'onglet PivotQ
Set pvt = Sheets("PivotQ").PivotTables(1)
'Selectionner de premier item du pivot
Set TableItem = pvt.GetPivotData("Min spend on Queing", A7, "LC Eventhour", EventHour, "LC Day", EventDay)
'copier cette item
TableItem.Copy
'selection d'onglet Repartition
Sheets("Repartition").Visible = xlSheetVisible
Sheets("Repartition").Activate
rowQ = rowQ + 1
'selection de la premiere cellule de la colonne Queue
Cells(rowQ, columnQ).Select
'Coller l'item
TableItem.Paste
Next EventHour
'passer une ligne
rowQ = rowQ + 1
Next EventDay
End Sub
A l'aide d'une macro en VBA, je souhaiterais copier des données provenant d'un pivot situé dans un onglet (PivotQ) vers un autre onglet (Repartition).
L'idée est de prendre chaque valeur une par une d'ou les boucles For (les valeurs du pivot sont exprimées en fonction des jours de la semaine et des heures) et de les copier dans l'autre onglet les unes en dessous des autres dans la colonne C.
Voici le code ci dessous.
Aparemment j'aurais un probleme dans la declaration de la variable TableItem puisque j'ai l'erreur 1004 ' Application-defined or object-defined error' au niveau de la ligne Set TableItem=...
Et j'ai l'impression que la facon de sélectionner mes onglets n'est pas la bonne aussi :/ !!
Si quelqu'un a une idée pour résoudre mon problème, je suis preneur.
Merci d'avance
Code :
Private Sub CommandButton1_Click()
Dim wb As Workbook
Dim ws As Worksheet
Dim TableItem As PivotItem
Dim pvt As PivotTable
'Variables pour le pivot de l'onglet PivotQ
Dim EventHour As Integer
Dim EventDay As Integer
'variables pour l'onglet Repartition
Dim rowQ As Integer
Dim columnQ As Integer
'Pour commencer a la deuxieme ligne
rowQ = 1
'la colonne reste toujours la meme
columnQ = 3
Application.Calculation = xlManual
Application.ScreenUpdating = False
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
If ws.AutoFilterMode Then
ws.AutoFilterMode = False
End If
Next ws
'De lundi a dimanche
For EventDay = 1 To 7
'Durant toute la journee
For EventHour = 0 To 23
'selection de l'onglet PivotQ
Sheets("PivotQ").Visible = xlSheetVisible
Sheets("PivotQ").Activate
' Definition de pvt comme le pivot de l'onglet PivotQ
Set pvt = Sheets("PivotQ").PivotTables(1)
'Selectionner de premier item du pivot
Set TableItem = pvt.GetPivotData("Min spend on Queing", A7, "LC Eventhour", EventHour, "LC Day", EventDay)
'copier cette item
TableItem.Copy
'selection d'onglet Repartition
Sheets("Repartition").Visible = xlSheetVisible
Sheets("Repartition").Activate
rowQ = rowQ + 1
'selection de la premiere cellule de la colonne Queue
Cells(rowQ, columnQ).Select
'Coller l'item
TableItem.Paste
Next EventHour
'passer une ligne
rowQ = rowQ + 1
Next EventDay
End Sub