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.

15ledzepgraph.xlsm (29.07 Ko)

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.

13ledzepgraphbis.xlsm (47.46 Ko)

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:

aab

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

Rechercher des sujets similaires à "donner nom chaque graphique"