Bonjour,
je me suis attaqué à un problème dépassant mes compétences, à savoir supprimer en une seule fois toutes les lignes d'une feuille contenant un "X" en colonne "AN" '(colonne 40)
Les données utiles sont de la colonne "B" à la colonne "AL" mais c'est bien la ligne que je veux supprimer
voilà mon code
Il fonctionne bien dans la majorité des cas sur différents PC, mais il dure très longtemps sur un PC.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Set pl = [AN1].Resize(Cells(Rows.Count, 40).End(xlUp).Row) pl.Value = pl.Value Columns(40).Replace What:="X", Replacement:="=na()", LookAt:=xlWhole On Error GoTo fin Set pl = Intersect(Columns("B:AL"), Columns(40).SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow) For Each shp In ActiveSheet.Shapes If Not Intersect(pl, shp.TopLeftCell.MergeArea(1)) Is Nothing Then shp.Delete: nb = nb + 1 Next pl.EntireRow.Delete fin: Set pl = Nothing
Après avoir fait multiples tests et installés des timer je constate que lorsqu'il y a un temps d'exécution très long cela se passe sur la ligne
de l'ordre de 30 mn... contre 2 secondes en temps normal
Code : Sélectionner tout - Visualiser dans une fenêtre à part pl.EntireRow.Delete
Je n'ai aucune idée du pourquoi, mais vous pouvez surement m'aider à optimiser ce bout de code pour essayer de résoudre le pb
merci d'avance
Partager