Graphique depuis TCD
Fermé
Mike
-
13 janv. 2021 à 17:17
yg_be Messages postés 23363 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2024 - 16 janv. 2021 à 14:51
yg_be Messages postés 23363 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2024 - 16 janv. 2021 à 14:51
A voir également:
- Graphique depuis TCD
- Tcd excel - Guide
- Changer carte graphique - Guide
- Graphique excel - Guide
- Graphique sparkline - Guide
- Graphique camembert excel - Guide
8 réponses
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
Ambassadeur
1 556
13 janv. 2021 à 20:32
13 janv. 2021 à 20:32
bonjour,
c'est quasi impossible, à moins que tu nous donnes plus d'information.
c'est quasi impossible, à moins que tu nous donnes plus d'information.
Bonjour,
Ci dessous le code utilisé :
Ci dessous le code utilisé :
Set PvtTCD = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="tableau_1").CreatePivotTable(TableDestination:=WsTCD.Range("A1"), TableName:="TCD_1")
WsTCD.Shapes.AddChart.Name = "Graph_1"
With ActiveSheet.PivotTables("TCD_1")
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
' Ajout critère
With PvtTCD.PivotFields("Ville")
.Orientation = xlRowField
.Position = 1
End With
'Suppression des sous totaux
For Each Champs In PvtTCD.PivotFields
If Champs.Orientation = 1 Then Champs.Subtotals = Array(False, False, False, False, _
False, False, False, False, False, False, False, False)
Next Champs
' Ajout des valeurs
PvtTCD.AddDataField ActiveSheet.PivotTables("TCD_1").PivotFields("Nb Habitant"), "Somme de Nb Habitant", xlSum
PvtTCD.AddDataField ActiveSheet.PivotTables("TCD_1").PivotFields("Nb Ménages"), "Somme de Nb Ménages", xlSum
'////////////////////////////////// Ajout TCD avec Graphique 2 //////////////////////////////////////////////////////////
' Ajout d'un TCD s
Set PvtTCD = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="tableau_Ws2") .CreatePivotTable(TableDestination:=WsTCD.Range("A15"), TableName:="TCD_2")
WsTCD.Shapes.AddChart.Name = "Graph_2"
With ActiveSheet.PivotTables("TCD_2")
.InGridDropZones = True
.RowAxisLayout xlTabularRow
End With
' Ajout critère
With PvtTCD.PivotFields("Ville")
.Orientation = xlRowField
.Position = 1
End With
'Suppression des sous totaux
For Each Champs In PvtTCD.PivotFields
If Champs.Orientation = 1 Then Champs.Subtotals = Array(False, False, False, False, _
False, False, False, False, False, False, False, False)
Next Champs
' Ajout valeurs
PvtTCD.AddDataField ActiveSheet.PivotTables("TCD_2").PivotFields("Numéro d'ordre"), "Somme de Numéro d'ordre", xlCount
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
1 556
14 janv. 2021 à 10:33
14 janv. 2021 à 10:33
je ne vois rien dans ton code qui s'occupe de configurer les graphes.
peux-tu partager ton fichier?
peux-tu partager ton fichier?
Oui c'est bien mon problème , je ne trouve pas les commandes me permettant de réaliser cela. Et de faire de lien avec le tps.
Serais tu m'indiquer comment procéder ?
Serais tu m'indiquer comment procéder ?
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
1 556
14 janv. 2021 à 12:50
14 janv. 2021 à 12:50
as-tu essayé avec l'enregistreur de macros?
Oui j'ai essayé l'enregistreur, et j'obtiens cela :
La source est une plage de donnée, mais si j'essaye de mettre le nom du TCD, cela ne fonctionne pas.
ActiveChart.SetSourceData Source:=Range("TCD!$A$1:$C$9")
La source est une plage de donnée, mais si j'essaye de mettre le nom du TCD, cela ne fonctionne pas.
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
1 556
15 janv. 2021 à 09:52
15 janv. 2021 à 09:52
peut-être ainsi (non testé, tu n'as pas partagé ton fichier):
dim gr2 as shape, PvtTCD2 as pivottable Set PvtTCD2 = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="tableau_Ws2") .CreatePivotTable(TableDestination:=WsTCD.Range("A15"), TableName:="TCD_2") set gr2 = WsTCD.Shapes.AddChart gr2.Name = "Graph_2" gr2.SetSourceData Source:=PvtTCD2.TableRange1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike_2822
Messages postés
2
Date d'inscription
samedi 16 janvier 2021
Statut
Membre
Dernière intervention
16 janvier 2021
16 janv. 2021 à 10:54
16 janv. 2021 à 10:54
Merci pour ton retour,
Le code ne fonctionne pas, il bloque sur :
cela fonctionne si je supprime le TCD, et défini la plage de donnée avec un Range, mais je préférerais le faire directement depuis le TCD si possible.
Est ce que tu as une solution ?
Je joins un fichier d'exemple
https://www.transfernow.net/files/?utm_source=RUn44I012021&utm_medium=&utm_content=en
Le code ne fonctionne pas, il bloque sur :
gr2.SetSourceData Source:=PvtTCD2.TableRange1
cela fonctionne si je supprime le TCD, et défini la plage de donnée avec un Range, mais je préférerais le faire directement depuis le TCD si possible.
Est ce que tu as une solution ?
Je joins un fichier d'exemple
https://www.transfernow.net/files/?utm_source=RUn44I012021&utm_medium=&utm_content=en
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
1 556
16 janv. 2021 à 10:55
16 janv. 2021 à 10:55
bloque-t'il avec un message d'erreur?
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
Ambassadeur
1 556
16 janv. 2021 à 12:29
16 janv. 2021 à 12:29
suggestion:
Option Explicit Sub test() Dim WsTCD As Worksheet, PvtTCD As PivotTable, PvtTCD2 As PivotTable, Champs As PivotField Set WsTCD = ActiveWorkbook.Sheets("TCD") WsTCD.[A11].Select Set PvtTCD = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Tableau1"). _ CreatePivotTable(TableDestination:=WsTCD.Range("A1"), TableName:="TCD_1") WsTCD.Activate With ActiveSheet.PivotTables("TCD_1") .InGridDropZones = True .RowAxisLayout xlTabularRow End With ' Ajout critère With PvtTCD.PivotFields("Ville") .Orientation = xlRowField .Position = 1 End With 'Suppression des sous totaux For Each Champs In PvtTCD.PivotFields If Champs.Orientation = 1 Then Champs.Subtotals = Array(False, False, False, False, _ False, False, False, False, False, False, False, False) Next Champs ' Ajout des valeurs PvtTCD.AddDataField ActiveSheet.PivotTables("TCD_1").PivotFields("Nbre Habitant"), "Somme de Nbre Habitant", xlSum '////////////////////////////////// Ajout TCD 2 ////////////////////////////////////////////////////////// ' Ajout d'un TCD s Set PvtTCD2 = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Tableau2") _ .CreatePivotTable(TableDestination:=WsTCD.Range("A15"), TableName:="TCD_2") With ActiveSheet.PivotTables("TCD_2") .InGridDropZones = True .RowAxisLayout xlTabularRow End With ' Ajout critère With PvtTCD2.PivotFields("Ville") .Orientation = xlRowField .Position = 1 End With 'Suppression des sous totaux For Each Champs In PvtTCD.PivotFields If Champs.Orientation = 1 Then Champs.Subtotals = Array(False, False, False, False, _ False, False, False, False, False, False, False, False) Next Champs ' Ajout valeurs PvtTCD2.AddDataField ActiveSheet.PivotTables("TCD_2").PivotFields("Nbre Ménages"), "Somme de Nbre Ménages", xlSum '///////////////////////////////////////// Création des graph //////////////////////// Dim gr1 As Shape Set gr1 = WsTCD.Shapes.AddChart gr1.Name = "Graph_1" Dim s1 As Range, s2 As Range Set s1 = PvtTCD.TableRange1 gr1.Chart.SetSourceData Source:=s1 Dim gr2 As Shape Set gr2 = WsTCD.Shapes.AddChart gr2.Name = "Graph_2" Set s2 = PvtTCD2.TableRange1 gr1.Chart.SetSourceData Source:=s1 gr2.Chart.SetSourceData Source:=s2 End Sub
Mike_2822
Messages postés
2
Date d'inscription
samedi 16 janvier 2021
Statut
Membre
Dernière intervention
16 janvier 2021
16 janv. 2021 à 14:38
16 janv. 2021 à 14:38
Merci pour cette proposition, le
génère un message d'erreur,
je ne comprend pas pourquoi !?
gr2.Chart.SetSourceData Source:=s2
génère un message d'erreur,
je ne comprend pas pourquoi !?
yg_be
Messages postés
23363
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
2 décembre 2024
1 556
16 janv. 2021 à 14:51
16 janv. 2021 à 14:51
as-tu testé le code complet que j'ai envoyé?
13 janv. 2021 à 22:17
Sur une feuille TCD, je crée un 1er TCD en cellule A1qui se nome "tcd1". Il fait référence à un tableau, lui même nommé "tdb1".
Le graphique est correctement créé.
En A15, je crée un autre TCD nommé "tcd2" qui fait référence à un tableau (différent du 1er), lui même nommé "tdb2"
Le graphique est créé mais reprend les mêmes infos que le "tcd1", ils sont identiques.. la source est la même.
En A30 je crée un autre TCD qui vient lui aussi dune autre feuille qui contient un tableau nommé "tdb3" lui aussi différent des deux 1er.
Le graphique est créé mais la encore la source est la même que pour le 1er graph.
Comment puis je lier les graphiques créés a chacun des TCD ?
Est ce la bonne manière ? Et sinon comment procéder ?
D'avance merci!
13 janv. 2021 à 22:39
ton code VBA est-il secret?