Etiquette de données
Hello à tous,
Cela fait des heures que je suis sur un point qui commence à m'agacer: les graphs en VBA et plus précisement la mise en forme des étiquettes de données.
J'ai trouvé cela sur le site http://boisgontierjacques.free.fr/pages_site/graphiques.htm#EtiqNuage :
Sub commentaire()
ActiveSheet.ChartObjects(1).Activate
On Error Resume Next
ActiveChart.SeriesCollection(1).ApplyDataLabels Type:=xlDataLabelsShowLabel
On Error GoTo 0
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
Selection.Interior.ColorIndex = 36
Selection.Font.Size = 7
Selection.Text = ActiveSheet.Cells(i + 1, 1)
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = 4
Next i
End Sub
Ca corresponds à 99% à ce dont j'ai besoin à un détail près, sa liste n'est ni triée, ni filtrés ... Quand j'utilise son code (adapé evidement) sur mon document, il m'ajoute bien les etiquettes, et ajoute les titres de la bonne colonne. Mais le problème c'est qu'il va chercher comme ça:
-1er point, 1ere valeur de cellule
Hors sur mon document, les valeurs ne sont pas triées suivant les abscices croissants, et les données sont filtrés. Actuelement il va me chercher:
-1er point, 1ère valeur de cellule (tri actif, filtre non actif)
Pour contourner ça, j'ai essayé un truc, sans succès, car j'ai bien l'impression qu'il ne comprend pas le XValues ou Yvalues. Je voulais lui dire: si pour le point k, tu retrouves (Xk,Yk) dans la feuille j à la ligne z alors, je peux comme étiquette de donnée la valeur de la cellule(z, 12)
For k = 1 To ActiveChart.SeriesCollection(4).Points.Count
For Z = 2 To DernLigne Step 1
If ActiveChart.SeriesCollection(4).Points(k).Yvalues = Sheets(j).Cells(Z, 21).Value and _
If ActiveChart.SeriesCollection(4).Points(k).Xvalues = Sheets(j).Cells(Z, 22).Value Then _
ActiveChart.SeriesCollection(4).Points(k).DataLabel.Text = Sheets(j).Cells(Z + 1, 12)
Next Z
Next k
Avec k le numero du point, j le numero de la feuille ou aller chercher l'info, et Z le numero de ligne dans la feuille j. Vous l'aurez compris dans le feuille J, les colonnes 21&22 correspondent à (X,Y) et 12 au nom que je souhaite afficher en étiquettes.
PS: je ne peux pas télécharger de Add-in tel que XYCharts, et je ne peux pas vous envoyer le doc (150 000KB + données confidentielles). Désolé.
Merci à tous en esperant que quelqu'un puisse m'aider