VBA Excel: Dernières ligne/colonne dans code pour TCD
Lena
-
Lena -
Lena -
Bonjour,
Je travaille sur Excel 2013, et j'ai souhaité automatiser la création d'un tableau croisé dynamique (T.C.D.) à l'aide de VBA. Pour cela, je me suis appuyé sur l'enregistreur de macros qui m'a produit un code intéressant:
Je me tourne vers vous car j'aimerais simplement savoir comment adapter ce code à des données source pouvant avoir beaucoup plus de lignes et colonnes et non 13 et 6 comme dans cet exemple sans avoir à le préciser à chaque fois, autrement dit, y'a t-il une possibilité qu'il cherche tout seul les dernières lignes et colonnes? Quelqu'un aurait-il une piste?
Lien vers le fichier: https://www.cjoint.com/c/JGntI2srefN
Je vous en remercie par avance!
Je travaille sur Excel 2013, et j'ai souhaité automatiser la création d'un tableau croisé dynamique (T.C.D.) à l'aide de VBA. Pour cela, je me suis appuyé sur l'enregistreur de macros qui m'a produit un code intéressant:
Sub Macro2()
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Feuil1!R1C1:R13C6", Version:=xlPivotTableVersion15).CreatePivotTable TableDestination:="TT!R1C1", TableName:="Tableau croisé dynamique1", DefaultVersion:=5
Sheets("TT").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Ville")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Nom")
.Orientation = xlRowField
.Position = 2
End With
End Sub
Je me tourne vers vous car j'aimerais simplement savoir comment adapter ce code à des données source pouvant avoir beaucoup plus de lignes et colonnes et non 13 et 6 comme dans cet exemple sans avoir à le préciser à chaque fois, autrement dit, y'a t-il une possibilité qu'il cherche tout seul les dernières lignes et colonnes? Quelqu'un aurait-il une piste?
Lien vers le fichier: https://www.cjoint.com/c/JGntI2srefN
Je vous en remercie par avance!
1 réponse
Bonjour,
une exemple:
A adapter
une exemple:
Sub Creation_TCD()
Call DeletePivotTable
adr = Sheets("feuil1").UsedRange.Address
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Feuil1!" & Sheets("feuil1").UsedRange.Address, Version:=xlPivotTableVersion15).CreatePivotTable _
TableDestination:="TT!R1C1", TableName:="Tableau croisé dynamique1", DefaultVersion:=5
Sheets("TT").Select
Cells(1, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Ville")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Nom")
.Orientation = xlRowField
.Position = 2
End With
End Sub
'https://www.developpez.net/forums/d1423895/logiciels/microsoft-office/excel/vba-supprimer-tcd/
'Philippe Tulliez
'Rédacteur
Sub DeletePivotTable()
Dim sht As Worksheet, pvt As PivotTable, Response As Byte, msgResponse As String
Set sht = ThisWorkbook.Worksheets("TT")
For Each pvt In sht.PivotTables
With pvt
msgResponse = msgResponse & .Name & vbCrLf & "Cellules : " & .TableRange2.Address
Response = MsgBox(msgResponse, vbYesNo + vbExclamation, "Suppression tableau croisés dynamique")
If Response = vbYes Then .TableRange2.Delete Shift:=xlToLeft ' ou Shift:=xlUp
End With
Next
End Sub
A adapter
Je ne vois pas le bouton pr marquer comme résolu, mais c'est bien le cas, merci encore!