macro tableau croisé dynamique - VB/VBA/VBS - Programmation
Marsh Posté le 19-05-2010 à 12:48:20
c'est quoi ton message d'erreur?
Ton TCD est à créer sur la même feuille que celle où se trouve tes données?
Attention aussi au fait que si tu as des lignes variables, il te faudra nommer la plage de données (nommer la plage avec une fonction DECALER)
Dans ma macro ci dessous, la source de données variables se trouve sur la feuille SYNTHESE et a été nommée "BDD" auparavant (ce qui permet quelque soit le nb de ligne de ma base de données que toutes les données soient prises en compte dans le TCD) et le TCD à créer est placé dans la feuille1
Sheets("SYNTHESE" ).Select 'se placer dans la feuille SYNTHESE
Range("A2" ).Select 'se placer en A2
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"BDD" ).CreatePivotTable TableDestination:="feuille1!R5C1", _
TableName:="Tableau croisé dynamique3"
ActiveSheet.PivotTables("Tableau croisé dynamique3" ).SmallGrid = False
ActiveSheet.PivotTables("Tableau croisé dynamique3" )
Après le reste de la macro c'est la selection des champs et la mise en forme du TCD donc propre à chacun.
Marsh Posté le 19-05-2010 à 13:38:51
Merci pour ta réponse.
J'ai changé la destination, en mettant le nom de la nouvelle feuille ainsi que l'emplacement du tableau:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C3" ).CreatePivotTable TableDestination:="[graph.xls]Feuil2!R2C2", _
TableName:="Tableau croisé dynamique1", DefaultVersion:= _
xlPivotTableVersion10
la fleche d'erreur pointe sur cette ligne: xlPivotTableVersion10
le message d'erreur est:
cette commande requiert au moins 2 lignes de données sources. vous ne pouvez pas l'utiliser sur une seule ligne de données. essayez la méthode suivante:
si vous utilisez un filtre élaboré, selectionnez une plage de cellules qui contient au moins 2 lignes de données. Puis cliquez
Marsh Posté le 19-05-2010 à 13:39:15
Merci pour ta réponse.
J'ai changé la destination, en mettant le nom de la nouvelle feuille ainsi que l'emplacement du tableau:
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C3" ).CreatePivotTable TableDestination:="[graph.xls]Feuil2!R2C2", _
TableName:="Tableau croisé dynamique1", DefaultVersion:= _
xlPivotTableVersion10
la fleche d'erreur pointe sur cette ligne: xlPivotTableVersion10
le message d'erreur est:
cette commande requiert au moins 2 lignes de données sources. vous ne pouvez pas l'utiliser sur une seule ligne de données. essayez la méthode suivante:
si vous utilisez un filtre élaboré, selectionnez une plage de cellules qui contient au moins 2 lignes de données. Puis cliquez a nouveau sur la commande filtre élaboré
Marsh Posté le 19-05-2010 à 10:06:23
Bonjour,
Je débute avec VBA. Je voudrais créer plusieurs macros pour mon tableau simple. le tableau contient un nombre de colonne fixe: (ville, emploi, ..), mais le nombre de ligne varie.
chaque macro doit créer un tableau croisés dynamiques. Dans cet exemple, je traite le nombre d'occurence pour la ville, qui se trouve sur la colonne B.
J'ai utilisé l'enregistreur de macro pour écrire le code.
Private Sub CommandButton2_Click()
Columns("B:B" ).Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!C2" ).CreatePivotTable TableDestination:="", TableName:= _
-> "Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tableau croisé dynamique2" ).PivotFields("ville" )
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique2" ).AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique2" ).PivotFields("ville" ), "Nombre de ville", _
xlCount
Sheets("Feuil1" ).Select
End Sub
Apres execution de la cette macro, on m'indique cette erreur que je ne comprends pas.
Merci pour votre aide