Option Explicit
Const lignes As Long = 900000
Sub byvarianttableau_doubleboucletablo() '2boucles incrémentées
Dim Montab As Variant, T$, i&, j&, tim#
ReDim Montab(1 To lignes, 1 To 3)
tim = Timer
For i = LBound(Montab, 1) To UBound(Montab, 1)
For j = LBound(Montab, 2) To UBound(Montab, 2)
Next j
Next i
MsgBox "formule VARIABLE TABLEAU sur [A1].Resize(" & lignes & ", 3) :" & vbCrLf & Format(Timer - tim, "#0.00 SEC")
'chez moi résultat 0.14 / 0.15 secondes
End Sub
Sub byvarianttableau_doubleboucletablorange() '2boucles incrémentées sur range-->tablo variant la moitié du temps si range vide
Dim Montab As Variant, T$, i&, j&, tim#
Montab = [A1].Resize(lignes, 3).Value
tim = Timer
For i = LBound(Montab, 1) To UBound(Montab, 1)
For j = LBound(Montab, 2) To UBound(Montab, 2)
Next j
Next i
MsgBox "formule VARIABLE TABLEAU sur [A1].Resize(" & lignes & ", 3) :" & vbCrLf & Format(Timer - tim, "#0.00 SEC")
'chez moi résultat 0.80 / 0.95 secondes si pleines et 00.32/ 0.33 si vides
End Sub
Sub byvarianttableau_simpleboucleforeach()
Dim Montab As Variant, T$, elements, tim#
ReDim Montab(1 To lignes, 1 To 3)
tim = Timer
For Each elements In Montab
Next
MsgBox "formule VARIABLE TABLEAU sur [A1].Resize(" & lignes & ", 3) :" & vbCrLf & Format(Timer - tim, "#0.00 SEC")
'chez moi résultat 0.18 / 0.19 secondes
End Sub
Sub byvarianttableau_simpleboucleforeachtablorange() '1 boucle sur range-->tablo variant la moitié du temps si range vide
Dim Montab As Variant, T$, elements, tim#
Montab = [A1].Resize(lignes, 3).Value
tim = Timer
For Each elements In Montab
Next
MsgBox "formule VARIABLE TABLEAU sur [A1].Resize(" & lignes & ", 3) :" & vbCrLf & Format(Timer - tim, "#0.00 SEC")
'chez moi résultat 1.10 / 1.25 secondes si pleines et 00.35/ 0.37 si vides
End Sub