Bonjour à tous !
Je rencontre un problème actuellement au boulot. Je récupère le programme de quelqu'un qui n'est plus là actuellement. Son programme "importe" une base de données (excel) existante et placée dans le même dossier que le fichier macro et il sort, à l'aide boutons (thématiques on va dire), plusieurs tableaux croisés dynamiques.
Je connais un peu le langage vba mais pas bien la construction de tcd.
Là où je rencontre un problème, c'est qu'il m'affiche un bug :
"Erreur d'exécution '13' :
Incompatibilité de type"
pour la ligne :
Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)
(je vais poser le code un peu plus bas)
Je précise que le programme pour la base de données de l'année précédente et que celle de cette année (celle qui ne marche pas) est construite exactement pareil et selon les demandes du programme (même nombre et non de variable, NR pour valeur manquantes, ...). Cette année compte 2 observations en plus.
Enfin bref, j'arrive à me débrouiller habituellement mais là je suis un peu perdu.
Le début du 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
| Option Explicit
Dim wsData As Worksheet, wsPT As Worksheet
Dim rngData As Range
Dim ptCache As PivotCache
Dim pt As PivotTable
Dim NomTable As String
' TCDs sur la page Généralité : Les informations générales...
Sub Generalite_Bouton2_Cliquer()
Worksheets("Données1").Visible = True
Application.DisplayAlerts = False
Worksheets("Generalite").Visible = True
Application.ScreenUpdating = False
'Set pt = Nothing
'Set ptCache = Nothing
'Set rngData = Nothing
'Set wsPT = Nothing
'Set wsData = Nothing
Set wsData = Worksheets("Données1")
Set rngData = wsData.Cells(1).CurrentRegion
Set wsPT = Worksheets("Generalite")
'Suppression de tous les TCD existants dans la feuille
For Each pt In wsPT.PivotTables
pt.TableRange2.Clear
Next pt
'création du TCD
With wsPT
Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)
With Sheets("Generalite").Activate
Range("B1") = "Tableaux croisés dynamiques concernant les informations générales sur les diplômés"
Range("B1").Font.Size = 26
Range("B1").Font.Italic = True
Range("B1").Font.Bold = True
Range("B1").Font.Name = "Times New Roman"
Range("B1").Font.Underline = xlUnderlineStyleSingle
End With
Set pt = ptCache.CreatePivotTable(wsPT.Range("B12"), "TCD_1", , 4)
With Sheets("Generalite").Activate
Range("B10") = "Diplômés selon le genre "
Range("B10").Font.Size = 18
Range("B10").Font.Italic = True
Range("B10").Font.Name = "Arial"
End With |
Le code continue en incluant les TCDs. N’hésitez pas à me poser d'autres questions car je me doute que je ne vous ait pas fourni toutes les explications.
Partager