Bonjour,
tu utilises une boucle pour remplir les formules
chose que je n'ai pas fais, et c'était justement le but de l'utilisation de FormulaR1C1Code:
1
2
3 For i = 3 To finColDist .Cells(i, 46).FormulaR1C1 = "=IF(COUNTIF(R3C51:R" & finColOt & "C51,R" & i & "C[-31])>0,""O"",""N"")" Next i
cela n'a donc rien d'étonnant que ta procédure tourne 5 minutes :
- placer 35 000 formules gourmandes, cellules par cellule
- ne pas désactiver le recalcul automatique
==> à chaque cellule traitée, tout le classeur est recalculé ... donc 35 000 recalculs qui au fur et à mesure sont de plus en plus long.
cf mes différentes intervention à ce sujet
Citation:
là je t'ai proposé ce qu'il me semble être le plus rapide pour manipuler/écrire une formule Excel (gourmande) sur 35 000 lignes. Y'a aucune boucle et aucun ralentisseur (select, activate etc...).
Le seul angle optimissable c'est de neutraliser le recalcul de la feuille et le rafraichissement d'écran.
Citation:
Les boucles sont inutiles pour la formule
Citation:
Astuce : si tu passes par une formule relative (.FormulaR1C1), tu auras la possibilité, sans aucune boucle, d'appliquer ta formule sur l'ensemble de ta plage.