Sub Effacer_Gros_Volume() ' pour un grand nombre de lignes
Dim derlig As Long, dercol, t, i&, Asuppr As String, ColPlus As Boolean, deb#
Feuil2.Range("a:a").Copy Feuil1.Range("h:h") ' initialisation de la colonne H
MsgBox "La colonne H a été initialisée. On va entamer la suppression.", vbInformation
deb = Timer ' top départ pour mesurer le temps d'exécution
Application.ScreenUpdating = False ' plus rapide (écran figé)
With Worksheets("Transferts")
.Select ' sélectionne la feuille
derlig = Cells(Rows.Count, "h").End(xlUp).Row ' N° de la dernière ligne colonne H
Columns("i:i").Insert: ColPlus = True ' on insère une colonne après la colonne H
' cette colonne insérée est la colonne i
dercol = .UsedRange.Column + .UsedRange.Columns.Count ' N° de la dernière colonne
t = Range("h10:h" & derlig).Value ' lecture des valeurs de la colonne H
For i = 1 To UBound(t) ' boucle sur les valeurs de t
' si ça commence par "CA" alors on remplace la valeur par "" sinon par i
If Left(t(i, 1), 2) = "CA" Then t(i, 1) = "" Else t(i, 1) = 1
Next i
.Range("i10:i" & derlig) = t ' on transfère les nouvelles valeurs dans la colonne i
' on trie les lignes de la feuille depuis la ligne 10 jusqu'à derlig selon la colonne i
' toute les lignes à supprimer se retrouve regropupée en un seul bloc
.Range("a10:a" & derlig).Resize(, dercol).Sort [i10], xlAscending, Header:=xlNo
On Error Resume Next ' au cas où aucune ligne ne serait à supprimer (éviter une erreur d'exécution)
' on sélectionne les cellules de la colonne i qui sont vides et on supprime les lignes entières
.Range("i10:i" & derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0 ' on rétablit l'interception des erreurs
If ColPlus Then Columns("i:i").Delete ' on supprime la colonne i qu'on avait insérée
End With
MsgBox Format(Timer - deb, "0.00\ sec."), vbInformation ' le temps d'exécution
End Sub