Sub Traitement()
Dim Début As Date, Fin As Date, I As Long
Dim LigneDébut As Integer, LigneFin As Integer
Dim Total As Double, Min As Double, Max As Double
Dim MaxDate As Date, MinDate As Date
Range('Max') = ''
Range('Min') = ''
Range('Moyenne') = ''
If IsDate(Range('Début').Value) Then
Début = Range('Début').Value
Else
MsgBox 'Date de début non valide', vbCritical
Exit Sub
End If
If IsDate(Range('Fin').Value) Then
Fin = Range('Fin').Value
Else
MsgBox 'Date de fin non valide', vbCritical
Exit Sub
End If
For I = 2 To Range('A2').End(xlDown).Row
If CDate(Range('A' & I)) = Début Then LigneDébut = I
If CDate(Range('A' & I)) = Fin Then
LigneFin = I
Exit For
End If
Next I
If LigneDébut = 0 Then
MsgBox 'Date de début non trouvée', vbInformation
Exit Sub
End If
If LigneFin = 0 Then
MsgBox 'Date de fin non trouvée', vbInformation
Exit Sub
End If
Min = 100
Max = -100
For I = LigneDébut To LigneFin
Total = Total + Range('B' & I).Value
If Range('B' & I).Value > Max Then
Max = Range('B' & I).Value
MaxDate = CDate(Range('A' & I).Value)
End If
If Range('B' & I).Value < Min Then
Min = Range('B' & I).Value
MinDate = CDate(Range('A' & I).Value)
End If
Next I
Range('MaxDate') = MaxDate
Range('MinDate') = MinDate
Range('Max') = Max
Range('Min') = Min
Range('Moyenne') = Total / (LigneFin - LigneDébut + 1)
End Sub