Sur un fichier avec environ 50.000 lignes que je veux supprimer des lignes qui ne disposent pas d'un nombre spécifique dans la colonne B. J'utilise ce code:Supprimer les lignes si la valeur n'est pas mentionnée dans la gamme
Sub DelRows()
Application.ScreenUpdating = False
Worksheets("2016").Activate
lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For i = lastrow To 2 Step -1
If Cells(i, "B").Value <> "1060" And _
Cells(i, "B").Value <> "1061" And _
Cells(i, "B").Value <> "1062" And _
Cells(i, "B").Value <> "1063" And _
Cells(i, "B").Value <> "1064" And _
Cells(i, "B").Value <> "1105" And _
Cells(i, "B").Value <> "11050" And _
Cells(i, "B").Value <> "11051" And _
Cells(i, "B").Value <> "11053" And _
Cells(i, "B").Value <> "11054" And _
Cells(i, "B").Value <> "1160" And _
Cells(i, "B").Value <> "1161" And _
Cells(i, "B").Value <> "1162" And _
Cells(i, "B").Value <> "1163" And _
Cells(i, "B").Value <> "1164" And _
Cells(i, "B").Value <> "1166" And _
Cells(i, "B").Value <> "1168" And _
Cells(i, "B").Value <> "1169" And _
Cells(i, "B").Value <> "8060" And _
Cells(i, "B").Value <> "8061" And _
Cells(i, "B").Value <> "8062" And _
Cells(i, "B").Value <> "8063" And _
Cells(i, "B").Value <> "8064" And _
Cells(i, "B").Value <> "8068" And _
Cells(i, "B").Value <> "8192" Then
Cells(i, "B").EntireRow.Delete
End If
Next i
End Sub
Cette macro prend beaucoup de temps et il semble y avoir un maximum de 'et-déclarations'.
J'ai essayé de comprendre avec un tableau ou un filtre, mais c'est difficile pour moi en tant que débutant.
Je voudrais mettre les chiffres sur une feuille séparée comme plage par exemple:
A
1 1060
2 1061
3 1062
4 1063
5 1064
…
J'ai essayé de le comprendre à l'article critères varient sur une autre feuille * sur https://www.rondebruin.nl/win/winfiles/MoreDeleteCode.txt, mais Je ne comprends pas complètement ce code VBA.
Quelqu'un peut-il m'aider s'il vous plaît? Cordialement, Richard
Avez-vous essayé d'implémenter ce code? Combien de colonnes de données avez-vous? – SJR
Pour optimiser, essayez d'utiliser l'autofiltre avec un multi-critère de tableau et supprimez les lignes sur une même tâche. Ou si vous ne voulez pas utiliser le filtre, vous pouvez créer une plage non contiguë et supprimer tout d'un coup plus tard. Parce que l'action la plus longue dans votre code, c'est chaque fois que vous effectuez des actions sur votre feuille de calcul, dans votre cas lorsque vous supprimez. Et se référer à [this] (http://www.cpearson.com/excel/optimize.htm), [this] (https://stackoverflow.com/q/30959315/7690982) et [this] (https://stackoverflow.com/questions/46077673/improving-a-loop-to-delete-rows-in-excel-faster). – danieltakeshi