Tableau croisé dynamique en macro enregistré

  • Initiateur de la discussion Initiateur de la discussion garrec
  • Date de début Date de début

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 !

garrec

XLDnaute Occasionnel
Bonjour dans le classeur ci joint j'ai enregistré une macro qui par du tableau dans la ligne 1000 (oui il est bas lol) et qui en A1 fait un TCD

Mais quand j'exécute la macro il me dit "argument ou appel de procedure incorrect". Et il me surligne en jaune ces ligne
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Rapprochement NE1!R1003C3:R1093C7", Version:=xlPivotTableVersion14). _
CreatePivotTable TableDestination:="Rapprochement NE1!R1C1", TableName:= _
"Tableau croisé dynamique12", DefaultVersion:=xlPivotTableVersion14

Je ne vois pas pourquoi??? 😀



Sinon mon code de macro enregistré donne ça

Code:
Sub Macro17()
'
' Macro17 Macro
'

'
    ActiveWindow.SmallScroll Down:=-33
    Range("D1035").Select
    ActiveWindow.SmallScroll Down:=-39
    Range("D1010").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Rapprochement NE1!R1003C3:R1093C7", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:="Rapprochement NE1!R1C1", TableName:= _
        "Tableau croisé dynamique12", DefaultVersion:=xlPivotTableVersion14
    Sheets("Rapprochement NE1").Select
    Cells(1, 1).Select
    ActiveWindow.SmallScroll Down:=-3
    With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
        "Code Bloom")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique12").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique12").PivotFields("F+"), "Nombre de F+", _
        xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique12").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique12").PivotFields("Bell"), "Nombre de Bell" _
        , xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique12").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique12").PivotFields("Mom"), "Nombre de Mom", _
        xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique12").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique12").PivotFields("Her"), "Nombre de Her", _
        xlCount
    With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
        "Nombre de Her")
        .Caption = "Somme de Her"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
        "Nombre de Mom")
        .Caption = "Somme de Mom"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
        "Nombre de Bell")
        .Caption = "Somme de Bell"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique12").PivotFields( _
        "Nombre de F+")
        .Caption = "Somme de F+"
        .Function = xlSum
    End With
 
    
    
End Sub

Thanks in advance
 

Pièces jointes

Re : Tableau croisé dynamique en macro enregistré

Bonjour,
Hello tototiti😀😀😀


Il est préférable également d'ôter la référence de version (Version:=xlPivotTableVersion14) pour le PivotCache et le PivotTable.

Si tu recrées ton TCD plusieurs fois la macro plantera. Voici de quoi faire sans plantage (au moins attendu...😀).

Avant de lancer ce code, détruit le "Tableau croisé dynamique 12" d'origine. La macro en recréera un qui s'appellera toujours "Montableau".

Code:
Sub Macro17()
'
' Macro17 Macro
'
'
    Dim PVT As PivotTable
    On Error Resume Next
    Set PVT = Sheets("Rapprochement NE1").PivotTables("Montableau")
    On Error GoTo 0
    If Not PVT Is Nothing Then
        PVT.ClearTable
    Else
        With ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="'Rapprochement NE1'!R1003C3:R1093C7")
            Set PVT = .CreatePivotTable(TableDestination:="'Rapprochement NE1'!R1C1", TableName:="Montableau")
        End With
    End If
    
    With PVT
        
        .AddDataField .PivotFields("F+"), "Nombre de F+", xlCount
        .AddDataField .PivotFields("Bell"), "Nombre de Bell", xlCount
        .AddDataField .PivotFields("Mom"), "Nombre de Mom", xlCount
        .AddDataField .PivotFields("Her"), "Nombre de Her", xlCount
        With .PivotFields("Code Bloom")
            .Orientation = xlRowField
            .Position = 1
        End With
        With .PivotFields("Nombre de Her")
            .Caption = "Somme de Her"
            .Function = xlSum
        End With
        With .PivotFields("Nombre de Mom")
            .Caption = "Somme de Mom"
            .Function = xlSum
        End With
        With .PivotFields("Nombre de Bell")
            .Caption = "Somme de Bell"
            .Function = xlSum
        End With
        With .PivotFields("Nombre de F+")
            .Caption = "Somme de F+"
            .Function = xlSum
        End With
    End With
End Sub

A+
 
Re : Tableau croisé dynamique en macro enregistré

Bonjour Hasco 🙂,
Re,

Bonnes remarques
J'ai essayé d'enregistrer la macro de création du TCD sur un XL2007 et :
il ne met pas les apostrophes, ce qui est déjà gênant
mais les références des plages, il les écrit en L1C1 (à la place de R1C1, il faut changer les L en R)
Que du progrès dans l'enregistreur, on dirait... 😉
En 2003 j'ai des apostrophes et des R à la place des L ce qui est mieux
 
Re : Tableau croisé dynamique en macro enregistré

Re,

@tototiti😀
ci-dessus nommé à dit:
Que du progrès dans l'enregistreur, on dirait... 😉

Disons,pour ne pas perdre patiente, que c'est un enfant terrible...! dont le père ne sait plus quoi faire pour qu'il s'arrange😀

A+++à toi
 
Re : Tableau croisé dynamique en macro enregistré

Bonjour Tasco

