Couleurs des graphiques de tableau croisé dynamique - Conseils Excel

Table des matières

Shari envoie la question Excel de cette semaine.

Je n'ai pas pu trouver la réponse à cette question dans notre service informatique, dans les fichiers d'aide Excel ou dans l'aide en ligne de Microsoft Excel, et j'espère que vous pourrez m'aider.

J'analyse des données Excel sur une période de vingt ans et j'ai besoin de créer des camemberts Excel pour chaque année. Les graphiques Excel sont basés sur un tableau croisé dynamique (ou graphique croisé dynamique dans Excel 2000), avec l'année comme champ de page.Le problème est que toutes les années ne contiennent pas les mêmes éléments, de sorte que chaque graphique Excel utilisera une couleur différente pour le même tranche de tarte.

Nous essayons de comparer les données sur ces 20 années, il est donc essentiel d'avoir les mêmes couleurs pour chaque graphique. Je finis par devoir changer chacune de nombreuses tranches sur de nombreux graphiques pour correspondre au premier, parfois plusieurs fois car les couleurs peuvent changer si les données changent et je dois recalculer le tableau croisé dynamique sur lequel le graphique est basé.

MrExcel a essayé le tableau croisé dynamique pour la première fois. Les graphiques croisés dynamiques sont un moyen très puissant de créer un graphique pour plusieurs scénarios de données différents, mais ils présentent cette faille ennuyeuse. J'ai mis en place le tableau croisé dynamique avec l'année de classe comme ligne, l'année comme page. J'ai demandé l'année de classe à trier en fonction des scores décroissants. À mesure que vous modifiez le graphique croisé dynamique d'une année à l'autre, les couleurs des tranches de tarte associées à Freshman changent. Certaines années, il y a des membres des quatre classes, d'autres années, il y a des membres de seulement 3 classes.

Exemple de graphique croisé dynamique

Excel applique un ordre de couleurs par défaut à chaque tranche, de sorte que les couleurs correspondantes changent d'année en année. Je peux voir mon manager secouer la tête de dégoût en lui remettant ces graphiques.

Il existe un moyen avec une macro de base visuelle pour résoudre ce problème. Si vous définissez les étiquettes de données pour afficher le nom de l'étiquette, il est alors possible de trouver le nom de chaque tranche à partir de Visual Basic. Une fois que vous avez un nom, vous pouvez recolorer la couleur de cette tranche en fonction de la valeur du nom.

Exemple de graphique croisé dynamique

Excel a utilisé les couleurs ci-dessus pour 1990, mais en 1991, les couleurs changent à mesure que le nombre d'éléments et leur séquence changent:

La macro suivante est codée en dur pour l'exemple spécifique de Shari où elle a des valeurs possibles de Freshman, Sophomore, Junior et Senior. En ajoutant des instructions Case supplémentaires avec différents indices de couleur, vous pouvez personnaliser cela pour gérer votre situation particulière.

Sub ColorPieSlices() ' Copyright 1999.com ' This macro will re-color the pie slices in a chart ' So that slices for a specific category are similarly colored ' Select the chart before calling the macro ' ' Find the number of pie slices in this chart NumPoints = ActiveChart.SeriesCollection(1).Points.Count ' Loop through each pie slice For x = 1 To NumPoints ' Save the label currently attached to this slice If ActiveChart.SeriesCollection(1). _ Points(x).HasDataLabel = True Then SavePtLabel = ActiveChart.SeriesCollection(1) _ .Points(x).DataLabel.Text Else SavePtLabel = "" End If ' Assign a new data label of just the point name ActiveChart.SeriesCollection(1).Points(x).ApplyDataLabels Type:= _ xlDataLabelsShowLabel, AutoText:=True ThisPt = ActiveChart.SeriesCollection(1).Points(x).DataLabel.Text ' Based on the label of this slice, set the color Select Case ThisPt Case "Freshman" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 3 Case "Sophomore" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 4 Case "Junior" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 5 Case "Senior" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 6 Case Else ' Add code here to handle an unexpected label End Select ' Return the label to it's original pre-macro state ActiveChart.SeriesCollection(1). _ Points(x).DataLabel.Text = SavePtLabel Next x End Sub

Démarrez l'éditeur VB avec alt-F11. Do Insert - Module. Insérer la procédure. Tapez ColorPieSlices comme nom et cliquez sur OK. Entrez la macro ci-dessus.

Pour vous faciliter la vie, attribuez la macro à un raccourci dans Excel. Dans Excel, faites Outils - Macro. Sélectionnez ColorPieSlices et cliquez sur le bouton Options. Dans la zone des touches de raccourci, entrez un "d". Cliquez sur OK et fermez la boîte de dialogue Macro en cliquant sur le «x» dans le coin supérieur droit. Maintenant, après avoir modifié votre graphique croisé dynamique, vous pouvez appuyer sur Ctrl + D pour recolorer les tranches de secteurs selon votre jeu de couleurs préféré.

Articles intéressants...