Bonjour le forum
Dranreb, je n'avais pas vu ton post plus tôt, je n'aime pas trop polémiquer mais je ne peux laisser sans réponse. Pour illustrer ce que j'ai dit, je prends un cas simple:
1000 lignes et 1000 colonnes, je remplis un tableau visual basic avec une boucle (pas la peine de me préciser qu'il y a plus simple pour remplir un tableau, je le sais, c'est pour la démo)
Deux procédures, une avec Evaluate, une avec une référence précise, un code pour mesurer le temps de traitement.
Aucune formule, aucun nom, une valeur texte dans chaque cellule
Si je suis ton affirmation, il ne devrait y avoir aucune différence de temps de traitement.
Bien cordialement
voici les codes :
Sub Remplissage_Tableau_Evaluate()
  Dim Heure_Résultat(1 To 4) As Integer, Heu_Deb As Double, Heu_Fin As Double, Heu_Temp As Double
  Dim Compteur As Integer, Compteur2 As Integer
  Dim Tab_Test(0 To 999, 0 To 999) As String, Message_Résultat As String
   
  'début timer
  Heu_Deb = Timer
  'début test
  For Compteur = 0 To 999
  For Compteur2 = 0 To 999
  Tab_Test(Compteur, Compteur2) = [A1].Offset(Compteur2, Compteur).Value
  Next Compteur2
  Next Compteur
  'calcul temps d'exécution
  Heu_Fin = Timer - Heu_Deb
  If Heu_Fin < 0 Then Heu_Fin = Heu_Fin + 86400 'si passe minuit
  Heure_Résultat(1) = Fix(Heu_Fin / 3600)
  Heure_Résultat(2) = Fix((Heu_Fin - (Heure_Résultat(1) * 3600)) / 60)
  Heure_Résultat(3) = Fix(Heu_Fin - ((Heure_Résultat(1) * 3600) + (Heure_Résultat(2) * 60)))
  Heure_Résultat(4) = CInt((Heu_Fin - Fix(Heu_Fin)) * 100)
  If Heure_Résultat(1) = 0 Then
  If Heure_Résultat(2) = 0 Then
  If Heure_Résultat(3) = 0 Then
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  Else
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(3), 2) & " secondes, " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  End If
  Else
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(2), 2) & " minutes, " & Right("0" & Heure_Résultat(3), 2) & " secondes, " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  End If
  Else
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(1), 2) & " heures, " & Right("0" & Heure_Résultat(2), 2) & " minutes, " & Right("0" & Heure_Résultat(3), 2) & " secondes, " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  End If
   
  MsgBox Message_Résultat
   
End Sub
Sub Remplissage_Tableau_Référencé()
  Dim Heure_Résultat(1 To 4) As Integer, Heu_Deb As Double, Heu_Fin As Double, Heu_Temp As Double
  Dim Compteur As Integer, Compteur2 As Integer
  Dim Tab_Test(0 To 999, 0 To 999) As String, Message_Résultat As String
   
  'début timer
  Heu_Deb = Timer
  'début test
  For Compteur = 0 To 999
  For Compteur2 = 0 To 999
  Tab_Test(Compteur, Compteur2) = ActiveSheet.Range("A1").Offset(Compteur2, Compteur).Value
  Next Compteur2
  Next Compteur
  'calcul temps d'exécution
  Heu_Fin = Timer - Heu_Deb
  If Heu_Fin < 0 Then Heu_Fin = Heu_Fin + 86400 'si passe minuit
  Heure_Résultat(1) = Fix(Heu_Fin / 3600)
  Heure_Résultat(2) = Fix((Heu_Fin - (Heure_Résultat(1) * 3600)) / 60)
  Heure_Résultat(3) = Fix(Heu_Fin - ((Heure_Résultat(1) * 3600) + (Heure_Résultat(2) * 60)))
  Heure_Résultat(4) = CInt((Heu_Fin - Fix(Heu_Fin)) * 100)
  If Heure_Résultat(1) = 0 Then
  If Heure_Résultat(2) = 0 Then
  If Heure_Résultat(3) = 0 Then
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  Else
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(3), 2) & " secondes, " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  End If
  Else
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(2), 2) & " minutes, " & Right("0" & Heure_Résultat(3), 2) & " secondes, " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  End If
  Else
  Message_Résultat = "Tableau rempli en " & Right("0" & Heure_Résultat(1), 2) & " heures, " & Right("0" & Heure_Résultat(2), 2) & " minutes, " & Right("0" & Heure_Résultat(3), 2) & " secondes, " & Right("0" & Heure_Résultat(4), 2) & " centièmes"
  End If
   
  MsgBox Message_Résultat
   
End Sub