Suppression de ligne VBA

Bonjour,

Je souhaiterais, sur un fichier de 200 onglets, qu'à chaque fois qu'une cellule en colonne Q = 2014, cela me supprime la ligne entière ; sur chaque onglet. J'ai fait une macro qui ne marche pas, et je ne sais pas pourquoi.

Sub suppr()
Dim Ws As Worksheet
Dim j As Long
    Application.ScreenUpdating = False
    For Each Ws In ActiveWorkbook.Worksheets
        If Ws.Name <> " MENU" Then
          For j = [A65000].End(xlUp).Row To 1 Step -1
            If Cells(j, 17) = "2014" Then Rows(j).Delete
          Next j
        End If
    Next Ws
End Sub

Merci d'avance à tous ceux qui m'aideront!

Bonne fin de journée

Bonjour

comme ceci peut-être

if faut définir la feuille a scruter (ws)

    Sub suppr()
    Dim Ws As Worksheet
    Dim j As Long
        Application.ScreenUpdating = False
        For Each Ws In ActiveWorkbook.Worksheets
            If Ws.Name <> " MENU" Then
              For j = Ws.[A65000].End(xlUp).Row To 1 Step -1
                If Ws.Cells(j, 17) = "2014" Then Ws.Rows(j).Delete
              Next j
            End If
        Next Ws
    End Sub

Merci ! Mais quand j'utilise le code que tu mets, cela me met 'Incompatibilité de type" et ça ne le fait que sur le premier onglet..

Re

la feuille serait-elle protégée?

Non rien de protégé dans le fichier

Bonjour, Salut à tous,

Pourquoi un espace au début du nom de l'onglet ?

Salut à tous,

Pas facile sans fichier !

L'incompatibilité de type provient peut-être du test :

If Ws.Cells(j, 17) = "2014"

Si la valeur de la cellule retourne une erreur, ça pose problème.

Essaie avec ça ?

    Sub suppr()
    Dim Ws As Worksheet
    Dim j As Long
        Application.ScreenUpdating = False
        For Each Ws In ActiveWorkbook.Worksheets
            If Ws.Name <> " MENU" Then
              For j = Ws.[A65000].End(xlUp).Row To 1 Step -1
                If Not IsError(Ws.Cells(j, 17)) then
                    If Ws.Cells(j, 17) = "2014" Then Ws.Rows(j).Delete
                End If
              Next j
            End If
        Next Ws
    End Sub

Re,

A essayer :

Sub suppr()
    Dim Ws As Worksheet
    Dim j As Long
    Application.ScreenUpdating = False
    For Each Ws In Worksheets
        With Ws
            derLig = .Range("Q" & Rows.Count).End(xlUp).Row
            If .Name <> " MENU" Then
                For j = derLig To 1 Step -1
                    If .Cells(j, 17) = "2014" Then .Rows(j).Delete
                Next j
            End If
        End With
    Next Ws
End Sub

NB : vérifier si le le chiffre 2014 est bien au format texte, vérifier le nom de l'onglet "MENU" ou " MENU"

La réponse de vba-new marche très bien ! Merci beaucoup !

Rechercher des sujets similaires à "suppression ligne vba"