Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Je souhaite créer un nuage de points (salaire par ancienneté) puis affecter à chaque point :
- le code couleur du tableau
- le nom du collaborateur (ajour d'étiquettes)
J'ai trouvé des informations intéressantes sur le site : Les graphiques
J'ai intégré les macros. La seconde marche bien mais la première n'est pas convaincante (distinction par couleur des hommes et des femmes)
Sub ModifCouleur()
ActiveSheet.ChartObjects("Graphique 3").Activate
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = _
[COLOR="Red"]ActiveSheet.Cells(i + 1, 1).FormatConditions(ActiveSheet.Cells(i + 1, 1)).Interior.ColorIndex[/COLOR]
Next i
End Sub
La fonction transmise hier marche sur le modèle test mais sur le fichier réel me renvoie l'anomalie suivante après avoir mis à jour la couleur des point
"Erreur d'exécution 9 - l'indice n'appartient pas à la sélection"
L'anomalie semble résider dans le code :
ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = _
ActiveSheet.Cells(i + 1, 1).FormatConditions(ActiveSheet.Cells(i + 1, 1)).Interior.ColorIndex
En effet mon nuage de point est lié à des données indexées sur un tableau croisé dynamique. Ainsi ces données sont souvent égale à 0 au delà des 20 à 100 premières.
Pouvons-nous arrêter la macro dès l'apparition de l'erreur ?
Par ailleurs est-il possible de mixer les deux macros (commentaires + mise en forme) dans un seul et même programme.
(...) mon nuage de point est lié à des données indexées sur un tableau croisé dynamique. Ainsi ces données sont souvent égale à 0 au delà des 20 à 100 premières. (...)
Il faut alors trouver une autre conception, car FormatConditions(n) prend uniquement 1, 2, et 3 comme valeur. On pourrait imaginer que votre troisième condition de formatage conditionnel fût la première, la première et la deuxième devenant respectivement la deuxième et la troisième. Alors on pourrait écrire
Bien entendu, cette solution n'est valable que si les cellules de la colonne A prennent les valeurs 0, 1 et 2 à l'exclusion de toute autre.
Mais comme vous le dites :
(...) La fonction transmise hier marche sur le modèle test mais sur le fichier réel me renvoie l'anomalie suivante après avoir mis à jour la couleur des point (...)
Normal. Une réponse est généralement donnée à partir des renseignements fournis et s'applique quelquefois (et plus sûrement souvent...) mal aux éléments qui n'ont pas été communiqués. Pour pouvoir donner une réponse pertinente il faudrait que l'échantillon de valeurs données représentât l'ensemble des valeurs possibles.
Pour le reste, il est certainement possible de regrouper les deux procédures et de prévoir une sortie de boucle au moment opportun :
Code:
[COLOR="DarkSlateGray"]Sub toto()
Dim i As Long, tf As Boolean
With Sheets(1).ChartObjects(1).Chart.SeriesCollection(1)
.ApplyDataLabels Type:=xlDataLabelsShowLabel
For i = 1 To .Points.Count
On Error GoTo erreur
.Points(i).DataLabel.Text = Cells(i + 1, 2)
.Points(i).DataLabel.Font.Size = 6
.Points(i).MarkerBackgroundColorIndex = _
ActiveSheet.Cells(i + 1, 1).FormatConditions(ActiveSheet.Cells(i + 1, 1) + 1).Interior.ColorIndex
On Error GoTo 0
If tf Then Exit Sub
Next i
End With
Exit Sub
erreur:
tf = True
Resume Next
End Sub[/COLOR]
Ça fonctionne dans le classeur d'essai (après modification de la mise en forme conditionnelle de la colonne A).
De là à dire que ça fonctionnera avec un autre classeur, il y un pas...
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.