Bonjour a tous,
je coince sur une erreur subscript out of range.
Lorsque j'essaie de traiter des tableaux (cf fichier joint), je me retrouve avec cette erreur. Je ne comprends pas pourquoi car lorsque je lance le programme sur un faible nombre de ligne, le code ci-dessous fonctionne tres bien.
Est-ce que quelqu'un a deja eu ce type de probleme ?
Merci pour votre aide.
Bien cordialement
je coince sur une erreur subscript out of range.
Lorsque j'essaie de traiter des tableaux (cf fichier joint), je me retrouve avec cette erreur. Je ne comprends pas pourquoi car lorsque je lance le programme sur un faible nombre de ligne, le code ci-dessous fonctionne tres bien.
Code:
Sub Stat2DTab()
Set f = Sheets("mb25_cutting_+_mb25_sewing")
TblBD = f.Range("A2:C" & f.[A65000].End(xlUp).Row).Value ' Array pour rapidité
colCrit1 = 1: colCrit2 = 2: colOper = 3
Set Result = f.Range("f1") ' Adresse résultat
Set d1 = CreateObject("Scripting.Dictionary") ' Dictionnaire index pour rapidité
Set d2 = CreateObject("Scripting.Dictionary")
Dim TblTot(): ReDim TblTot(1 To UBound(TblBD), 1 To UBound(TblBD, 2))
Dim TblTotLig(): ReDim TblTotLig(1 To UBound(TblBD))
Dim TblTotCol(): ReDim TblTotCol(1 To UBound(TblBD, 2))
For i = LBound(TblBD) To UBound(TblBD)
clé1 = TblBD(i, colCrit1): If d1.exists(clé1) Then lig = d1(clé1) Else d1(clé1) = d1.Count + 1: lig = d1.Count
clé2 = TblBD(i, colCrit2): If d2.exists(clé2) Then col = d2(clé2) Else d2(clé2) = d2.Count + 1: col = d2.Count
TblTot(lig, col) = TblTot(lig, col) + TblBD(i, colOper)
TblTotLig(lig) = TblTotLig(lig) + TblBD(i, colOper)
TblTotCol(col) = TblTotCol(col) + TblBD(i, colOper)
Next i
Result.Offset(1).Resize(d1.Count, 1) = Application.Transpose(d1.keys) ' titre lignes
Result.Offset(, 1).Resize(1, d2.Count) = d2.keys ' titres colonnes
Result.Offset(1, 1).Resize(d1.Count, d2.Count) = TblTot ' stat 2D
Result.Offset(d1.Count + 1, 1).Resize(, d2.Count) = TblTotCol ' totaux colonnes
Result.Offset(1, d2.Count + 1).Resize(d1.Count) = Application.Transpose(TblTotLig) ' totaux lignes
End Sub
Est-ce que quelqu'un a deja eu ce type de probleme ?
Merci pour votre aide.
Bien cordialement