Nuages de points

PERRINFAB

XLDnaute Nouveau
Bonjour,

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)

Pouvez-vous m'aider à résoudre ces pbs ?

Bonne journée

Fab
 

Pièces jointes

  • Test.zip
    39.4 KB · Affichages: 158
  • Test.zip
    39.4 KB · Affichages: 165
  • Test.zip
    39.4 KB · Affichages: 165

ROGER2327

XLDnaute Barbatruc
Re : Nuages de points

Bonjour PERRINFAB
Essayez
Code:
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
ROGER2327
#2128
 

PERRINFAB

XLDnaute Nouveau
Re : Nuages de points

Bonjour,

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.

Merci par avance de vos réponses

Fab:confused:
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Nuages de points

Re...
(...) 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
Code:
[COLOR="DarkSlateGray"][B]ActiveChart.SeriesCollection(1).Points(i).MarkerBackgroundColorIndex = _
     ActiveSheet.Cells(i + 1, 1).FormatConditions(ActiveSheet.Cells(i + 1, 1) [COLOR="Red"]+ 1[/COLOR]).Interior.ColorIndex
[/B][/COLOR]
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...
ROGER2327
#2144
 

Pièces jointes

  • Test_2144.zip
    41.8 KB · Affichages: 168

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 944
Membres
103 989
dernier inscrit
jralonso