1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| Option Explicit
Sub Traitement()
Const Pas As Double = 0.1
Dim LastLig As Long, i As Long, j As Long
Dim Tb, Res(), X, Y
Dim Ch As Chart
Application.ScreenUpdating = False
With Worksheets("Feuil1")
If .ChartObjects.Count > 0 Then .ChartObjects(1).Delete
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
If LastLig > 0 Then
Tb = .Range("A2").Resize(LastLig, 4)
Tb(1, 4) = Tb(1, 1)
For i = 2 To LastLig
Tb(i, 4) = Tb(i, 1) + Tb(i - 1, 4)
Next i
i = 1
Do
DoEvents
ReDim Preserve Res(1 To 3, 1 To j + 1)
Res(1, j + 1) = j * Pas
Res(2, j + 1) = Tb(i, 2)
If j * Pas > Tb(i, 4) Then
Res(3, j + 1) = Tb(i, 3)
i = i + 1
End If
j = j + 1
Loop While i <= LastLig
.Range("G2").Resize(j, 3) = Application.Transpose(Res)
X = .Range("G2").Resize(j)
Y = .Range("H2").Resize(j)
.Range("G2").Resize(j, 3).ClearContents
Set Ch = .ChartObjects.Add(240, 20, 600, 340).Chart
With Ch
.ChartType = xlColumnClustered
.ChartArea.ClearContents
.HasLegend = False
.HasTitle = False
.ChartGroups(1).GapWidth = 0
With .SeriesCollection.NewSeries
.XValues = X
.Values = Y
.Interior.Color = RGB(0, 120, 0)
.ApplyDataLabels
For i = 1 To j
With .Points(i).DataLabel
.Text = Res(3, i)
.Font.Size = 9
.Orientation = 90
End With
Next i
End With
End With
End If
End With
End Sub |
Partager