Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

graphique dans une cellule

12 réponses
Avatar
Greg
Bonsoir,

En me balladant sur le forum, j'ai rencontré cette adresse:

http://www.dailydoseofexcel.com/archives/2006/02/05/in-cell-charting/

Je trouve formidable cette idée de tableau, avec la cellule reprenant les
valeurs sous forme graphique. Le code semble y être tout écrit... mais je
n'y arrive pas. Quelqu'un aurait-il la gentillesse de me le mettre sous la
forme d'un fichier joint ou de m'expliquer.

Merci

Greg

2 réponses

1 2
Avatar
Greg
OLALA... c'est effectivement très intéressant.

Comment réussir des trucs pareils?

Puisque je vois que j'ai à faire à une sommité du forum, je me permets de
demander une dernière faveur... En fait, je réalise cela pour préparer de
nouveaux bulletins pour les parents et analyser le travail de leur enfant.
Je cherche plus à mettre en évidence une progression qu'un résultat
(progresser me semble plus noble que de battre les autres, question de point
de vue). Les bons élèves ne seront plus ceux qui ont les meilleurs
résultats, mais ceux qui progressent le plus... Bref! Une nouvelle façon
d'observer l'autre...

Le top du top, le fin du fin, serait
- de visualiser la moyenne - en pointillés plutôt que d'une autre couleur -
(de manière à pouvoir photocopier)- superposée au graphique "linechart"
(ici en cellule K1 dans l'exemple joint)
- que la flèche, un peu à la manière de la girouette tout à l'heure, soit
plus ou moins inclinée en fonction de la progression (petite
progressionúible inclinaison vers le haut par exemple). L'idée de la
couleur verte et rouge est excellente! Je me disais (toujours pour les
photocopies, les écoles n'ont pas beaucoup d'argent) qu'il serait peut-etre
même possible de faire une flèche pleine pour les flèches vertes.

Je me rends compte que j'en demande beaucoup, mais ce que vous m'avez déjà
fourni les uns et les autres est déjà formidable pour mon projet. Ce que je
demande ici, c'est la ceriser sur le gâteau.

Merci pour votre investissement... c'est une noble cause me semble t-il...

Greg


"Modeste" a écrit dans le message de
news:
Bonsour® Greg avec ferveur ;o))) vous nous disiez :

J'ai pris mon désir pour la réalité...
;o)))

http://cjoint.com/?bdlzfhJJRu



--
@+
;o)))





Avatar
Francois L

Bonjour,

Une réponse à la première question... (on doit pouvoir adapter à une
courbe si besoin !)

http://cjoint.com/?begEOHPNJt

Ps le code est ci-dessous pour les archives et n'est pas de moi mais je
ne sais plus où je l'ai trouvé.

'------------------------------------------------------------------------
Function BarChart(Points As Range, color As Long) As String
Application.ScreenUpdating = False
Const cMargin = 2, cGap = 6
Dim rng As Range, arr() As Variant, i As Long, j As Long, sng As
Single, sngIntv As Single
Dim sngLeft As Single, sngTop As Single, sngWidth As Single,
sngHeight As Single
Dim sngMin As Single, sngMax As Single, shp As Shape, ValObj As Single

Set rng = Application.Caller

ShapeDelete rng

ValObj = WorksheetFunction.Average(Points)

sngMin = WorksheetFunction.Min(Points)

sngMax = WorksheetFunction.Max(Points)

If sngMin > 0 Then sngMin = 0
If sngMax < 0 Then sngMax = 0

With rng.Worksheet.Shapes

