Pivot table Excel VBA

Bonjour à tous, je débute en vba et j'ai un petit problème : j'ai une macro qui m'as été transmis qui me permet de copié collé des tcd à la suite sur une nouvelle feuille. Mon problème est que c'est tcd possède la même forme. j'aimerais donc copié l'en-tête du premier TCD mais que le 2ème tableau ne prenne que mes intitulés de lignes et leurs valeurs (sans l'en-tete du 2ème Tcd) Merci pour votre aide.

voici mon code :

<Sub Copie_tcd()
'
' Copie_tcd Macro
'
Dim DerLig As Long, Nb As Long, A As Long
Dim T As PivotTable, Rg As Range
' efface la feuille 2 si rempli pour actualiser
Sheets("Test Import").Cells.Clear
'Feuil1 = endroit où sont les TDC
With Worksheets("TCD pour import")
'Nombre de TDC dans la feuille
Nb = .PivotTables.Count
'pour boucler sur tous les TDC de la feuille
For A = 1 To Nb
'Mettre des 0 dans les cellules vides du TDC
.PivotTables(A).NullString = "-"
'Détermine la plage de cellules occupée seulement
'par les données sans les étiquettes de colonnes
'ou de lignes
Set Rg = .PivotTables(A).TableRange1
'Endroit où seront copiées les données
With Worksheets("Test Import")
'Si la feuil2 est totalement vide, la ligne suivante
'Provoque une erreur d'où On Error resume next
On Error Resume Next
'Trouve la dernière ligne vide dans la feuil2
DerLig = .Cells.Find("*", LookIn:=xlFormulas, _
SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'Trouve la dernière ligne vide dans la feuil2
If Err <> 0 Then
DerLig = 1
Err = 0
End If
'La copie elle-même
Rg.Copy .Range("A" & DerLig)
Range("b3:b2000").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Next
End With
End Sub>

Bonjour et bienvenue,
Peux-tu joindre un fichier à ta demande ?
L'utilisation de VBA avec ta version Excel paraît inappropriée (Power Query ?).
Cdlt.

Merci pour le retour rapide.

Oui voici un ficher exemple : je souhaite que l'entête eco soit exclu du deuxieme tcd lorsque je colle a la suite sachant que les tcd peuvent varier en nombre de ligne (je l'ai pris en compte dans mon code) merci :)

14exemple.xlsx (27.09 Ko)

Bonjour à tous

Un TCD ne doit JAMAIS être construit sur une plage finie mais sur un tableau structuré.

Si tu ne copies qu'une partie du TCD ce n'est plus un TCD mais une plage de cellules que tu copie donc le code ne peut fonctionner.

Par ailleurs il suffit d'un seul TCD avec le champ Indicateur placé en étiquette de lignes pour obtenir l'équivalent de ce que tu demandes donc je ne vois pas l'intérêt de cette manip.

Sinon explique plus clairement le contexte...

image

Je comprend, enfaite il s'agit d'un fichier pro donc je ne peux pas trop le partager..., mais les données sont extraites d'une BDD, l'extraction se fait par des tcd (sauf que j'obtient plusieurs etiquettes de ligne [eco, EURL,...] ) et j'obtient 2 tcd : 1 en fonction du CA et 1 en fonction du nombre de contrat je souhaite juste les copié collé a la suite sachant qu'ils possèdent les memes etiquettes de lignes donc il me suffit de l'avoir une fois puis de copié les lignes des tcd a la suite, sachant que le nombre de ligne peut varier. Je ne sais pas si un peu plus clair ?

merci beaucoup en tous cas

RE

Non cela n'éclaire pas sur la finalité réelle et opérationnelle

On avait compris la logique mais, d'une part, j'ai montré que selon cet exemple cela ne sert à rien puisqu'on peut obtenir le même résultat dans un unique TCD et que copier de portions de TCD ne peut se faire qu'en copier/coller valeurs pour donner simplement une plage non dynamique

Par ailleurs comme suggéré par Jean-Eric si on extrait d'une base externe, le résultat peut être obtenu par PowerQuery

bonjour, j'ai les mêmes idées que Chris78.

il faut faire un beau TCD (il y en a 2 maintenant sur la feuille 2) est puis on peut le copier et coller de telle manière qu'il n'a plus le fonctionnalité d'un TCD sur la feuille3

9exemple-10.xlsb (38.55 Ko)

Enfaite on est en train d'implémenter une base de données extérieur il me faut donc copié et collé les tcd en brut pour l'envoyer sous forme de tableau final que les administrateur implémenteront dans la bdd. C'est pour cela que je réalise cette exercice

le but final, c'est un tableau comme ceci et ne pas un TCD ?

image

Oui c'est ca, je souhaiterais obtenir ce tableau ! :)

bonjour,

Vous préparez le layout du TCD comme vous le voulez voir et puis la macro le copie et colle vers AA1 et donne cette plage le nom "Mon_TCD_copie". Plus tard cette plage, vous pouvez la transferrer vers l'administrateur.

9exemple-10.xlsb (36.02 Ko)

Merci BsAlv, mais si je veux copier maintenant à partir de AA5 et le mettre en dessous en A19 puis les coller en brut dans une nouvelle feuille ?

comme ça ?

20exemple-10.xlsb (37.04 Ko)

Oui c'est exactement ca ! merci beaucoup à tous :)

Rechercher des sujets similaires à "pivot table vba"