Bon ! Ta macro était un agrégat d'éléments disparates !
Réécrite entièrement, elle donne finalement le résultat attendu, bien qu'un peu lente à mon goût (mais c'est un peu inhérent à la méthode utilisée) . Du coup, je ne sais quel était exactement le problème...
Sub Copierpage()
Dim i As Integer, DernLigne As Integer
With Worksheets("extrait")
Worksheets("Qualite").Range("A1:AZ4000").Copy .Range("A1:AZ4000")
DernLigne = .Range("A" & Rows.Count).End(xlUp).Row
.Range("T2:T" & DernLigne).Value = .Range("T2:T" & DernLigne).Value
.Range("A:E,I:J,P:Q,AA:AG,AJ:AT").Delete
For i = DernLigne To 2 Step -1
If Year(.Cells(i, 1).Value) = 2014 Then .Rows(i).Delete
If UCase(.Cells(i, 2).Value) = "TRANE" Then .Rows(i).Delete
If .Cells(i, 15) <> 0 And .Cells(i, 15) <> "" Then .Rows(i).Delete
Next i
End With
End Sub
J'ai introduit une ligne avant suppression des colonnes pour passer la colonne T (qui est conservée) en valeurs, ses formules étant cassées par la suppression de la colonne AG.
Cordialement.