Macro TCD

Bonjour j'aimerais savoir s'il est possible d'automatiser ma requête via une macro.

Ma requete est la suivante : Aller sur feuil2 créer TCD à partir des 2 premieres colonnes avec colonne A en filtre du rapport et colonne C en etiquette de ligne puis copier-coller le TCD en feuil1 en C30 par exemple..

Ma question peut paraitre bete mais quand j'enregistre une macro cela ne marche pas étant donné que le TCD change à chaque fois ainsi que le numéro de feuille.

Merci d'avance les amis.

Bonsoir l'ami,

Merci de joindre un fichier.

Cdlt

Salut,

Prendre des données de la feuil1 pour les amener sur la feuil2 pour ensuite les ramener sur la feuil1...

peut-être qu'il y a plus simple à faire pour simplifier le problème, enfin je l'espère

Bonsoir Frédéric38,

C'est pourquoi notre ami va joindre un fichier.

Nous comprendrons alors peut-être ses propos.

Cdlt.

Bonsoir Jean-Eric,

Je l'espère car je suis très interrogatif et curieux à la fois

Re,

Désolé du temps de réaction...

En réalité je pense que mon problème est simple.. mais je ne vois pas !

Voici le fichier (joint), en faite quand j'essaye de réactiver la macro j'ai un message d'erreur " erreur définie par l'application ou par l'objet"

J'ai essayé de refaire une macro avec le mode enregistrement et le tcd se crée normalement, peut-être que tu devrais recommencer ton enregistrement pour avoir une macro fonctionnelle ?

et si tu essayes de lancer la macro 2 fois à la suite cela fonctionne t'il ?

Merci


J'ai utilisé le code suivant mais il me marque erreur de compatibilité

Public Sub creer_TCD() 'Macro qui sert à créer automatiquement un TCD

Dim rng As Range

Dim ptCache As PivotCache ' Dim --> création de variables

Dim pt As PivotTable

Application.ScreenUpdating = False

Set rng = Range("C:C,D:D") 'Sélection cellules concernées

Set ptCache = ActiveWorkbook.PivotCaches.Create _

(SourceType:=xlDatabase, _

SourceData:=rng, _

Version:=xlPivotTableVersion12)

Worksheets.Add

Set pt = ptCache.CreatePivotTable _

(TableDestination:=[C3], _

TableName:="TCD_1", _

DefaultVersion:=xlPivotTableVersion12) 'Nom et destination du TCD (ici le TCD s'appelle TCD_1 et on le place en C3

pt.ManualUpdate = True

pt.AddFields RowFields:="nom client", PageFields:="N*dossier" 'Paramètre TCD :filtre du rapport et étiquette de ligne

pt.ManualUpdate = False

Set pt = Nothing

Set ptCache = Nothing

Set rng = Nothing

End Sub

très certainement ce qui pose souci c'est que la macro "crée" un tableau dynamique et le nomme tableau dynamique 2.

Quand tu relances ta macro une deuxième fois, il y a forcément une erreur car tu lui redemande de créer un TCD portant le nom tableau dynamique 2

Bonjour,

Ci-dessous ta procédure révisée :

Cdlt.

Option Explicit
Option Private Module
Public Sub Creer_TCD()
Dim ws As Worksheet
Dim ptCache As PivotCache
Dim pt As PivotTable

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
    End With

    On Error Resume Next
    Worksheets("TCD").Delete
    On Error GoTo 0

    Application.DisplayAlerts = False

    Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, [Tableau1[#ALL]], 3)

    ActiveWorkbook.Worksheets.Add after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "TCD"

    Set pt = ptCache.CreatePivotTable([A1], "TCD1", , 3)
    pt.ManualUpdate = True
    pt.AddFields RowFields:="nom client", PageFields:="N* dossier"
    ' code
    ' code
    ' code
    pt.ManualUpdate = False

    Set pt = Nothing
    Set ptCache = Nothing
    Set ws = Nothing

End Sub

Parfait Jean Eric !

C'est exactement ça.. Dernière petite question, où est ce que dans le code je peux modifier la destination du TCD ? Si jamais je veux le coller en feuil1 en Cellule C30 ?

Merci les gars ! Vous êtes géniaux !

Re,

Tu ajoutes ceci en fin de code après 'pt.ManualUpdate=False'

pt.TableRange2.Copy
    Worksheets("Feuil1").Range("C30").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False

Merci Jean-Eric !!

et merci aussi à Fred !

Merci encore et à bientot !

Rechercher des sujets similaires à "macro tcd"