Presque
On va transformer ton code comme ça :
Range("A1048576").End(xlUp).Row
et encore mieux, comme ça :
Range("A" & Rows.Count).End(xlUp).Row
car le code donné ne marchera pas sur Excel inférieur à 2007 étant donné qu'il n'y a que 65536 lignes.
Maintenant en prenant en compte la remarque d'eriiic
eriiic a écrit :
- éviter les .select inutiles qui ralentissent
- tu peux mettre ta formule dans une plage complète sans utiliser autofill :
Range("A2:A" & derlig).formula = "=ta_formule_ref_typeA1"
ou
Range("A2:A" & derlig).formulaLocal = "=ta_formule_ref_typeA1_fonctions_en_français"
et notre code ci-dessus, on va avoir quelque chose qui ressemble à ça :
derlig = Range("A" & Rows.Count).End(xlUp).Row
Range("A2:A" & derlig).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[1],BU!C:C[1],2,0),"""")"
Range("D2:D" & derlig).FormulaR1C1 = _
"=IF(RC[3]=""signed"",""Signed"",IF(RC[4]>=80,""Worst Case"",""Best Case""))"
Si on suppose que les colonnes A et D ont le même nombre de lignes.
Le code que tu avais proposé :
I = Range("B1:B65536").Find("").Row - 1
pourrait presque marcher mais dans notre cas, recourir à la méthode Find est moins optimisé que d'utiliser la méthode ci-dessus.