Création automatique d'un TCD
Bonjour le forum,
Je cherche à automatiser la création d'un TCD.
Mon souci, c'est que par défaut, la création de la nouvelle feuille va nommer cette dernière "FeuilX" mais j'aimerai bien la renommer en "Synthese" pour que le code puisse être utilisé ailleurs même s'il existe déjà une "FeuilX" comme dans le code.
Comment forcer le nom de la nouvelle feuille ?
Merci pour votre aide
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Donnees!R1C1:R5000C6", Version:=6).CreatePivotTable TableDestination:= _
"Feuil1!R3C1", TableName:="Tableau croisé dynamique1", DefaultVersion:=6
Sheets("Feuil1").Select
Cells(3, 1).Select
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Code"), "Somme de Code", _
xlSum
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("error_nr"), _
"Somme de error_nr", xlSum
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Somme de Code")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"Somme de error_nr")
.Orientation = xlRowField
.Position = 2
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").RowAxisLayout xlTabularRow
End SubBonjour,
ce que vous voulez faire c'est créer une feuille Synthese qui sera toujours utilisée pour le TCD ?
Si oui, on peut supprimer la feuille synthèse et la recréer à chaque fois..
Mais il y a plus simple, pourquoi ne pas créer votre feuille Synthese une fois pour toute avec votre TCD manuellement (donc sans macro) et simplement rafraichir par maccro lors de l'ajout de nouvelle données ?
Cordialement
Bonjour Dan,
Merci pour votre message.
ce que vous voulez faire c'est créer une feuille Synthese qui sera toujours utilisée pour le TCD ?
Si oui, on peut supprimer la feuille synthèse et la recréer à chaque fois..
Je pensais nommer la feuille Synthese pour la compréhension mais ce n'est pas obligatoire. Le but c'est d'avoir un nom fixe pour y faire référence simplement et différent traitement dessus.
Mais il y a plus simple, pourquoi ne pas créer votre feuille Synthese une fois pour toute avec votre TCD manuellement (donc sans macro) et simplement rafraichir par maccro lors de l'ajout de nouvelle données ?
Le soucis c'est que je développe une app pour des users qui ne connaissent pas forcément Excel. Le but c'est d'automatiser un max différentes fonctions. Les données proviennent d'un fichier fournit par un autre service plusieurs fois par an. Il n'y a pas d'ajout de nouvelles données. Une fois le fichier traité, on l'archive et on ne l'utilise plus.
Salutations
Le soucis c'est que je développe une app pour des users qui ne connaissent pas forcément Excel. Le but c'est d'automatiser un max différentes fonctions. Les données proviennent d'un fichier fournit par un autre service plusieurs fois par an. Il n'y a pas d'ajout de nouvelles données. Une fois le fichier traité, on l'archive et on ne l'utilise plus.
Comment actualisez-vous les données dans le fichier tel que posté ?
Vous remplacez les données par les nouvelles ? En gros c'est toujours le même fichier qui sert pour le TCD ?
Ensuite vous faites "enregistrer sous" du fichier traité ?
Je pensais nommer la feuille Synthese pour la compréhension mais ce n'est pas obligatoire. Le but c'est d'avoir un nom fixe pour y faire référence simplement et différent traitement dessus.
comme je vous ai écrit, elle peut être créée une fois pour toute (le plus simple) ou alors vous la récréez à chaque fois. Dans ce cas, le code doit la supprimer. C'est moins pratique s'il y a une mise en forme à refaire.
Comment actualisez-vous les données dans le fichier tel que posté ?
Vous remplacez les données par les nouvelles ? En gros c'est toujours le même fichier qui sert pour le TCD ?
Ensuite vous faites "enregistrer sous" du fichier traité ?
A la base c'est un csv que l'on ouvre dans Excel et que l'on enregistre en xlsx. Une fois le traitement terminé, on supprime le xlsx et on archive le csv.
comme je vous ai écrit, elle peut être créée une fois pour toute (le plus simple) ou alors vous la récréez à chaque fois. Dans ce cas, le code doit la supprimer. C'est moins pratique s'il y a une mise en forme à refaire.
Mon app ouvre le xlsx, puis il y a différent traitement, dont la création de plusieurs feuilles d'où le problème avec le nom qui peut être variable.
bonjour le fil,
renommer l'ancienne feuille "synthese" ?
Sub Macro1()
Dim sh As Worksheet, sh2 As Worksheet, TCD
On Error Resume Next
Set sh = Sheets("synthese")
If Not sh Is Nothing Then
Do
Set sh2 = Nothing
i = i + 1
Set sh2 = Sheets("synthese " & i)
If sh2 Is Nothing Then
sh.Name = "synthese " & i
End If
Loop While Not sh2 Is Nothing And i < 100
End If
On Error GoTo 0
Sheets.Add after:=Sheets("donnees")
Set sh = ActiveSheet
With sh
.Name = "synthese"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Donnees!R1C1:R5000C6", Version:=6).CreatePivotTable TableDestination:= _
"synthese!R3C1", TableName:="Tableau croisé dynamique1", DefaultVersion:=6
Set TCD = .PivotTables(1)
Cells(3, 1).Select
With TCD
.AddDataField .PivotFields("Code"), "Somme de Code", xlSum
.AddDataField .PivotFields("error_nr"), "Somme de error_nr", xlSum
With .PivotFields("Somme de Code")
.Orientation = xlRowField
'.Position = 1
End With
With .PivotFields("Somme de error_nr")
.Orientation = xlRowField
'.Position = 2
End With
.RowAxisLayout xlTabularRow
End With
End With
End Sub
Un grand merci BsAlv, exactement ce que je voulais
Dan, aussi un grand merci
Ok. J'avais préparé quelque chose mais bon. Je laisse tomber puisque BsAlv s'en est chargé
Merci à BsAlv grâce à qui j'ai travaillé pour rien.
Bonne journée