TCD plage variable avec VBA

Résolu/Fermé
manueHN - 10 déc. 2012 à 17:52
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 - 11 déc. 2012 à 17:41
Bonjour,

Encore une fois je reviens vers le forum !
Je veux creer un tableau croise dynamique grace a VBA car mon fichier de base vari tous les mois (le nombre de lignes)

J'ai fait plusieurs tentatives mais a chaque fois, cela beuggue quelque part.

Ma derniere est la suivante :
Option Explicit

Sub TCD_recap()

Dim plage As Range
Dim num_ligne As Long
Dim DerLig As Long


num_ligne = Range("A1").CurrentRegion.Rows.Count
DerLig = num_ligne - 1

With Sheets("base valabs").Select
Set plage = .Range(.Cells(1, 1), .Cells(DerLig, 14))
End With
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
plage).CreatePivotTable TableDestination:=ActiveSheet.Range("A3"), TableName:="TCD_recap"

End Sub

Lors de l'execution, excel bloque ici :

Set plage = .Range(.Cells(1, 1), .Cells(DerLig, 14))

Je ne comprends pas pourquoi ! Aidez-moi s'il vousp lait, je vais m'arracher les cheveux :(

Je peux vous donner plus d'information si necessaire
Merci d'avance

A voir également:

11 réponses

J'ai reussssi !!!!
Il ne me reste qu'un soucis de format de TCD mais pour le moment, je vais me contenter de ca :)

Je mets mon code si dessous si ca interesse quelqu'un :

Option Explicit

Sub TCD_recap()

Dim plage As Range
Dim DerLig As Long
Dim NomFeuille As String

NomFeuille = "base valabs"
DerLig = Worksheets(NomFeuille).Range("A" & Rows.Count).End(xlUp).Row

'Selection de la plage source presente sur l'onglet "base valabs"
Set plage = Worksheets(NomFeuille).Range(Cells(1, 1), Cells(DerLig, 14))
Sheets.Add.Name = "recap"


'Creation du TCD
ActiveSheet.PivotTableWizard _
SourceType:=xlDatabase, _
SourceData:=plage, _
TableDestination:=Range("A3"), _
TableName:="TCD_recap"


'Mise en forme
With ActiveSheet.PivotTables("TCD_recap")
'Ajoute un champ de lignes nommé "CZTDCS".
.AddFields RowFields:="CZTDCS"
'Définit l'orientation du champ nommé "CZPN" en tant que Donnée.
.PivotFields("CZPN").Orientation = xlDataField
'Définit l'orientation du champ nommé "VALEURECAR" en tant que Donnée.
.PivotFields("VALEURECAR").Orientation = xlDataField
'Définit l'orientation du champ nommé "VALABS" en tant que Donnée.
.PivotFields("VALABS").Orientation = xlDataField

End With


End Sub

Encore merci a ce forum d'exister !
Manue
5
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
11 déc. 2012 à 17:41
Bonsoir manueHN,
Félicitation et bonne continuation
0