Donner un nom à chaque graphique
Bonjour à tous et bonne année
Dans mon projet, j'en suis à la partie graphique.
J'ai déjà eu de l'aide concernant la création du premier.
Je pense avoir compris le principe (je pense)
J'ai besoin d'aide concernant la mise en place de 3 graphiques
Pour l'instant j'en ai réaliser 2 .
Le problème est que je cherche le moyen de leur attribuer un nom par graphique.
J'ai bien utiliser la "zone Nom" de la feuille concernée, mais comment le faire dans ce code ?
Private Sub CreationGraphique()
Dim Datas As Range, Accueil As Range
Dim Graph As Chart
Dim F As Worksheet
Dim H As Worksheet
Dim MaVal As String
Dim i As Integer
Dim y As Integer
'CREATION GRAPHE PROCESS Nom= GrSyntDynamProcess
For Each legraphe In ActiveSheet.ChartObjects
legraphe.Delete
Next
Set F = ThisWorkbook.Worksheets("Feuil1") 'Nom de la feuil du graphique
Set H = ThisWorkbook.Worksheets("Feuil2") 'Nom de la feuil pour les datas
Set Datas = H.UsedRange
Set Accueil = F.Range("F11:J22") 'Position du graph
Set Graph = F.ChartObjects.Add(Accueil.Left, Accueil.Top, Accueil.Width, Accueil.Height).Chart
With Graph
.ChartType = xlDoughnut
.ChartArea.Format.Line.Visible = msoFalse 'Pas de cadre
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = H.Range(H.Cells(7, 8), H.Cells(8, 10)) 'Datas
.FullSeriesCollection(1).Values = H.Range(H.Cells(7, 8), H.Cells(7, 10)) 'Datas
.FullSeriesCollection(1).Name = H.Range("H6") 'titre du graphe
.ChartArea.Font.Size = 11
.FullSeriesCollection(1).ApplyDataLabels
End With
For i = 1 To 3 'du point 1 au point 3
Graph.FullSeriesCollection(1).Points(i).Select
With Selection.Format.Fill
.Visible = True
.Transparency = 0
.Solid
Select Case i
Case 1
.ForeColor.RGB = RGB(237, 129, 45) 'Couleur PE
Case 2
.ForeColor.RGB = RGB(112, 173, 71) 'Couleur Conforme
Case 3
.ForeColor.RGB = RGB(255, 0, 0) 'Couleur Non conforme
End Select
End With
Next i
For i = 1 To 3 'du point 1 au point 3
Graph.FullSeriesCollection(1).Points(i).Select 'Format police des étiquettes
With Selection.DataLabel.Select
Select Case i
Case 1
Selection.Format.TextFrame2.TextRange.Font.Size = 12
Case 2
Selection.Format.TextFrame2.TextRange.Font.Size = 12
Case 3
Selection.Format.TextFrame2.TextRange.Font.Size = 12
End Select
End With
Next i
i = 0
'CREATION GRAPHE MAINTENANCE Nom= GrSyntDynamMain
For Each legraphe In ActiveSheet.ChartObjects
legraphe.Delete
Next
Set F = ThisWorkbook.Worksheets("Feuil1") 'Nom de la feuil du graphique
Set H = ThisWorkbook.Worksheets("Feuil2") 'Nom de la feuil pour les datas
Set Datas = H.UsedRange
Set Accueil = F.Range("K11:O22") 'Position du graph
Set Graph = F.ChartObjects.Add(Accueil.Left, Accueil.Top, Accueil.Width, Accueil.Height).Chart
With Graph
.ChartType = xlDoughnut
.ChartArea.Format.Line.Visible = msoFalse 'Pas de cadre
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = H.Range(H.Cells(7, 11), H.Cells(8, 13)) 'Datas
.FullSeriesCollection(1).Values = H.Range(H.Cells(7, 11), H.Cells(7, 13)) 'Datas
.FullSeriesCollection(1).Name = H.Range("K6") 'titre du graphe
.ChartArea.Font.Size = 11
.FullSeriesCollection(1).ApplyDataLabels
End With
For i = 1 To 3 'du point 1 au point 3
Graph.FullSeriesCollection(1).Points(i).Select
With Selection.Format.Fill
.Visible = True
.Transparency = 0
.Solid
Select Case i
Case 1
.ForeColor.RGB = RGB(237, 0, 45) 'Couleur PE
Case 2
.ForeColor.RGB = RGB(112, 173, 71) 'Couleur Conforme
Case 3
.ForeColor.RGB = RGB(255, 0, 0) 'Couleur Non conforme
End Select
End With
Next i
For i = 1 To 3 'du point 1 au point 3
Graph.FullSeriesCollection(1).Points(i).Select 'Format police des étiquettes
With Selection.DataLabel.Select
Select Case i
Case 1
Selection.Format.TextFrame2.TextRange.Font.Size = 12
Case 2
Selection.Format.TextFrame2.TextRange.Font.Size = 12
Case 3
Selection.Format.TextFrame2.TextRange.Font.Size = 12
End Select
End With
Next i
i = 0
Range("G1").Activate
End Sub
J'aimerai conservé le principe de code par graphique.
Merci de votre aide
Bonne soirée à tous
bonsoir le forum
Je m’aperçois qu’il y a eu quelques visites, mais pas de pistes pour résoudre mon problème.
En même tps sans le fichier plus compliqué pour faire les essais.
Demain je poste le fichier
A demain
Bonjour,
Bah .Name= "mon graph"
non ?
eric
Bonjour,
Ou .Parent.Name="xxxx" ?
Cdlt.
Re,
Une petite contribution pour appréhender la chose.
Cdlt.
Public Sub CreationGraphique()
Dim Accueil As Range
Dim Graph As Chart
Dim F As Worksheet, H As Worksheet
Dim i As Long
Dim legraphe As ChartObject
'CREATION GRAPHE PROCESS Nom= GrSyntDynamProcess
For Each legraphe In ActiveSheet.ChartObjects
legraphe.Delete
Next
Set F = ThisWorkbook.Worksheets("Feuil1") 'Nom de la feuil du graphique
Set H = ThisWorkbook.Worksheets("Feuil2") 'Nom de la feuil pour les datas
Set Accueil = F.Range("F11:J22") 'Position du graph
Set Graph = F.ChartObjects.Add(Accueil.Left, Accueil.Top, Accueil.Width, Accueil.Height).Chart
With Graph
.Parent.Name = "GrSyntDynamProcess"
.ChartType = xlDoughnut
.ChartArea.Format.Line.Visible = msoFalse 'Pas de cadre
.SeriesCollection.NewSeries
.FullSeriesCollection(1).XValues = H.Range(H.Cells(7, 8), H.Cells(7, 10)) 'Label
.FullSeriesCollection(1).Values = H.Range(H.Cells(8, 8), H.Cells(8, 10)) 'Data
.FullSeriesCollection(1).Name = H.Range("H6") 'titre du graphe
.ChartArea.Font.Size = 11
.FullSeriesCollection(1).ApplyDataLabels
For i = 1 To 3
With .FullSeriesCollection(1).Points(i).Format.Fill
Select Case i
Case 1: .ForeColor.RGB = RGB(237, 129, 45) 'Couleur PE
Case 2: .ForeColor.RGB = RGB(112, 173, 71) 'Couleur Conforme
Case 3: .ForeColor.RGB = RGB(255, 0, 0) 'Couleur Non conforme
End Select
End With
.FullSeriesCollection(1).Points(i).DataLabel.Format.TextFrame2.TextRange.Font.Size = 12
Next i
End With
End Sub
Bonjour le forum
Eriiic ,Jean-Eric Merci de vos propositions.
Pour le Nom du graphique Ok l'une comme l'autre.
Jean-Eric
.FullSeriesCollection(1).Points(i).DataLabel.Format.TextFrame2.TextRange.Font.Size = 12
Pas réussi à la mettre en place. surement erreur de ma part
J'ai continué mon développement dont voici le fichier.
Je travail dessus, et j'ai noté mes futures actions.
Si cela vous dit, de continuer Ok, mais sinon j'aimerai que vous suiviez ce post pour mes futures demandes
Merci
Déjà merci de votre aide Eriic et Jean-Eric
Bonsoir à tous
Bonsoir Ledzep, Le Forum,
Il n'est pas toujours nécessaire de supprimer un graphique une fois celui-ci réalisé.
Voir fichier ci-dessous.
Bonsoir le forum
X Cellus
Merci de ton retour
je faisais cela pour ne pas empiler les graphiques les uns sur les autres,c’est ce que j’avais constaté..
Comme j’ai coupé mon ordi, demain je regarde ta proposition
Merci
A bientôt
A nouveau,;
Je l'ai fait pour le 1ier graphique. Il faudra à l'identique le faire pour le 2ième une fois celui-ci créé et nommé.
A +
Bonjour le forum
@X Cellus, merci de ton retour
J'ai regardé ta proposition, je vais surement l'appliquer avec un Btn
En fait sur mon projet, j'ai besoin d'avoir la situation du jour et à gauche, la situation du jour-1
J'ai travaillé hier sur mon fichier
Dans ces 2 lignes de code , j'aimerai pouvoir insérer un autre cellule mais qui n'est pas contigüe aux Cells (7,11) Cells(8,13)
Le Seul élément commun et la ligne 7 et 8.
.FullSeriesCollection(1).XValues = H.Range(H.Cells(7, 11), H.Cells(8, 13)) 'Datas
.FullSeriesCollection(1).Values = H.Range(H.Cells(7, 11), H.Cells(7, 13)) 'Datas
Avez vous une idée?
Merci
Bonne soirée au forum
Bonjour Ledzep, Le Forum,
Voici le fichier actualisé avec 2 ième graphique en première feuille
Voir ensuite les feuilles 3 et 4 pour les process J et J-1.
A adapter selon disposition des cellules originelles.
Bonjour le forum
@X Cellus
Merci pour ton aide, cela est impressionnant pour moi.
A première vue , tu as répondu à mes attentes.
Je vais maintenant mettre cela en forme dans mon projet, par contre ne sois pas déçu si tu n'as pas de retour sur ce post, je manque de tps .
Mais sois en sûr, il y aura un retour .
Je vous remercie de m'avoir aider par vos remarques, code, fichier
Petite question sur ce code:
.FullSeriesCollection(1).XValues = H.Range(H.Cells(7, 11), H.Cells(8, 13)) 'Datas
X représentant une cellule sur la ligne 7 mais pas contigüe à la cellule 11 , comment l'ajouter à
H.Range(H.Cells(7, 11:X)
Il va de soi que cela cela sera aussi ajouté à
H.Cells(8, 13;x)) 'Datas
Mais déjà merci pour la première partie
A bientôt
A nouveau,
.FullSeriesCollection(1).XValues = H.Range(H.Cells(7, 11), H.Cells(8, 13)) 'Datas
Cette ligne est nécessaire pour "formater" la partie Légende du graphique.
Dont voici correspondance dans cette formule. =SERIE("MAIN";'Sht2'!$K$7:$M$10;'Sht2'!$K$7:$M$7;1)
Pour la voir cliquer sur l'anneau du graphique. J'ai modifié pour l'exemple la ligne 8 (Pdt) par la ligne 10 (Bien)
Le texte en orange (XValues) cible les données en feuille 2 de K7 à M10. C'est à dire englobant les valeurs de K7 à K10 et le texte (Bien...) en M7 à M10.
Les lignes 8 (Pdt effacé) à 9 dans ce cas devant être vides.
Et ci-dessous le résultat:
Donc une fois le graphique créé avec la ligne XValues. Il n'est pas nécessaire de la reprendre dans le rafraîchissement du graphique.
La partie légende étant bien formulée et en place
Bonne continuation dans le projet en cours. Et à une prochaine fois dès le temps moins chargé.
Bonjour le forum
@x Cellus
D'accord j'ai bien compris
pour un graphique la sélection des données doit être faite sur la base de cellule contigüe.
Merci de tes explications
A bientôt
Bonjour le forum
Bonjour X Cellus & Jean-Eric
Comme promis voici le retour de mon avancement.
Le projet est pratiquement terminé, par manque de tps pour m'y mettre cela dure.
(Il y a 18 onglets qui recense jusqu’à 100 lignes environ)
Les graphiques sont propres, les liens pour ouvrir un onglet précis est réalisé.
Il me reste à étudié ta proposition pour la mise à jour des données graphiques comme tu me l'as suggéré.
Voilà à ce jour la situation
Merci et à bientôt sur le forum