Voici le résultat d'un petit test de chargement en mémoire d'un grand tableau.
Je compare un chargement direct dans une variable tableau vs. un chargement cellule par cellule.
Voici le fichier.
Les résultats sont sans appels...
Et le code du fichier qui vous montre une des façons de créer un timer dans du VBA:
Sub Bouton1_Cliquer() 'Definition des variables Dim arrPlage() As Variant Dim t As String Dim i As Long Dim j As Long 'On charge directement les valeurs t = "Début du programme : " & Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00") arrPlage = ActiveSheet.UsedRange.Value t = t & vbCrLf & "Fin mise en mémoire usedrange values: " & _ Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00") 'On charge les formules arrPlage = ActiveSheet.UsedRange.FormulaR1C1 t = t & vbCrLf & "Fin mise en mémoire usedrange formula: " & _ Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00") 'on charge en lisant cellule par cellule For i = LBound(arrPlage, 1) To UBound(arrPlage, 1) For j = LBound(arrPlage, 2) To UBound(arrPlage, 2) arrPlage(i, j) = ActiveSheet.Cells(i, j).Value Next Next t = t & vbCrLf & "Fin mise en mémoire par lecture de chaque cellule : " & _ Application.WorksheetFunction.Text([now()] - tStart, "h:mm:ss.00") 'on affiche le resultat. MsgBox t End Sub
Pour en savoir plus sur les variables tableaux, vous pouvez consulter cette formation:
https://www.xlerateur.com/collection-vba-avance-volume-3-les-variables-tableaux-en-vba-2/
A bientôt
Gaetan