Or, si le texte contenu dans la 4ème étiquette de données n'a que 3 caractères, il est donc logique que VBA renvoie une erreur (il est bien impossible de mettre en forme le 5ème caractère s'il n'y a que 3 caractères dans l'étiquette).Effectivement, si la position du caractère à traiter dans l'étiquette en cours est plus grande que la longueur de la plus petite des étiquettes, il y erreur. Ce n'est pas logique puisque l'on traite les étiquettes une à une.
la mise en forme du n-ième caractère n'est pas affectée exclusivement à ce caractère là, mais à l'ensemble des caractères à la position n de toutes les étiquettes de données de la série.Oui, c'est hélas confirmé !
Dim toto As Point ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).ApplyDataLabels For Each toto In ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Points toto.DataLabel.Text = "blablabla" toto.DataLabel.Characters(1, 3).Font.Size = 14 Next pt
Sub M_MEF_CAR_DATLAB() Dim TAB_Parametres(5, 2) As Variant Dim Cpt As Integer Dim Pt As Point Dim DatLab As DataLabel TAB_Parametres(1, 1) = "aaa" TAB_Parametres(2, 1) = "bbbbbbb" TAB_Parametres(3, 1) = "cc" TAB_Parametres(4, 1) = "dddd" TAB_Parametres(5, 1) = "eeeee" TAB_Parametres(1, 2) = 1 TAB_Parametres(2, 2) = 5 TAB_Parametres(3, 2) = 2 TAB_Parametres(4, 2) = 3 TAB_Parametres(5, 2) = 4 Cpt = 0 For Each Pt In ActiveChart.SeriesCollection(1).Points Cpt = Cpt + 1 Pt.ApplyDataLabels Set DatLab = Pt.DataLabel DatLab.Text = TAB_Parametres(Cpt, 1) Pt.DataLabel.Characters(TAB_Parametres(Cpt, 2), 1).Font.Bold = True Next Pt End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFor Cpt = 1 To 5 TAB_Parametres(Cpt, 2) = Int(Rnd() * Len(TAB_Parametres(Cpt, 1))) + 1 Next
Pt.DataLabel.Characters(TAB_Parametres(Cpt, 2), 1).Font.Bold = True
mettre le caractère "%" en gras et en rouge.
Pt.DataLabel.Characters(Len(TAB_Parametres(Cpt, 1)), 1).Font.Bold = True
TAB_Parametres(1, 1) = " 5%" TAB_Parametres(2, 1) = " 50%" TAB_Parametres(3, 1) = "100%" TAB_Parametres(4, 1) = " 50%" TAB_Parametres(5, 1) = " 5%" ' dans la boucle Pt.DataLabel.Characters(4, 1).Font.Bold = True Pt.DataLabel.Characters(4, 1).Font.ColorIndex = 3