minimoack | Bonjour à tous !!
Bon, je tourne en rond depuis quelque temps maintenant donc je m'en remets à vous pour m'éclairer... J'ai un fichier excel Fic1. Si je l'ouvre, il me demande d'ouvrir grâce à une macro un autre fichier excel qui contient un tableau, qu'on nommera fic2.
Dans ce fic2, toujours grâce à la macro de fic1, je crée un graphique croisé dynamique dans une nouvelle feuille. Voici mon code avec des msgBox pour le suivi de l'exéc :
Code :
- Private Sub Workbook_Open()
-
- Dim fd As FileDialog
- Dim UserClickedOK As Boolean
- Dim chemin As String
- Dim nbRows As Long
- Dim nbCol As Long
- Dim wb1 As Workbook ' Classeur 1, qui contient la macro, donc fic1
- Dim wb2 As Workbook ' fichier qui contient les données, donc fic2
- Dim ws1 As Worksheet ' feuille qui contient les données dans fic2
- Dim ws2 As Worksheet ' feuille qui va contenir le graphe dans fic2
-
- Set wb1 = ActiveWorkbook
-
- ' On récupère tout d'abord le chemin complet du fichier sur lequel on veut faire des stats
- Set fd = Application.FileDialog(msoFileDialogFilePicker)
- UserClickedOK = fd.Show
-
- If UserClickedOK = True Then
- chemin = fd.SelectedItems.Item(1)
- Workbooks.Open chemin
- Set wb2 = ActiveWorkbook
- Cells(2, 1).Select
-
- 'On trouve la dernière ligne et la dernière colonne
- nbRows = 2
- Do While Not IsEmpty(Range("A" & nbRows))
- nbRows = nbRows + 1
- Loop
-
- nbCol = Cells(4, Cells.Columns.Count).End(xlToLeft).Column
-
- Set ws1 = wb2.ActiveSheet
- Set ws2 = wb2.Sheets.Add
-
- wb2.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
- ws1.Name & "!R2C1:R71C8", Version:=xlPivotTableVersion14).CreatePivotTable _
- TableDestination:=ws2.Name & "!R1C1", TableName:="Tableau croisé dynamique1", _
- DefaultVersion:=xlPivotTableVersion14
- wb2.Sheets(ws2.Name).Select
- Cells(1, 1).Select
- wb2.Activate
- wb2.ActiveSheet.Shapes.AddChart.Select
- wb2.ActiveChart.ChartType = xlColumnClustered
-
- wb2.ActiveChart.SetSourceData Source:=Range(ws2.Name & "!$A$1:$C$18" )
- wb2.ActiveSheet.Shapes("Graphique 1" ).IncrementLeft 264
- wb2.ActiveSheet.Shapes("Graphique 1" ).IncrementTop 14.25
- MsgBox "1"
- wb2.ws2.PivotTables("Tableau croisé dynamique1" ).AddDataField ActiveSheet. _
- PivotTables("Tableau croisé dynamique1" ).PivotFields("Libellé" ), _
- "Nombre de Libellé", xlCount
- MsgBox "2"
- With wb2.ws2.PivotTables("Tableau croisé dynamique1" ).PivotFields("Statut" )
- .Orientation = xlRowField
- .Position = 1
- End With
- wb2.ActiveChart.ChartType = xl3DPie
- wb2.ws2.ShowPivotTableFieldList = False
-
- wb2.ws2.ChartObjects("Graphique 1" ).Activate
- wb2.ActiveChart.SeriesCollection(1).Select
- wb2.ws2.ActiveChart.ApplyLayout (1)
-
- Else
- chemin = ""
- MsgBox "Le chemin n'est pas valide"
- End If
-
- End Sub
|
Ce qui est en rouge, bah... ça fonctionne pas...
Citation :
Erreur '1004' : erreur définie par l'application ou par l'objet
|
Quand j'ai enregistré la macro, il me met juste ActiveSheet.PivotTables, j'ai précisé le wb et le ws pour être plus précise, mais même si je les enlève, ça bugg.. No se...
une idée ?
|