Macro Enregistrement automatique d'un TCD

badoum66

XLDnaute Nouveau
Bonsoir,

J'ai effectué une macro d'un TCD en enregistrement automatique. le problème qui se pose est que la plage de donnée sera la même pour les prochains TCD. Donc risque de perte d' infos si mon prochain fichier à un nombre supérieur de ligne. Il y a la possibilité de sélectionner toutes la feuille en plage de donnée mais en faisant cela mon fichier à une taille de 5mo et je me retrouve avec une ligne vide.
Peux t'on modifier la plage de donnée de la macro afin que celle ci ne selectionne que les cellules pleines.

Merci

Voiçi la macro
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 25/04/2008 par tintin
'

'
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R2C1:R119C57").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Motif Except.").Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Échéance"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddFields RowFields:= _
Array("Échéance", "Données"), ColumnFields:="Motif Except."
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"N° Pièce")
.Orientation = xlDataField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Montant Total HT Facture").Orientation = xlDataField
ActiveWorkbook.ShowPivotTableFieldList = True
End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : Macro Enregistrement automatique d'un TCD

Bonsoir,

En supposant tes titres de A2 à BE2
tu ajoutes ceci en début de code :

Code:
Range("A2:BE:" & [A65000].End(xlUp).Row).Name = "plage"

et tu remplaces :

Code:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R2C1:R119C57").........

par :

Code:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="plage").........
 

badoum66

XLDnaute Nouveau
Re : Macro Enregistrement automatique d'un TCD

Après modif, il y a une erreur la methode range de l'objet worksheet a échouée.

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 25/04/2008 par tintin

Range("A2:BE:" & [A65000].End(xlUp).Row).Name = "plage"
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="plage").CreatePivotTable TableDestination:="", TableName:= _
"Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Motif Except.").Subtotals = Array(False, False, False, False, False, False, False, _
False, False, False, False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Échéance"). _
Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
False, False)
ActiveSheet.PivotTables("Tableau croisé dynamique2").AddFields RowFields:= _
Array("Échéance", "Données"), ColumnFields:="Motif Except."
With ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"N° Pièce")
.Orientation = xlDataField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"Montant Total HT Facture").Orientation = xlDataField
ActiveWorkbook.ShowPivotTableFieldList = True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 998
Messages
2 084 457
Membres
102 581
dernier inscrit
Michou