Je suis actuellement sur un projet avec Excel et je cherche à automatiser la création d’un graphique en nuage de point à partir d’une sélection dans un tableau croisé dynamique (TCD).
L’objectif est de simplifier le processus en évitant de recréer manuellement le graphique chaque fois que le TCD est mis à jour grâce au segment.
Je souhaite que le nom et le prenom soit sur le nuage de point de façàn automatique également !
Pouvez vous me donner le script VBA qui me permettrait de faire ça et me le mettre s’il vous plaît sur l’Excel que je joins à ma demande.
Je vous remercie pour votre aide et bonne journée. BASE NUAGE DE POINT.xlsx (91,3 Ko)
je ne trouve pas un graphique (certainement pas un nuage de points) dans votre fichier.
Pouvez-vous donner un exemple d’un graphique comme vous le voulez voir ?
voici le fichier actualisé avec le nuage de point. Je voudrai en abscisse la rémunération et en ordonné l’âge ainsi que les nom qui s’actualise à chaque fois. Je peux le faire car la donnée est figé par contre avec le tcd c’est pas possible je pense que nous pouvons contourner avec une vba … merci encore pour votre précieuse BASE NUAGE DE POINT.xlsx (96,1 Ko)
Ce n’est pas le résultat que je voulais … mais j’ai déjà l’impression qu’il prend en compte le TCD donc c’est super il est possible de rajouter le nom et prénom sur chaque point ?
Vous le trouvez dans l’editeur VBA avec le raccoursi ALT+F8 ou ici dessous + j’ai ajouté des commentaires BASE NUAGE DE POINT (1).xlsm (109,9 Ko)
Sub Update_TCD()
Set sh = Sheets("TCD") 'la feuille
With sh
Set grph = .ChartObjects("Graphique 2").Chart 'le graphique
For i = grph.FullSeriesCollection.Count To 2 Step -1 'supprimer les séries sauf série 1
grph.FullSeriesCollection(i).Delete
Next
Set pvt = .PivotTables("Tableau croisé dynamique3") 'le TCD
With pvt.PivotFields("Nom + Prénom + (-5%)") 'le pivotfield avec les noms
On Error Resume Next
For Each it In .PivotItems 'boucler les noms
'MsgBox it.Name
's = s & vbLf & it.Name
'GoTo 1
.PivotItems(it.Name).LabelRange.Select 'sélectionner la plage de ce nom
Set c = Selection
ptr = ptr + 1 'pointer
With grph
If .FullSeriesCollection.Count < ptr Then .SeriesCollection.NewSeries 'si nécessaire ajouter une série
With .FullSeriesCollection(ptr)
.Name = it.Name 'nom pour le legend
.Values = "=" & sh.Name & "!" & c.Offset(, 2).Address 'Y-valeurs
.XValues = "=" & sh.Name & "!" & c.Offset(, 1).Address 'X-valeurs
x = .Format.Line.ForeColor.RGB 'couleur de la série
.ApplyDataLabels 'utiliser les labels
With .DataLabels
.ShowValue = False 'ne pas montrer les valeurs
With .Format.TextFrame2.TextRange
.InsertChartField msoChartFieldRange, "=" & sh.Name & "!" & c.Address 'utiliser le contenu de cette plage pour les labels
.Font.Fill.ForeColor.RGB = x 'couleur = le même que la série
End With
.ShowRange = True
End With
End With
End With
Next
End With
End With
End Sub