VBA erreur pastespecial de la classe range

Bonjour,

J'ai un petit soucis sur ce code:

Sub BoucheTrous()

Dim DernLigne As Long
DernLigne = Range("A65536").End(xlUp).Row

For a = 5 To DernLigne
    If Cells(a, 1) = "" Then
        If Cells(a + 1, 1) <> "" Then
            Range(Cells(a + 1, 1), Cells(a + 1, 21)).Copy
            Cells(a, 1).Select
            Selection.PasteSpecial xlPasteValues
            Cells(a + 1, 1).EntireRow.ClearContents
        End If
    End If
Next a

End Sub

Quand je lance il me dit : La méthode PasteSpecial de la classe range a échoué.

Même erreur pour la ligne du dessus : La méthode select de la classe range a échoué.

A savoir que ses erreurs n'apparaissent pas dans un Sub !! Par contre quand je passe la fonction en Private Sub (ce dont j'ai besoin), les erreurs apparaissent....

Si vous avez la solution et l'expliquation j'aimerai bien comprendre pourquoi il fait cette erreur.

EDIT 11:00 ------------------------------------------------

Solution trouvé grâce à un autre topic !!!

Bonjour,

sans avoir testé le code, déjà si tu comptes effacer des données par copier/coller ou déplacer, tu dois commencer par le bas

for a = dernligne to 5 step -1

P.

Bonjour,

Essaie ainsi :

Option Explicit

Sub BoucheTrous()
Dim ws As Worksheet
Dim rng As Range
Dim lRows As Long, I As Long

    Application.ScreenUpdating = False
    Set ws = ActiveSheet
    With ws
        lRows = .Cells(Rows.Count, 1).End(xlUp).Row
        Set rng = .Cells(5, 1).Resize(lRows, 1).SpecialCells(xlCellTypeBlanks)
        rng.EntireRow.Delete
    End With

    Set rng = Nothing: Set ws = Nothing

End Sub
Rechercher des sujets similaires à "vba erreur pastespecial classe range"