Bonjour à tous,
@Yvouille
Quelques petits conseils si je peux me permettre sur la solution que tu proposes.
1- maintenant que les limites d'Excel en termes de lignes ont été repoussées depuis la sortie d'Excel 2007 (1 048 576 exactement), il devient judicieux d'écrire :
Range("A" & Rows.Count).End(xlUp).Row
plutôt que
Range("A65536").End(xlUp).Row
2- En déclarant la variable i en integer, tu vas rencontrer une erreur de dépassement de capacité si le nombre de ligne dépasse 32767 (valeur max que peut prendre un Integer)
3- Par rapport à la méthode de supprimer une à une les lignes, cela peut devenir relativement long lorsque le nombre de lignes augmente considérablement.
Le code suivant fait la même chose avec un temps d'exécution un peu plus rapide, et prend un peu moins de place en mémoire étant donné qu'il n'y a que 2 lignes de code et aucune variable à déclarer :
Sub supprimer2()
Application.ScreenUpdating = False
Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Ce code fait simplement appel à la fonction Atteindre (F5) d'Excel en détectant les cellules vides d'une colonne et en effaçant les lignes correspondantes.
Il y a peut-être moyen d'aller encore plus vite en passant par des variables tableau mais cela dépendra des besoins...