(RESOLU) Graphique avec lignes max mini

LBi

XLDnaute Junior
Bonjour,

Peut-on ajouter 2 lignes horizontales en pointillé ou en couleur comme sur le graphique B de l'image (ajouté à la main sur l'image pour l'explication) pour suggérer la plage des valeurs normales quand la normale est comprise entre 2 valeurs ou 1 ligne quand la normale est "inf à"

Le graphique A est obtenu par une macro écrite par @job75

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ChartObjects(1).Visible = False 'masque le graphique
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 2 Or Target.Row < 4 Then Exit Sub
Dim c As Range, v, n%, a(), b(), Lmax%
Cancel = True
For Each c In Intersect(Rows(3), UsedRange)
v = Cells(Target.Row, c.Column)
If IsDate(c) And v <> "" Then
n = n + 1
ReDim Preserve a(1 To n): ReDim Preserve b(1 To n)
a(n) = c.Text
b(n) = v
If Len(v) > Lmax Then Lmax = Len(v)
End If
Next
If n = 0 Then Exit Sub
Unprotect 'déprotection, mot de passe à adapter
ThisWorkbook.Names.Add "X", a 'nom défini
ThisWorkbook.Names.Add "Y", b 'nom défini
With ChartObjects(1)
.Top = Target(2, 1).Top
.Left = Columns(6).Left
.Width = Columns(6).Resize(, 4 * n).Width
With .Chart.SeriesCollection(1)
.Name = Target(1)
.XValues = "='" & ThisWorkbook.Name & "'!X" 'abscisses
.Values = "='" & ThisWorkbook.Name & "'!Y" 'ordonnées
.MarkerSize = 14 + 3 * Lmax 'taille des marqueurs
End With
.Visible = Not .Visible 'affiche/masque le graphique
End With
Protect 'protection, mot de passe à adapter
End Sub


Merci

Capture45.JPG
 

Pièces jointes

  • Tableau biologique graphique.xlsm
    542.3 KB · Affichages: 29

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour,

Peut-on ajouter 2 lignes horizontales en pointillé ou en couleur comme sur le graphique B de l'image (ajouté à la main sur l'image pour l'explication) pour suggérer la plage des valeurs normales quand la normale est comprise entre 2 valeurs ou 1 ligne quand la normale est "inf à"
:rolleyes: plutot que des lignes horizontales ,la proposition tenant compte des variations des limites selon les dates :
https://www.excel-downloads.com/attachments/tableau-biologique-4-bis-1-xlsm.1016131/
n'est-elle pas explicite ?
 

LBi

XLDnaute Junior
Bonjour,

@Modeste geedee

Le premier graphique avec les lignes Min Max est plus parlant pour moi.

- le fait de prendre en compte le temps est une bonne idée avec des espaces différents entres les données suivant les dates mais il faudrait que seule les dates d’examen soient prise en compte, sans l'affichage des dates intermédiaires. Possible ou pas sur mon graphique ?

Mes souhaits...
- Texte des étiquettes de données en noir au dessus des pastilles et qu'il se mette en rouge si en dehors des normales.
- Pouvoir changer les paramètres des lignes Min Max (couleur, transparence,pointillé ...) ainsi que d'autres paramètres que je voudrais affiner.
- Y a t'il une liste de paramètres généraux pour pouvoir adapter le style des graphiques en vba ?
- Ou dois-je les insérer dans la macro ( je pense que ce doit être dans la boucle With .Chart.SeriesCollection(1) )

Merci de vos retours

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ChartObjects(1).Visible = False 'masque le graphique
End Sub
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 2 Or Target.Row < 4 Then Exit Sub
Dim c As Range, v, v1, v2, n%, a(), b(), b1(), b2(), Lmax%
Cancel = True
For Each c In Intersect(Rows(3), UsedRange)
v = Cells(Target.Row, c.Column)
v1 = Cells(Target.Row, c.Column + 1)
v2 = Cells(Target.Row, c.Column + 3)
If IsDate(c) And v <> "" Then
n = n + 1
ReDim Preserve a(1 To n): ReDim Preserve b(1 To n)
ReDim Preserve b1(1 To n): ReDim Preserve b2(1 To n)
a(n) = c.Text
b(n) = v: b1(n) = v1: b2(n) = v2
If Len(v) > Lmax Then Lmax = Len(v)
End If
Next
If n = 0 Then Exit Sub
Unprotect 'déprotection, mot de passe à adapter
ThisWorkbook.Names.Add "X", a 'nom défini
ThisWorkbook.Names.Add "Y", b 'nom défini
ThisWorkbook.Names.Add "BorneInf", b1 'nom défini
ThisWorkbook.Names.Add "BorneSup", b2 'nom défini
With ChartObjects(1)
.Top = Target(2, 1).Top
.Left = Columns(6).Left
.Width = Columns(6).Resize(, 4 * n).Width
With .Chart.SeriesCollection(1)
.Name = Target(1)
.XValues = "='" & ThisWorkbook.Name & "'!X" 'abscisses
.Values = "='" & ThisWorkbook.Name & "'!Y" 'ordonnées
.MarkerSize = 14 + 3 * Lmax 'taille des marqueurs
End With
With .Chart.SeriesCollection(2)
.Name = "BorneInf"
.XValues = "='" & ThisWorkbook.Name & "'!X" 'abscisses
.Values = "='" & ThisWorkbook.Name & "'!BorneInf" 'ordonnées
End With
With .Chart.SeriesCollection(3)
.Name = "BorneSup"
.XValues = "='" & ThisWorkbook.Name & "'!X" 'abscisses
.Values = "='" & ThisWorkbook.Name & "'!BorneSup" 'ordonnées
End With
.Chart.ChartTitle.Text = Target(1)
.Visible = Not .Visible 'affiche/masque le graphique
End With
Protect 'protection, mot de passe à adapter
End Sub
 

LBi

XLDnaute Junior
Bonjour,

Merci cela fonctionne.

Je pensais que le graphique étant programmé, il fallait repasser par cette programmation. J'ai juste effacé la ligne ".MarkerSize = 14 + 3 * Lmax 'taille des marqueurs " pour pouvoir réduire les marqueurs ( les étiquettes de données sont au dessus des marqueurs ).

Comme je le disais plus haut ...
Est-il possible de prendre en compte le temps entre les dates et de créer un espace différent entres ces dates sans l'affichage des dates intermédiaires comme sur le deuxième graphique ?

Capture15.JPG


Bon dimanche
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 912
Membres
101 837
dernier inscrit
Ugo