Bonsoir,
Le code me donne un erreur "variable non définie" au niveau de S_Max sur excel 2013 mais pas sur le 2007
Sub S2_S1()
Dim NumAn As String
Dim N As Integer, NumS1 As Integer, NumS2 As Integer
Dim Dico, k, i, Tablo()
Dim C As Range
Dim R_Max As Double, R_Min As Double
Dim A_Max As String, A_Min As String
Set Dico = CreateObject("Scripting.dictionary")
NumAn = Year(Date)
NumS1 = DatePart("ww", Date, vbMonday, vbFirstFourDays) - 1
NumS2 = DatePart("ww", Date, vbMonday, vbFirstFourDays) - 2
With ThisWorkbook.Worksheets("Feuil1")
For Each C In .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row)
If _
(DatePart("ww", C.Offset(0, -1).Value, vbMonday, vbFirstFourDays) = NumS1 Or _
DatePart("ww", C.Offset(0, -1).Value, vbMonday, vbFirstFourDays) = NumS2) And _
Year(C.Offset(0, -1).Value) = NumAn Then
If Not Dico.Exists(C.Value) Then
Dico.Add C.Value, C.Value
N = N + 1
ReDim Preserve Tablo(1 To 3, 1 To N)
Tablo(1, N) = C.Value
If DatePart("ww", C.Offset(0, -1).Value, vbMonday, vbFirstFourDays) = NumS1 Then
Tablo(2, N) = C.Offset(0, 1) 'Résultat S-1
ElseIf DatePart("ww", C.Offset(0, -1).Value, vbMonday, vbFirstFourDays) = NumS2 Then
Tablo(3, N) = C.Offset(0, 1) 'Résultat S-2
End If
Else
For i = 1 To UBound(Tablo, 2)
If Tablo(1, i) = C.Value Then
If DatePart("ww", C.Offset(0, -1).Value, vbMonday, vbFirstFourDays) = NumS1 Then
Tablo(2, i) = Tablo(2, i) + C.Offset(0, 1) 'Résultat S-1
ElseIf DatePart("ww", C.Offset(0, -1).Value, vbMonday, vbFirstFourDays) = NumS2 Then
Tablo(3, i) = Tablo(3, i) + C.Offset(0, 1) 'Résultat S-2
End If
End If
Next i
End If
End If
Next C
R_Max = 0
R_Min = 9 ^ 9
For i = 1 To UBound(Tablo, 2)
If Tablo(2, i) - Tablo(3, i) > R_Max Then
R_Max = Tablo(2, i) - Tablo(3, i)
A_Max = Tablo(1, i)
End If
If Tablo(2, i) - Tablo(3, i) < R_Min Then
R_Min = Tablo(2, i) - Tablo(3, i)
A_Min = Tablo(1, i)
End If
Next i
If R_Max > 0 Then S_Max = "+ "
If R_Min > 0 Then S_Min = "+ "
.Range("E14") = A_Max & " ( " & S_Max & R_Max & " )"
.Range("E17") = A_Min & " ( " & S_Min & R_Min & " )"
End With
End Sub