For i = 0 To Points.Count - 1
sng = Points.Cells(i + 1).Value
sngIntv = (rng.MergeArea.Height - (cMargin * 2)) / (sngMax
- sngMin)
sngLeft = cMargin + cGap + rng.Left + (i *
(rng.MergeArea.Width - (cMargin * 2)) / Points.Count)
sngTop = cMargin + rng.Top + IIf(sng < 0, sngMax, sngMax -
sng) * sngIntv
sngWidth = (rng.MergeArea.Width - (cMargin * 2)) /
Points.Count - (cGap * 2)
sngHeight = Abs(sng) * sngIntv
Set shp = .AddShape(msoShapeRectangle, sngLeft, sngTop,
sngWidth, sngHeight)
shp.Line.Visible = msoFalse

'If i = Points.Count Then shp.Fill.ForeColor.RGB = 0 Else
If sng > Seuil Then shp.Fill.ForeColor.RGB = RGB(color,
125, 125) Else shp.Fill.ForeColor.RGB = 203
'If sng > 0 Then shp.Fill.ForeColor.RGB = Color Else
shp.Fill.ForeColor.RGB = 203

On Error Resume Next
j = 0: j = UBound(arr) + 1
On Error GoTo 0
ReDim Preserve arr(j)
arr(j) = shp.Name
Next

sng = (rng.Width - (cMargin * 2)) / Points.Count / 2
sngTop = cMargin + rng.Top + (sngMax - ValObj) * sngIntv
Set shp = .AddLine(cMargin + rng.Left, sngTop, rng.Left +
rng.MergeArea.Width - cMargin, sngTop)
shp.Line.Weight = 0.75
shp.Line.ForeColor.RGB = 203

On Error Resume Next
j = 0: j = UBound(arr) + 1
On Error GoTo 0
ReDim Preserve arr(j)
arr(j) = shp.Name

With rng.Worksheet.Shapes.Range(arr)
.Group
'If Color > 0 Then .Fill.ForeColor.RGB = Color Else
.Fill.ForeColor.SchemeColor = -Color
End With


End With

BarChart = ""
Application.ScreenUpdating = True
End Function
Sub ShapeDelete(rngSelect As Range)
Dim shp As Shape

For Each shp In rngSelect.Worksheet.Shapes
If rngSelect.Address = Range(shp.TopLeftCell,
shp.BottomRightCell).Address Then shp.Delete
Next
End Sub

'---------------------------------------------------------------------------

--
François L

OLALA... c'est effectivement très intéressant.

Comment réussir des trucs pareils?

Puisque je vois que j'ai à faire à une sommité du forum, je me permets de
demander une dernière faveur... En fait, je réalise cela pour préparer de
nouveaux bulletins pour les parents et analyser le travail de leur enfant.
Je cherche plus à mettre en évidence une progression qu'un résultat
(progresser me semble plus noble que de battre les autres, question de point
de vue). Les bons élèves ne seront plus ceux qui ont les meilleurs
résultats, mais ceux qui progressent le plus... Bref! Une nouvelle façon
d'observer l'autre...

Le top du top, le fin du fin, serait
- de visualiser la moyenne - en pointillés plutôt que d'une autre couleur -
(de manière à pouvoir photocopier)- superposée au graphique "linechart"
(ici en cellule K1 dans l'exemple joint)
- que la flèche, un peu à la manière de la girouette tout à l'heure, soit
plus ou moins inclinée en fonction de la progression (petite
progressionúible inclinaison vers le haut par exemple). L'idée de la
couleur verte et rouge est excellente! Je me disais (toujours pour les
photocopies, les écoles n'ont pas beaucoup d'argent) qu'il serait peut-etre
même possible de faire une flèche pleine pour les flèches vertes.

Je me rends compte que j'en demande beaucoup, mais ce que vous m'avez déjà
fourni les uns et les autres est déjà formidable pour mon projet. Ce que je
demande ici, c'est la ceriser sur le gâteau.

Merci pour votre investissement... c'est une noble cause me semble t-il...

Greg


"Modeste" a écrit dans le message de
news:
Bonsour® Greg avec ferveur ;o))) vous nous disiez :

J'ai pris mon désir pour la réalité...
;o)))

http://cjoint.com/?bdlzfhJJRu



--
@+
;o)))









1 2