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
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
Il fonctionne bien dans la majorité des cas sur différents PC, mais il dure très longtemps sur un PC.
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

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