Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

(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

 

Pièces jointes

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

job75

XLDnaute Barbatruc
Bonjour LBi, le forum,

Il suffit de créer 2 autres séries BorneInf et BorneSup et de les adapter à chaque fois.

Fichier joint.

A+
 

Pièces jointes

  • Tableau biologique graphique(1).xlsm
    548.1 KB · Affichages: 28

Modeste geedee

XLDnaute Barbatruc
Bonsour® 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
 

job75

XLDnaute Barbatruc
Bonjour LBi,

Il paraît bien inutile d'automatiser la mise en forme du graphique.

Il suffit de sélectionner manuellement les éléments (séries) à modifier.

Bien sûr après avoir ôté la protection.

A+
 

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 ?



Bon dimanche
 

job75

XLDnaute Barbatruc
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 ?
Je ne sais pas si c'est possible mais de toute façon je n'en vois pas l'intérêt donc je ne chercherai pas.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…