Imaginez que vous ayez un nuage de points qui vous montre vos coûts quotidiens. Vous souhaitez maintenant documenter des points individuels de manière très ciblée, ajoutez des commentaires aux points. Vous pouvez résoudre cette tâche en utilisant deux zones de saisie. Dans la première zone de saisie, vous entrez le point sur lequel vous souhaitez ajouter un commentaire, et dans la deuxième zone de saisie, vous saisissez le commentaire réel sur le point de données.
La macro suivante ajoute des commentaires à des points de données individuels:
Sub AjouterEtiquetteDonnees() Dim i As Integer i = InputBox("Sur quel point doit-on commenter?", _ "Commenter le diagramme") If i = 0 Then Exit Sub Sheets("Diagramme de dispersion").ChartObjects(1).Select ActiveChart.SeriesCollection(1) _ .Points(i).ApplyDataLabels _ Type:=xlDataLabelsShowLabel, AutoText:=True ActiveChart.SeriesCollection(1). _ Points(i).DataLabel.Text _ = InputBox("Veuillez saisir le texte du commentaire") End Sub
Commentaires
■ À l’aide de la méthode ApplyDataLabels, vous attribuez un point de données, la série de données ou toutes les séries de données dans la feuille de diagramme de la feuille de données
La méthode a la syntaxe suivante:
ApplyDataLabels(Type, LegendKey, AutoText, HasLeaderLines)
L’argument Type représente le type d’étiquette de données. L’une des constantes XlDataLabelsType suivantes est autorisée:
Description | constante |
xlDataLabelsShowNone | aucun étiquetage de données |
xlDataLabelsShowValue | aleur du point de données (si cet argument n’est pas spécifié, il devient une valeur accepté) |
XlDataLabelsShowPercent | Pourcentage du total; uniquement disponible pour les diagrammes à secteurs et en anneau |
XlDataLabelsShowLabel | Étiquetage de l’en-tête pour le point de données; c’est la valeur par défaut. |
XlDataLabelsShowLabelAnd-Percent | Pourcentage des étiquettes de total et d’en-tête pour le point de données; uniquement disponible pour les diagrammes à secteurs et en anneau |
■ L’argument LegendKey a la valeur True si vous souhaitez qu’Excel affiche la légende à côté du point de données. Dans la plupart des cas, cependant, cela n’est pas souhaitable. Pour cette raison, la valeur par défaut de cet argument est False.
■ Avec l’argument AutoText: = True, l’objet génère automatiquement le texte approprié en fonction du contenu. Définissez l’argument HasLeaderLines sur True si vous souhaitez que la série ait des lignes de repère.
1 Utiliser l’étiquetage des données des cellules
Si vous le souhaitez, vous pouvez également étiqueter vos diagrammes directement à partir des cellules. Vous pouvez le faire à la fois pour le titre du diagramme et pour les étiquettes de points individuelles.
Dans la macro suivante, le titre du diagramme et l’étiquetage des points de données sont obtenus à partir des cellules.
Sub EtiquetageDonneesCellules() Dim SerieDonnees As Series Dim PointCells As Points Dim PointCell As Point Dim i As Integer Range("A5").Select Set SerieDonnees = _ ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1) DatenReihe.HasDataLabels = True Set PointCells = SerieDonnees.Points For Each PointCell In PointCells i = i + 1 PointCell.DataLabel.Text = ActiveCell.Offset(0, i).Value PointCell.DataLabel.Font.Bold = True Next PointCell ActiveSheet.ChartObjects(1).Select With ActiveChart .HasTitle = True .ChartTitle.Text = Range("A2").Value End With End Sub
■Créez d’abord une variable Series. Cela vous permet d’afficher une série complète de données d’un diagramme. Dans cette variable de série de données, vous enregistrez la série de données dans votre diagramme incorporé. En définissant la propriété HasDataLabels sur True, vous annoncez que le graphique incorporé doit recevoir des étiquettes de données.
2 Lire les données des diagrammes
Peut-être que cela vous est déjà arrivé: vous avez un diagramme dans une feuille de calcul Excel, mais la base de données associée est introuvable. Vous devez maintenant regarder comment vous pouvez revenir à la base de données. Vous pouvez écrire une macro qui écrit toutes les valeurs du diagramme dans une table.
Pour lire les valeurs individuelles d’un diagramme incorporé, utilisez la macro suivante:
Sub LireValeursDiagramme() Dim s As String Dim i As Variant Dim Element As Object Dim iz As Integer s = ActiveSheet.Name ActiveSheet.ChartObjects(1).Select i = UBound(ActiveChart.SeriesCollection(1).Values) Worksheets(s).Cells(1, 1) = "Mois" With Worksheets(s) .Range(.Cells(2, 1), _ .Cells(i + 1, 1)) = _ Application.Transpose _ (ActiveChart.SeriesCollection(1).XValues) End With iz = 2 For Each Element In ActiveChart.SeriesCollection Worksheets(s).Cells(1, iz) = Element.Name With Worksheets(s) .Range(.Cells(2, iz), _ .Cells(i + 1, iz)) = _ Application.Transpose(Element.Values) End With iz = iz + 1 Next End Sub