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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :

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
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.