TCD, probléme xlpivot table

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bendouch71

XLDnaute Nouveau
J'ai créé une macro pour automatiser l'édition d'un TCD .
Je lance la macro a partir d'un bouton.
Cela marche des fois et certaines fois j'ai un message d'erreur :"erreur de compilation", j'ai testé sur un autre pc et cela fonctionne , en gardant les memes données sources. C'est bizarre; voici mon code :

Code:
Sub Macro8()
Dim lign As Variant
Dim col As Variant
Dim dernlign As Variant
Dim ligntcd As String
Dim ligntcd2 As Integer
Dim coltcd As String
Dim coltcd2 As Integer
Dim zonetcd As Range
' on réinitialise les filtres pour le smauvaises surprises
Dim ws As Worksheet
For Each ws In Worksheets
     If ws.FilterMode Then ws.ShowAllData
Next ws
' on cherche la derniére ligne des donénes sources
dernlign = Worksheets("Liste VH").Range("A1").End(xlDown).Address
dernlign = Worksheets("Liste VH").Range(dernlign).Row
col = 15
 Sheets("TCD").Select
' suppression de l'éventuel ancien TCD pour pouvori l'écraser
Cells.Select
    Selection.ClearContents
        
    Sheets("TCD").Select
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "'Liste VH'!R1C1:R" & dernlign & "C11").CreatePivotTable TableDestination:= _
        "TCD!R3C1", TableName:="Tableau croisé dynamique10", _
        DefaultVersion:=xlPivotTableVersion10
    With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields("Nouv. Affect.")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
        "type" & Chr(10) & "mat" & Chr(10) & "CDP")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique10").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique10").PivotFields("NOVH"), "Somme de NOVH" _
        , xlSum
    ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotSelect "", _
        xlDataAndLabel, True
    Range("A3").Select
    ActiveSheet.PivotTables("Tableau croisé dynamique10").PivotFields( _
        "Somme de NOVH").Function = xlCount
End sub

Si quelqu'un pouvait m'éclairer dessu. merci
 
Dernière édition:
Re : TCD, probléme xlpivot table

Bonjour,

Ca peut etre un probleme de version.

Mais on ne connait pas la version sur laquelle ça fonctionne, ni la version sur laquelle ça plante, ni à quelle ligne ...
Avec quelques données pour mieux comprendre ce que ça doit faire, ce serait plus facile ...
 
Re : TCD, probléme xlpivot table

Quelques précisions :
En fait mon fichier est constitué de 8 feuilles dont une où j'ai une liste de matériels de transport. Dans celle -ci, on a notamment les informations suivantes :
- numéro du matériel (qui est unique évidemment)
- type de matériel (Camion, grue, remorque...)
- affectation ( Agence Nord, Agence Sud...)

Le but étant d'effectuer un tableau croisé dynamique récapitulant le nombre de véhicule par agence et par type : combien j'ai de camions pour l'agence nord ce mois-ci?

La liste de matériels évoluant chaque mois j'ai donc une variable pour déterminer la plage des données sources.

Cette macro est lancé à partir d'un bouton et ne fonctionne pas apparement sous excel 2000.
j'ai l'erreur suivante"variabel non définie" et en surbrillance j'ai
Code:
DefaultVersion[B]:=xlPivotTableVersion10[/B]

j'ai réalisé ce code aprés avoir enregistrer une macro car je ne suis pas expert.
Avez vous des idées?
merci
PS : jai ajouté des commentaires sur mon code au dessus.
 
Dernière édition:
Re : TCD, probléme xlpivot table

Bonsoir,

As tu testé en enlevant : DefaultVersion:=xlPivotTableVersion10 ?
L'argument DefaultVersion n'existe pas en Excel 2000

Avec ce que j'ai compris, tu peux un peu optimiser comme suit :

Sub Macro8()
For Each ws In Worksheets
If ws.FilterMode Then ws.ShowAllData
Next ws
dernlign = Worksheets("Liste VH").Range("A65536").End(xlUp).Row
Sheets("TCD").Cells.Clear
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"'Liste VH'!R1C1:R" & dernlign & "C11").CreatePivotTable TableDestination:= _
"TCD!R3C1", TableName:="Tableau croisé dynamique10"

With Sheets("TCD").PivotTables("Tableau croisé dynamique10").PivotFields("Nouv. Affect.")
.Orientation = xlColumnField
.Position = 1
End With
'With Sheets("TCD").PivotTables("Tableau croisé dynamique10").PivotFields("type" & Chr(10) & "mat" & Chr(10) & "CDP")
' .Orientation = xlRowField
' .Position = 1
'End With
Sheets("TCD").PivotTables("Tableau croisé dynamique10").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique10").PivotFields("NOVH"), "Somme de NOVH", xlSum
Sheets("TCD").PivotTables("Tableau croisé dynamique10").PivotSelect "", xlDataAndLabel, True
Sheets("TCD").PivotTables("Tableau croisé dynamique10").PivotFields("Somme de NOVH").Function = xlCount
End Sub

Je n'ai pas compris ce que devait faire : "type" & Chr(10) & "mat" & Chr(10) & "CDP"
 
Dernière édition:
Re : TCD, probléme xlpivot table

Merci de ta réponse.
en effet certaines choses ne sont pas gérés par excel 2000.
Tout fonctionne bien sous Excel 2003 en revanche.
Je vais adapter le code pour voir si ça fonctionne bien.

Je n'ai pas compris ce que devais faire : "type" & Chr(10) & "mat" & Chr(10) & "CDP"

C'est l'intitulé d'une colonne en fait, le type de matériel correspondant au centre de profit (CDP, c'est du controle de gestion)
Dans cette colonne figure le type de matériel : exemple CH pour chariot, CAM pour camion.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
330
Réponses
7
Affichages
173
Retour