Graphique pour diabétique
Bonjour a vous tous,
J'ai vraiment besoin d'aide, assez que j'ai mal a la tete (et c'est vrai) tellement je veux y arriver, mais ca ne fonctionne pas comme je le voudrais. Je vais essayé d'etre le plus précis possible.
En premier lieu, je suis diabétique, et je me suis fait un fichier excel pour visualiser mes glycémies beaucoup plus facilement. Je prend mes glycémies matin et soir. Jusque la, aucun probleme. Mais avec des recherches, j'en suis venu a me demander si je pouvait afficher dans le graphique différente couleur pour différente valeur.
C'est alors que je suis tombé sur ce site: http://peltiertech.com/WordPress/conditional-formatting-of-excel-charts/
J'ai alors travaillé fort pour y arriver... mais encore une fois, je me suis frappé a un mur, car l'affichage ne s'effectue pas correctement.
J'ai alors continuer mes recherches, pour tomber sur ce site:
Mais j'ai malheureusement atteint ma limite de la compréhension. J'ai essayer d'allez dans un forum anglophone mais il est trop difficile d'expliquer mon probleme.
J'ai inclu le fichier avec lequel je travail.
Comme vous pouvez voir, certaine colonne dans le graphique sont collé, d'autre sont espacé... rien n'est egale partout... alors je dois suivre les instructions du lien SqueezeColumns, mais je n'y comprend vraiment rien.
Ca ne me derange pas de repartir a zero... mais ce que je voudrais c'est simplement ceci:
- Si ma glycémie est entre 0 et 4, afficher la barre en jaune
- Si ma glycémie est entre 4 et 8, afficher la barre en bleu
- Si ma glycémie est entre 8 et 10, afficher la barre en jaune
- Si ma glycémie est de 10 et plus, afficher la barre en rouge
De plus, je prend ma glycémie deux fois par jour: soit le matin et le soir. Idéalement, dans le graphique, j'aimerais qu'a chaque jour, la colonne du matin et la colonne du soir dans le graphique soit collé l'un sur l'autre, avec un espace jusqu'au jour suivant.
J'espere réellement que quelqu'un pourra m'aider car j'ai le gout de tout simplement lâcher.
bonjour
je te propose ceci, voir les formules des colonnes jaunes. Je n'ai pas fait pour l'ap midi
pj
rem : les valeurs de glycémies vont de 0 (sans s'en approcher) à 5 ou 8. Revois tes valeurs.
Whoa!!!! C'est genial! J'aime cette facon d'afficher...
Mais par contre il y a quelques erreurs.
Par exemple, si le matin j'ai une valeur de 3, la 2e cellule sera en négatif.
De plus le problème restera toujours pareil, c'est de faire le graphique pour les DEUX... c'est a ce moment que le probleme «d'espace» inégale est présent.
Bonsoir,
Ma bonne action du jour peut-être
Voir fichier joint et la surprise avec un appui sur les touches Ctrl + q
A te lire, car tu auras certainement de nombreuses questions,...
Après avoir médité, bien sûr
Cdlt
nb : réalisé sous Excel 2010 en espérant ne pas avoir utilisé de fonctions propres à ma version.
Option Explicit
Public Sub Création_Graphique()
'Ctrl+q
'Jean-Eric Pelouas - le 4 février 2013 - v1.00
'Essai graphique TCD en VBA pour Rambytes
Dim PTCache As PivotCache, PT As PivotTable, PR As Range
Dim Plage As Range
Dim i As Integer, pts As Integer
Dim valeur As Double, temp As String
10 With Application
20 .DisplayAlerts = False
30 .ScreenUpdating = False
40 End With
'Suppression feuilles TCD et Graphique mensuel
50 On Error Resume Next
60 With ActiveWorkbook
70 .Worksheets("TCD").Visible = True
80 .Worksheets("TCD").Delete
90 .Sheets("Graphique_1").Delete
100 End With
110 On Error GoTo 0
'Création tableau croisé dynamique
120 Set Plage = Range("Tableau1[#All]")
130 Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:=Plage)
140 Worksheets.Add after:=Worksheets(Worksheets.Count)
150 ActiveSheet.Name = "TCD"
160 Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("TCD").Range("A1"), _
TableName:="TCD_1")
170 With PT
180 With .PivotFields("Jour")
190 .Orientation = xlRowField
200 End With
210 With .PivotFields("v Matin")
220 .Orientation = xlDataField
230 .Caption = "v Matin "
240 .Function = xlSum
250 .NumberFormat = "0.0"
260 End With
270 With .PivotFields("v Soir")
280 .Orientation = xlDataField
290 .Caption = "v Soir "
300 .Function = xlSum
310 .NumberFormat = "0.0"
320 End With
330 With .PivotFields("m Matin")
340 .Orientation = xlDataField
350 .Caption = "m Matin "
360 .Function = xlSum
370 .NumberFormat = "0.0"
380 End With
390 With .PivotFields("m Soir")
400 .Orientation = xlDataField
410 .Caption = "m Soir "
420 .Function = xlSum
430 .NumberFormat = "0.0"
440 End With
450 With .DataPivotField
460 .Orientation = xlColumnField
470 .Position = 1
480 End With
490 ActiveWorkbook.ShowPivotTableFieldList = False
500 End With
'Création graphique
510 Set PR = PT.TableRange1
520 Charts.Add after:=Worksheets("TCD")
530 With ActiveChart
540 .ChartType = xlColumnClustered
550 .SetSourceData Source:=PR, PlotBy _
:=xlColumns
560 .Location Where:=xlLocationAsNewSheet
570 .Name = "Graphique_1"
580 .SetElement (msoElementDataTableWithLegendKeys)
590 .DataTable.ShowLegendKey = False
600 .ShowLegendFieldButtons = False
610 .ShowValueFieldButtons = False
620 .ChartStyle = 10
630 .ApplyDataLabels Type:=xlDataLabelsShowValue
640 .HasLegend = False
'Mise en forme graphique série valeurs "Matin"
650 pts = .SeriesCollection(1).DataLabels.Count
660 For i = 1 To pts
670 valeur = .SeriesCollection(1).Points(i).DataLabel.Text
680 Select Case CDbl(valeur)
Case Is <= 4
690 temp = rgbYellow
700 Case Is <= 8
710 temp = rgbBlue
720 Case Is <= 10
730 temp = rgbYellow
740 Case Else
750 temp = rgbRed
760 End Select
770 .SeriesCollection(1).Points(i).Format.Fill.ForeColor.RGB = temp
780 Next
790 .SeriesCollection(1).DataLabels.Delete
'Mise en forme graphique série valeurs "Soir"
800 pts = .SeriesCollection(2).DataLabels.Count
810 For i = 1 To pts
820 valeur = .SeriesCollection(2).Points(i).DataLabel.Text
830 Select Case CDbl(valeur)
Case Is <= 4
840 temp = rgbYellow
850 Case Is <= 8
860 temp = rgbBlue
870 Case Is <= 10
880 temp = rgbYellow
890 Case Else
900 temp = rgbRed
910 End Select
920 .SeriesCollection(2).Points(i).Format.Fill.ForeColor.RGB = temp
930 Next
940 .SeriesCollection(2).DataLabels.Delete
'Mise en forme graphique série moyenne mobile "Matin"
950 With .SeriesCollection(3)
960 .ChartType = xlLineStacked
970 .Smooth = True
980 With .Format.Line
990 .ForeColor.RGB = rgbGreen
1000 .Weight = 2
1010 End With
1020 .DataLabels.Delete
1030 End With
'Mise en forme graphique série moyenne mobile "Soir"
1040 With .SeriesCollection(4)
1050 .ChartType = xlLineStacked
1060 .Smooth = True
1070 With .Format.Line
1080 .ForeColor.RGB = rgbBlack
1090 .Weight = 2
1100 End With
1110 .DataLabels.Delete
1120 End With
1130 .HasTitle = True
1140 With .ChartTitle
1150 .Text = "Mesure glycémie " & Worksheets(1).Name
1160 End With
1170 End With
1180 Worksheets("TCD").Visible = xlSheetHidden
1190 Set Plage = Nothing: Set PTCache = Nothing: Set PT = Nothing: Set PR = Nothing
1200 Application.DisplayAlerts = True
End Sub
Effectivement, ca ne fonctionne pas sous mon Excel 2007... Quand j'appuie sur CTRL-Q, j'ai le message suivant:
==============
ERREUR DE COMPILATION
Membre de methode ou de donnée introuvable
==============
Et j'ai cette ligne qui est en surligné:
600 .ShowLegendFieldButtons = False
Je vais essayer de voir si le portable de ma conjointe possede Excel 2010.
Rambytes a écrit :Whoa!!!! C'est genial! J'aime cette facon d'afficher...
Mais par contre il y a quelques erreurs.
Par exemple, si le matin j'ai une valeur de 3, la 2e cellule sera en négatif.
De plus le problème restera toujours pareil, c'est de faire le graphique pour les DEUX... c'est a ce moment que le probleme «d'espace» inégale est présent.
on peut corriger la formule.Si tu veux je te le fais
et tupeux ajouter une colonne pleine de zéros pour avoir un espace