Comment créer un graphique Excel qui extrait des données de plusieurs feuilles? [fermé]
-
03-07-2019 - |
Question
Les chiffres des ventes mensuelles sont stockés sur des feuilles séparées. J'aimerais créer un graphique des ventes de plusieurs produits par mois. Chaque produit serait représenté par une ligne de couleur différente sur le même graphique, chaque mois suivant l'axe x.
Quel est le meilleur moyen de créer un graphique à une seule ligne à partir des mêmes cellules relatives sur plusieurs feuilles?
La solution
Utilisez l'assistant graphique.
À l'étape 2 sur 4, il y a un onglet "Série". Il y a 3 champs et une zone de liste sur cet onglet. La liste contient les différentes séries que vous incluez déjà dans le graphique. Chaque série comporte à la fois un " Nom " champ et un "Valeurs" champ qui est spécifique à cette série. Le dernier champ est l’étiquette "Etiquettes des axes de la catégorie (X)". champ commun à toutes les séries.
Cliquez sur le lien " Ajouter " bouton sous la liste. Cela ajoutera une série vierge à votre liste. Notez que les valeurs de " Nom " et pour " Values ??" changez lorsque vous mettez une série en surbrillance dans la liste.
Sélectionnez votre nouvelle série.
Il y a une icône dans chaque champ du côté droit. Cette icône vous permet de sélectionner des cellules dans le classeur pour extraire les données. Lorsque vous cliquez dessus, l'Assistant se cache temporairement (sauf pour le champ dans lequel vous travaillez) vous permettant d'interagir avec le classeur.
Sélectionnez la feuille appropriée dans le classeur, puis sélectionnez les champs contenant les données que vous souhaitez afficher dans le graphique. Vous pouvez cliquer sur le bouton situé à droite du champ pour afficher l’Assistant.
L’espoir que cela aide.
EDIT: Ce qui précède s’applique à 2003 et avant. Pour 2007, lorsque le graphique est sélectionné, vous devriez pouvoir effectuer une action similaire à l'aide de l'option "Sélectionner les données". option sur le " Design " onglet du ruban. Cela ouvre une boîte de dialogue listant la série pour le graphique. Vous pouvez sélectionner la série exactement comme dans Excel 2003, mais vous devez utiliser l'option " Ajouter " et " Modifier " boutons pour définir une série personnalisée.
Autres conseils
Voici un code d'Excel 2010 qui pourrait fonctionner. Il a quelques spécificités (comme le filtrage des caractères mal encodés dans les titres), mais il a été conçu pour créer plusieurs graphiques multi-séries à partir de données à 4 dimensions contenant à la fois des données absolues et des pourcentages. Modifiez-le comme bon vous semble:
Sub createAllGraphs()
Const chartWidth As Integer = 260
Const chartHeight As Integer = 200
If Sheets.Count = 1 Then
Sheets.Add , Sheets(1)
Sheets(2).Name = "AllCharts"
ElseIf Sheets("AllCharts").ChartObjects.Count > 0 Then
Sheets("AllCharts").ChartObjects.Delete
End If
Dim c As Variant
Dim c2 As Variant
Dim cs As Object
Set cs = Sheets("AllCharts")
Dim s As Object
Set s = Sheets(1)
Dim i As Integer
Dim chartX As Integer
Dim chartY As Integer
Dim r As Integer
r = 2
Dim curA As String
curA = s.Range("A" & r)
Dim curB As String
Dim curC As String
Dim startR As Integer
startR = 2
Dim lastTime As Boolean
lastTime = False
Do While s.Range("A" & r) <> ""
If curC <> s.Range("C" & r) Then
If r <> 2 Then
seriesAdd:
c.SeriesCollection.Add s.Range("D" & startR & ":E" & (r - 1)), , False, True
c.SeriesCollection(c.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")
c.SeriesCollection(c.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D<*>quot; & startR & ":$D<*>quot; & (r - 1)
c.SeriesCollection(c.SeriesCollection.Count).Values = "='" & s.Name & "'!$E<*>quot; & startR & ":$E<*>quot; & (r - 1)
c.SeriesCollection(c.SeriesCollection.Count).HasErrorBars = True
c.SeriesCollection(c.SeriesCollection.Count).ErrorBars.Select
c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$F<*>quot; & startR & ":$F<*>quot; & (r - 1), minusvalues:="='" & s.Name & "'!$F<*>quot; & startR & ":$F<*>quot; & (r - 1)
c.SeriesCollection(c.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0
c2.SeriesCollection.Add s.Range("D" & startR & ":D" & (r - 1) & ",G" & startR & ":G" & (r - 1)), , False, True
c2.SeriesCollection(c2.SeriesCollection.Count).Name = Replace(s.Range("C" & startR), "Â", "")
c2.SeriesCollection(c2.SeriesCollection.Count).XValues = "='" & s.Name & "'!$D<*>quot; & startR & ":$D<*>quot; & (r - 1)
c2.SeriesCollection(c2.SeriesCollection.Count).Values = "='" & s.Name & "'!$G<*>quot; & startR & ":$G<*>quot; & (r - 1)
c2.SeriesCollection(c2.SeriesCollection.Count).HasErrorBars = True
c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBars.Select
c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlY, Include:=xlBoth, Type:=xlCustom, Amount:="='" & s.Name & "'!$H<*>quot; & startR & ":$H<*>quot; & (r - 1), minusvalues:="='" & s.Name & "'!$H<*>quot; & startR & ":$H<*>quot; & (r - 1)
c2.SeriesCollection(c2.SeriesCollection.Count).ErrorBar Direction:=xlX, Include:=xlBoth, Type:=xlFixedValue, Amount:=0
If lastTime = True Then GoTo postLoop
End If
If curB <> s.Range("B" & r).Value Then
If curA <> s.Range("A" & r).Value Then
chartX = chartX + chartWidth * 2
chartY = 0
curA = s.Range("A" & r)
End If
Set c = cs.ChartObjects.Add(chartX, chartY, chartWidth, chartHeight)
Set c = c.Chart
c.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r), s.Range("D1"), s.Range("E1")
Set c2 = cs.ChartObjects.Add(chartX + chartWidth, chartY, chartWidth, chartHeight)
Set c2 = c2.Chart
c2.ChartWizard , xlXYScatterSmooth, , , , , True, Replace(s.Range("B" & r), "Â", "") & " " & s.Range("A" & r) & " (%)", s.Range("D1"), s.Range("G1")
chartY = chartY + chartHeight
curB = s.Range("B" & r)
curC = s.Range("C" & r)
End If
curC = s.Range("C" & r)
startR = r
End If
If s.Range("A" & r) <> "" Then oneMoreTime = False ' end the loop for real this time
r = r + 1
Loop
lastTime = True
GoTo seriesAdd
postLoop:
cs.Activate
End Sub
2007 est plus puissant avec le ruban ..: =) Pour ajouter de nouvelles séries au graphique, procédez comme suit: Sélectionnez Graphique, puis cliquez sur Créer dans les outils de graphique du ruban, Dans le ruban de conception, sélectionnez "Sélectionner les données". dans le groupe de données, Ensuite, vous verrez le bouton Ajouter pour ajouter une nouvelle série.
J'espère que cela vous aidera.