Problème EntireRow.Delete

Bonjour à tous,

Je ne comprends pas le blocage que j'obtiens sur un bout de code tout simple avec la fonction EntireRow.Delete

Dans une première feuille j'ai des données que je copie / colle sur une autre feuille en mode collage spécial valeur / formats

Sur la seconde feuille je veux supprimer les lignes pour lesquelles les valeurs de la colonne 2 sont à vide

Le code est tout simple:

Sub Test()
On Error Resume Next
Feuil1.Range("C2:C4").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Feuil1.Range("A1:J4").Copy
Feuil2.Range("A1:J4").PasteSpecial Paste:=xlPasteValues
Feuil2.Range("A1:J4").PasteSpecial Paste:=xlPasteFormats
ActiveWorkbook.Save
Feuil2.Activate
On Error Resume Next
Feuil2.Range("B2:B4").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Le premier EntireRow.Delete sur la feuil1 fonctionne bien, mais pas celui de la Feuil2 alors qu'il s'agit de la même opération

Ca me rend dingue...Merci à vous

Le fichier

16testmacro2.xlsm (16.29 Ko)

Bonjour,

1) SpecialCells génère une erreur si aucune cellule répond à la condition.
Il faut traiter cette erreur et n'agir que si elle n'a pas eu lieu.
2) Quand tu utilises On Error Resume Next , il faut réactiver le gestionnaire d'erreur dès que l'instruction avec erreur potentielle est passée avec : On Error GoTo 0

Ce qui donne :

Sub Test()
    Dim pl As Range
    On Error Resume Next
    Set pl = Feuil1.Range("C2:C4").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0
    If Not pl Is Nothing Then pl.EntireRow.Delete
    Feuil1.Range("A1:J4").Copy
    Feuil2.Range("A1:J4").PasteSpecial Paste:=xlPasteValues
    Feuil2.Range("A1:J4").PasteSpecial Paste:=xlPasteFormats
    ActiveWorkbook.Save
    Feuil2.Activate
    'Rows("2:4").Select
    On Error Resume Next
    Set pl = Feuil2.Range("B2:B4").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0
    If Not pl Is Nothing Then pl.EntireRow.Delete
End Sub

Je n'ai pas regardé si la logique de ton code correspond à ta description.
Je te donne le principe
eric

Bonjour,

Cela ne résout pas le problème: en fait, la fonction supprime bien les lignes vides, cependant sur Feuil1 les cellules contiennent des formules, donc elles ne sont pas supprimées. C'est pourquoi je les copie/colle en format "Value" sur la Feuil2 afin de supprimer celles qui sont vides. Et c'est là que ça ne marche plus: sur Feuil2, les cellules vides ne sont plus supprimées! Alors qu'elles ne contiennent ni valeur ni formule

Sans doute parce que tes cellules ne sont pas réellement vides et .SpecialCells(xlCellTypeBlanks) n'en trouve pas.

eric

Rechercher des sujets similaires à "probleme entirerow delete"