Je ne vois pas vraiment ce que tu veux dire mais j'ai l'impression qu'au bout d'un certain temps j'ai une erreur d'execution 1004 (Le nomdu champ de tableau croisé dynamique n'est pas valide ect ect) et pourtant je ne touche pas du tout à la macro initiale. C'est ce que sous entendais??

Pourrais tu m'expliquer pk stp?

Code:
Voila le code pour le TCD

Sub Macro8()
'
' Macro8 Macro
'
'Tableau croisé dynamique
'
    Range("C1003").Select
    ActiveCell.FormulaR1C1 = "Code NE"
    Range("C1002").Select
    Selection.ClearContents
    Range("D1008").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "'Rapprochement NE'!R1003C3:R1093C7", Version:=xlPivotTableVersion14). _
        CreatePivotTable TableDestination:="'Rapprochement NE'!R5C8", TableName:= _
        "Tableau croisé dynamique3", DefaultVersion:=xlPivotTableVersion14
    Sheets("Rapprochement NE").Select
    Cells(5, 8).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Code NE" _
        )
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveWindow.ScrollRow = 1002
    ActiveWindow.ScrollRow = 998
    ActiveWindow.ScrollRow = 988
    ActiveWindow.ScrollRow = 978
    ActiveWindow.ScrollRow = 967
    ActiveWindow.ScrollRow = 950
    ActiveWindow.ScrollRow = 936
    ActiveWindow.ScrollRow = 917
    ActiveWindow.ScrollRow = 900
    ActiveWindow.ScrollRow = 882
    ActiveWindow.ScrollRow = 863
    ActiveWindow.ScrollRow = 840
    ActiveWindow.ScrollRow = 817
    ActiveWindow.ScrollRow = 797
    ActiveWindow.ScrollRow = 775
    ActiveWindow.ScrollRow = 754
    ActiveWindow.ScrollRow = 732
    ActiveWindow.ScrollRow = 710
    ActiveWindow.ScrollRow = 681
    ActiveWindow.ScrollRow = 656
    ActiveWindow.ScrollRow = 625
    ActiveWindow.ScrollRow = 602
    ActiveWindow.ScrollRow = 579
    ActiveWindow.ScrollRow = 559
    ActiveWindow.ScrollRow = 536
    ActiveWindow.ScrollRow = 514
    ActiveWindow.ScrollRow = 491
    ActiveWindow.ScrollRow = 471
    ActiveWindow.ScrollRow = 445
    ActiveWindow.ScrollRow = 426
    ActiveWindow.ScrollRow = 404
    ActiveWindow.ScrollRow = 381
    ActiveWindow.ScrollRow = 361
    ActiveWindow.ScrollRow = 339
    ActiveWindow.ScrollRow = 321
    ActiveWindow.ScrollRow = 304
    ActiveWindow.ScrollRow = 290
    ActiveWindow.ScrollRow = 281
    ActiveWindow.ScrollRow = 271
    ActiveWindow.ScrollRow = 262
    ActiveWindow.ScrollRow = 253
    ActiveWindow.ScrollRow = 242
    ActiveWindow.ScrollRow = 233
    ActiveWindow.ScrollRow = 224
    ActiveWindow.ScrollRow = 213
    ActiveWindow.ScrollRow = 202
    ActiveWindow.ScrollRow = 194
    ActiveWindow.ScrollRow = 180
    ActiveWindow.ScrollRow = 169
    ActiveWindow.ScrollRow = 159
    ActiveWindow.ScrollRow = 146
    ActiveWindow.ScrollRow = 135
    ActiveWindow.ScrollRow = 123
    ActiveWindow.ScrollRow = 111
    ActiveWindow.ScrollRow = 100
    ActiveWindow.ScrollRow = 89
    ActiveWindow.ScrollRow = 77
    ActiveWindow.ScrollRow = 69
    ActiveWindow.ScrollRow = 61
    ActiveWindow.ScrollRow = 55
    ActiveWindow.ScrollRow = 49
    ActiveWindow.ScrollRow = 44
    ActiveWindow.ScrollRow = 40
    ActiveWindow.ScrollRow = 37
    ActiveWindow.ScrollRow = 35
    ActiveWindow.ScrollRow = 33
    ActiveWindow.ScrollRow = 32
    ActiveWindow.ScrollRow = 30
    ActiveWindow.ScrollRow = 29
    ActiveWindow.ScrollRow = 27
    ActiveWindow.ScrollRow = 26
    ActiveWindow.ScrollRow = 23
    ActiveWindow.ScrollRow = 20
    ActiveWindow.ScrollRow = 15
    ActiveWindow.ScrollRow = 12
    ActiveWindow.ScrollRow = 9
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 1
    ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique3").PivotFields("F+"), "Nombre de F+", _
        xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique3").PivotFields("Bell"), "Nombre de Bell" _
        , xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique3").PivotFields("Mom"), "Nombre de Mom", _
        xlCount
    ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
        PivotTables("Tableau croisé dynamique3").PivotFields("Her"), "Nombre de Her", _
        xlCount
    With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
        "Nombre de F+")
        .Caption = "Somme de F+"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
        "Nombre de Bell")
        .Caption = "Somme de Bell"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
        "Nombre de Mom")
        .Caption = "Somme de Mom"
        .Function = xlSum
    End With
    With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
        "Nombre de Her")
        .Caption = "Somme de Her"
        .Function = xlSum
    End With
    ActiveWorkbook.ShowPivotTableFieldList = False
End Sub
 
Re : Tableau croisé dynamique en macro enregistré

Re,

Je pense que c'est de ma macro dont tu parles!?

Je te disais de supprimer ton TCD existant avant de la lancer la première fois.
La macro que je t'ai donnée Créera un TCD nommé "Montableau" (tu peux changer le nom dans la macro si tu veux")

En début de macro Si un TCD nommé "Montableau" existe elle le nettoie sinon elle le recrée.
Ensuite les différents champs sont mis à jour.

A+
 
- 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

V
Réponses
69
Affichages
9 K
V
J
Réponses
4
Affichages
2 K
jmten92
J
S
Réponses
0
Affichages
510
said.aghzil
S
O
Réponses
2
Affichages
926
P
Réponses
6
Affichages
1 K
P
J
Réponses
5
Affichages
1 K
J
Retour