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

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