TCD plage variable avec VBA
Résolu
manueHN
-
Heliotte Messages postés 1491 Date d'inscription Statut Membre Dernière intervention -
Heliotte Messages postés 1491 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Vba tableau croisé dynamique plage variable
- Tableau croisé dynamique - Guide
- Exemple tableau croisé dynamique télécharger - Télécharger - Tableur
- Impossible d'afficher le rapport de tableau croisé dynamique sur un rapport existant ✓ - Forum Excel
- Tableau word - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide ✓ - Forum Excel
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
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
Félicitation et bonne continuation