Graphique histogramme empilé avec 2 axes en %

Bonjour,

Je souhaiterais créer un graphique qui présente en ordonnées des valeurs en % selon un histogramme empilé et sur ce même graphique, les abscisses qui auraient comme base de l'histogramme le % du total de l'axe des abscisses.

Je n'arrive pas à gérer la base de l'histogramme empilé pour lui donner les valeurs en rouge sur la photo ci-dessous

Ex :

image

Merci d'avance pour votre aide

Jean-Philippe

Bonjour,

l'affichage du nom des produits en ordonnée n'est pas possible et ne veut rien dire, ce ne peut être que des valeurs.

sinon voilà ce qu'on peut obtenir par rapport à ce que vous demandez, à adapter au fichier réel:

Cdlt

Bonjour,

Merci pour votre retour

En effet, ma présentation de l'axe des ordonnées n'est pas bonne

L'objectif est effectivement un histogramme empilé 100% en ordonnées

Dans le fichier joint, les trois histogrammes ont la même largeur

Mon problème réside dans le fait d'avoir un axe des abscisses également exprimé en % mais surtout de pouvoir gérer la largeur des histogrammes en fonction de la proportion de l'axe des abscisses

Ce n'est pas l'affichage d'une valeur en abscisse mais bien la largeur de la première colonne histogramme qui doit représenter 60% de l'axe des abscisses

La largeur de la seconde colonne histogramme doit représenter 30% de l'axe des abscisses etc...

Je ne pense pas que ce soit possible via un graphique natif d'Excel mais c'est ce que j'aimerais confirmer et trouver le moyen de bricoler ce type de représentation

Jean-Philippe

Bonjour JP_MICHEL, Arturo83, le forum,

Bon, un peu galère mais je pense que le résultat se rapproche de la demande.

C'est un graphique en aire empilées qui permet d'avoir des largeurs de séries différentes. C'est loin d'être parfait notamment les étiquettes de données qui ne sont pas correctement placées et doublées (?) et surtout les noms des produits (1,2,3) qui sont en fait des "shapes" que je n'ai pas réussi à intégrer. Alors, j'ai bricolé...

Ce qui donne :

image

Le classeur en pièce jointe :

Bonne soirée à tous.

AL 22

Bonjour,

Solution avec macro, Ici ce n'est pas un graphique, mais des objets dessinés "type rectangle" qui construisent ce pseudo graphique.

De plus il peut accepter d'autres produits et d'autres sociétés.

Les couleurs reportées sur ce graphique sont issues de la ligne 1, cellule "produit", donc si vous changez de couleurs dans ces cellules, elles seront reportées sur le graphique.

A chaque clic sur le bouton, le précédent graphique est détruit entièrement et il s'en crée un nouveau.

le code:

Sub Simili_Graphique()
    Dim DerCol As Long, DerLig As Long, NB_Rect_Tot As Long, NB_Rect_par_Colonne As Long
    Dim Pos_Gauche As Long, Pos_Haut As Long, Couleur As Long
    Dim T_Tot As Double, T_Prod As Double
    Dim Sh As String

    'Suppression des objets dessinés précédemment créés
    For Each img In ActiveSheet.Shapes
        If img.Name <> "Bouton_Graphique" Then img.Delete
    Next
    'Création du cadre extérieur
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 400, 100, 800, 410).Select
    Selection.Name = "Cadre exterieur 1"
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(201, 255, 255)

    'Création du cadre intérieur
    ActiveSheet.Shapes.AddShape(msoShapeRectangle, 550, 110, 640, 350).Select
    Selection.Name = "Cadre exterieur 1"

    'déterminer le nombre de rectangles à poser
    DerCol = Range("ZZ1").End(xlToLeft).Column
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    NB_Rect_Tot = (DerCol - 2) * (DerLig - 1)
    NB_Rect_par_Colonne = NB_Rect_Tot / (DerCol - 2)
    Pos_Gauche = 550

    'Création et pose des Rectangles des valeurs
    For i = 2 To DerLig
        Pos_Haut = 110
        T_Tot = Cells(i, "B") ''Evaluation du Pourcentage total par ligne, represente aussi la largeur des rectangles à poser
        Sh = ""
        For j = NB_Rect_par_Colonne To 1 Step -1
            Couleur = Cells(1, j + 2).Interior.Color
            R = CLng(Couleur Mod 256)
            G = CLng((Couleur Mod 65536) / 255)
            B = CLng(Couleur / 65535)

            'Traçage des rectangles "produits_sociétés"
            T_Prod = Cells(i, j + 2) 'Evaluation du Pourcentage du produit par société, représente aussi la hauteur du rectangle à poser
            ActiveSheet.Shapes.AddShape(msoShapeRectangle, Pos_Gauche, Pos_Haut, (640 * T_Tot), (350 * T_Prod)).Select
            Selection.ShapeRange.Fill.ForeColor.RGB = RGB(R, G, B)
            With ActiveSheet
                Sh = .Shapes(ActiveSheet.Shapes.Count).Name
                .Shapes(Sh).TextFrame.Characters.Text = (T_Prod * 100) & "%"
                .Shapes(Sh).TextFrame.Characters.Font.Color = RGB(0, 0, 0)
            End With
            Pos_Haut = Pos_Haut + (350 * T_Prod)
        Next j
        'Traçage des rectangles "Valeurs des abscisses"
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, Pos_Gauche, 110 + 350, (640 * T_Tot), 40).Select
        Selection.ShapeRange.Fill.ForeColor.SchemeColor = 9
        With ActiveSheet
            Sh = .Shapes(ActiveSheet.Shapes.Count).Name
            .Shapes(Sh).TextFrame.Characters.Text = (T_Tot * 100) & "%" & Chr(10) & Cells(i, "A")
            .Shapes(Sh).TextFrame.Characters.Font.Color = RGB(0, 0, 0)
            .Shapes(Sh).TextFrame.Characters.Font.Bold = True
        End With
        Pos_Gauche = Pos_Gauche + (640 * T_Tot)
    Next i

    'création des étiquettes "Produits" en ordonnées
    Haut = 100
    For i = NB_Rect_par_Colonne To 1 Step -1
        Couleur = Cells(1, i + 2).Interior.Color
        R = CLng(Couleur Mod 256)
        G = CLng((Couleur Mod 65536) / 255)
        B = CLng(Couleur / 65535)
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, 410, Haut + (Haut / NB_Rect_Tot) * i, 130, 20).Select
        Selection.ShapeRange.Fill.ForeColor.RGB = RGB(R, G, B)
        With ActiveSheet
            Sh = .Shapes(ActiveSheet.Shapes.Count).Name
            .Shapes(Sh).TextFrame.Characters.Text = Cells(1, i + 2)
            .Shapes(Sh).TextFrame.Characters.Font.Color = RGB(0, 0, 0)
        End With
        Haut = Haut + ((Haut / NB_Rect_par_Colonne) * i)
    Next i
    Range("A1").Select
End Sub

Bonnes fêtes de fin d'année

Cdlt

Rechercher des sujets similaires à "graphique histogramme empile axes"