Création d'un diagramme avec valeurs min et max et ordonnées non linéaires

Bonjour,

Je n'arrive pas à trouver dans excel la bonne façon de faire un diagramme avec valeurs min et max avec deux catégories (émission et réception) pour chaque étiquette (un animal). De plus, j'aimerais que l'échelle ne soit pas linéaire pour plus de lisibilité. J'ai fait une copie d'écran dans le fichier excel de ce que j'aimerais reproduire, mais en plus beau :)

Merci pour votre aide.

Olivier

Bonjour,

Ce que vous demandez n'est pas possible avec les graphiques disponibles, à moins que les versions les plus récentes le permettent, mais je l'ignore.

Je vous propose ceci, un graphique fait maison mais dont les barres sont dans le prolongement de chaque donnée. Voici ce que ça donne:

olive8064

le fichier, il suffit de cliquer sur le bouton "Fréquence en KHZ (graphique)" pour le rafraîchir

le code utilisé:

Option Explicit

Sub Graphique()
    Dim Largeur_Col As Double
    Dim Valeur_Min As Double, Valeur_Max As Double, Pos_Min As Double, Pos_Max As Double
    Dim Val_Min As Double, Val_Max As Double, x As Double
    Dim Val_Dec_Min As Double, Val_Dec_Max As Double
    Dim Bord_Gauche As Double, Bord_Droit As Double
    Dim Val_Ent_Min As Long, Val_Ent_Max As Long, ValeurSuivante As Long
    Dim DerLig As Long, i As Long, Col_Min_Min As Long, Col_Min_Max As Long, Col_Max_Max As Long
    Dim Butee_Basse_Min As Long, Butee_Haute_Min As Long, Butee_Basse_Max As Long, Butee_Haute_Max As Long
    Dim Pos_Butee_basse_min As Long, Pos_Butee_haute_min As Long, Pos_Butee_basse_max As Long, Pos_Butee_haute_max As Long
    Dim Img As Object

    Application.ScreenUpdating = False
    DerLig = Range("B" & Rows.Count).End(xlUp).Row
    'Forçage de la largeur de colonne à 8.43 et hauteur de ligne à 12.75, ceci pour avoir la même régulartité dans l'affichage des barres
    Columns("F:O").ColumnWidth = 8.43
    Rows("2:" & DerLig).RowHeight = 12.75

    'Destruction de toutes les barres graphiques existantes
    For Each Img In ActiveSheet.Shapes
        If Left(Img.Name, 9) = "Rectangle" Then Img.Delete
    Next

    'Création des nouvelles barres graphiques
    For i = 2 To DerLig
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, 10, 10, 10, 10).Name = "Rectangle " & i - 1
        Val_Min = Cells(i, "C")
        Val_Max = Cells(i, "D")

        'délimitation de la valeur minimum
        Col_Min_Min = Application.Match(Val_Min, Range("A1:O1"), 1) 'colonne de la butée basse à laquelle appartient la valeur mini
        Butee_Basse_Min = Cells(1, Col_Min_Min) 'butée basse à laquelle appartient la valeur mini
        Butee_Haute_Min = Cells(1, Col_Min_Min + 1) 'butée haute à laquelle appartient la valeur mini
        Pos_Butee_basse_min = Cells(1, Col_Min_Min).Left 'position du bord gauche de la cellule de la valeur mini
        Pos_Butee_haute_min = Cells(1, Col_Min_Min + 1).Left 'position du bord droit de la cellule de la valeur mini
        x = (Val_Min - Butee_Basse_Min) / (Butee_Haute_Min - Butee_Basse_Min) 'déterminer la position du point entre les 2 butées
        Bord_Gauche = Pos_Butee_basse_min + (x * 48) '48= nombre de pixels pour une largeur de colonne de 8.43

        'délimitation de la valeur maximum
        Col_Min_Max = Application.Match(Val_Max, Range("A1:O1"), 1) 'colonne de la butée haute à laquelle appartient la valeur maxi
        Butee_Basse_Max = Cells(1, Col_Min_Max) 'butée basse à laquelle appartient la valeur maxi
        Butee_Haute_Max = Cells(1, Col_Min_Max + 1) 'butée haute à laquelle appartient la valeur maxi
        Pos_Butee_basse_max = Cells(1, Col_Min_Max).Left 'position du bord gauche de la cellule de la valeur maxi
        Pos_Butee_haute_max = Cells(1, Col_Min_Max + 1).Left 'position du bord droit de la cellule de la valeur maxi
        x = (Val_Max - Butee_Basse_Max) / (Butee_Haute_Max - Butee_Basse_Max) 'déterminer la position du point entre les 2 butées
        Bord_Droit = Pos_Butee_basse_max + (x * 48) '48= nombre de pixels pour une largeur de colonne de 8.43

        'Placement et couleur
        With ActiveSheet.Shapes("Rectangle " & i - 1)
            .Top = Cells(i, "B").Top + 2
            .Left = Bord_Gauche
            .Height = Cells(i, "B").Height - 4
            .Width = Bord_Droit - Bord_Gauche

            If i Mod 2 = 0 Then
                .OLEFormat.Object.Interior.Color = RGB(118, 113, 113)
            Else
                .OLEFormat.Object.Interior.Color = RGB(197, 90, 17)
            End If
        End With
    Next i
End Sub

Cdlt

bonjour, avec les graphiques disponibles (quick and dirty)

image

bonjour, même avec un axe à choisir ... (quick et dirty)

un grand merci à vous deux, c'est top ! Bravo

Bonjour,

j'ai repris ma proposition afin d'améliorer l'esthétique de la présentation,

-affichage des barres en 3D avec un dégradé de couleurs.

-La zone des titres des fréquences est aussi traitée avec un dégradé de couleurs, bleue(basse fréquence) à rouge (hautes fréquences)

-Ajout des étiquettes des valeurs encadrant les barres .

Le rendu:

olive8064 1

le fichier

Cdlt

waw, impressionnant !

Rechercher des sujets similaires à "creation diagramme valeurs min max ordonnees lineaires"