La méthode delete de la classe range a échoué

Bonjour, le code suivant permet de supprimer une ligne d'un tableau si une date n'est pas comprise dans une certaine plage :

Sub TriDate()

    NbLin = Application.WorksheetFunction.CountA(Sheets("Analyse").Range("$A:$A"))
    Dim n As Long
    n = 2

    While n <= NbLin
        If Not (CDate(Sheets("Analyse").Cells(n, 4)) >= CDate(Sheets("MACRO").Cells(15, 2)) And CDate(Sheets("Analyse").Cells(n, 4)) <= CDate(Sheets("MACRO").Cells(15, 4))) Then
            MsgBox n
            Sheets("Analyse").Rows(n).EntireRow.Delete
        Else
            n = n + 1
        End If
    Wend

End Sub

J'obtiens alors l'erreur 1004 : la méthode delete de la classe range a échoué lorsqu'une ligne doit être supprimée... Est-ce dû à la nature de n ? Car quand j'utilise la fonction dans une boucle For, elle fonctionne bien. Mais bon j'en ai besoin dans une boucle while :)

Cordialement

Bonjour Nicole, bonjour le forum

Essaie comme ça :

Sub TriDate()
Dim A As Worksheet
Dim M As Worksheet
Dim DL As Integer
Dim I As Integer

Set A = Worksheets("Analyse")
Set M = Worksheets("MACRO")
DL = A.Cells(Application.Rows.Count, "A").End(xlUp).Row
For I = DL To 2 Step -1
    If Not (CDate(A.Cells(I, 4)) >= CDate(M.Cells(15, 2)) And CDate(A.Cells(I, 4)) <= CDate(M.Cells(15, 4))) Then
        'MsgBox n
        A.Rows(I).Delete
    End If
Next I
End Sub

Merci pour ta réponse rapide.

Bien vu de parcourir le tableau en partant du bas pour contourner le while, ca marche niquel !

A+

Rechercher des sujets similaires à "methode delete classe range echoue"