Histogrammes faciles

Contenu du snippet

Voici une manière très simple de faire des histogrammes...

Il suffit d'utiliser une form avec des labels, et de contrôler la hauteur de ces labels pour en faire un histogramme (on peut ainsi lui donner des couleurs,...). Du haut vers le bas, c'est très simple il suffit de faire une conversion entre la valeur à afficher, et la hauteur maxi du label. De bas en haut, il faut faire un petit calcul supplémentaire pour avoir les labels alignés en bas (voir mon exemple). On peut aussi faire de gauche à droite (facile).

Pour la propriété texte du label, on peut soit laisser vide, soit comme dans mon exemple, mettre un nom à la colonne (les mois par exemple), il faut alors trouver la bonne taille de caractères pour que cela s'ajuste bien.

Source / Exemple :


For i = 1 To 12
        'on va pour chaque valeur de HR, calculer Y et la hauteur du label
        THR = THR + HR(i)    'HR est un tableau contenant les valeurs à afficher
        shA = CType(HR * 2.14, Short)         'j'adapte à la taille maxi de la colonne
        If shA > 236 Then shA = 236 'on limite la taille de la colonne en fonction de la taille de la fenêtre
        If shA = 0 Then shA = 2 'en cas de valeur nulle, on impose 2 pour avoir juste la trace de la base de la colonne
        Select Case i
          Case 0
            lblH1.Top = 236 - shA
            lblH1.Height = shA
            If shA > 134 Then lblH1.BackColor = Color.LightGreen Else lblH1.BackColor = Color.LightSalmon
            If HR > 0 Then lblR1.Text = CType(HR, String) Else lblR1.Text = ""
          Case 1
            lblH2.Top = 236 - shA
            lblH2.Height = shA
            If shA > 134 Then lblH2.BackColor = Color.LightGreen Else lblH2.BackColor = Color.LightSalmon
            If HR > 0 Then lblR2.Text = CType(HR, String) Else lblR2.Text = ""
          Case 2
            lblH3.Top = 236 - shA
            lblH3.Height = shA
            If shA > 134 Then lblH3.BackColor = Color.LightGreen Else lblH3.BackColor = Color.LightSalmon
            If HR > 0 Then lblR3.Text = CType(HR, String) Else lblR3.Text = ""
          Case 3
            lblH4.Top = 236 - shA
            lblH4.Height = shA
            If shA > 134 Then lblH4.BackColor = Color.LightGreen Else lblH4.BackColor = Color.LightSalmon
            If HR > 0 Then lblR4.Text = CType(HR, String) Else lblR4.Text = ""
          Case 4
            lblH5.Top = 236 - shA
            lblH5.Height = shA
            If shA > 134 Then lblH5.BackColor = Color.LightGreen Else lblH5.BackColor = Color.LightSalmon
            If HR > 0 Then lblR5.Text = CType(HR, String) Else lblR5.Text = ""
          Case 5
            lblH6.Top = 236 - shA
            lblH6.Height = shA
            If shA > 134 Then lblH6.BackColor = Color.LightGreen Else lblH6.BackColor = Color.LightSalmon
            If HR > 0 Then lblR6.Text = CType(HR, String) Else lblR6.Text = ""
          Case 6
            lblH7.Top = 236 - shA
            lblH7.Height = shA
            If shA > 134 Then lblH7.BackColor = Color.LightGreen Else lblH7.BackColor = Color.LightSalmon
            If HR > 0 Then lblR7.Text = CType(HR, String) Else lblR7.Text = ""
          Case 7
            lblH8.Top = 236 - shA
            lblH8.Height = shA
            If shA > 134 Then lblH8.BackColor = Color.LightGreen Else lblH8.BackColor = Color.LightSalmon
            If HR > 0 Then lblr8.Text = CType(HR, String) Else lblr8.Text = ""
          Case 8
            lblH9.Top = 236 - shA
            lblH9.Height = shA
            If shA > 134 Then lblH9.BackColor = Color.LightGreen Else lblH9.BackColor = Color.LightSalmon
            If HR > 0 Then lblR9.Text = CType(HR, String) Else lblR9.Text = ""
          Case 9
            lblH10.Top = 236 - shA
            lblH10.Height = shA
            If shA > 134 Then lblH10.BackColor = Color.LightGreen Else lblH10.BackColor = Color.LightSalmon
            If HR > 0 Then lblR10.Text = CType(HR, String) Else lblR10.Text = ""
          Case 10
            lblH11.Top = 236 - shA
            lblH11.Height = shA
            If shA > 134 Then lblH11.BackColor = Color.LightGreen Else lblH11.BackColor = Color.LightSalmon
            If HR > 0 Then lblR11.Text = CType(HR, String) Else lblR11.Text = ""
          Case 11
            lblH12.Top = 236 - shA
            lblH12.Height = shA
            If shA > 134 Then lblH12.BackColor = Color.LightGreen Else lblH12.BackColor = Color.LightSalmon
            If HR > 0 Then lblR12.Text = CType(HR, String) Else lblR12.Text = ""
        End Select
      Next i
      lblTotalHR.Text = Format(THR, "###0.00")

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.