Objet requis problème ??

Bonjour,

J'ai un problème avec ma boucle et je ne comprend pas c'est quoi l'erreur "objet requis".

ça ne fait pas très longtemps que je fais du VBA !

Merci

Sub BOUCLETEST()

Dim Ws As Worksheet

Set Ws = Sheets("Data_TEST (2)")

i = Ws.Cells(Rows.Count, 37).End(xlUp).Row

departement = "OP-PROGR"

'boucle de la dernière à la premiere ligne

For j = i To 1 Step -1

If Ws.Cells(j, 37) <> departement And Ws.Cells(j, 37) <> "" Then

cel.EntireRow.Delete

End If

Next

End Sub

Bonsoir

A quelle ligne est ton problème?

mais je vois déjà une erreur

essaie cela :

Sub BOUCLETEST()
Dim Ws As Worksheet
Set Ws = Sheets("Data_TEST (2)")

i = Ws.Cells(Rows.Count, 37).End(xlUp).Row
departement = "OP-PROGR"

'boucle de la dernière à la premiere ligne
For j = i To 1 Step -1
If Ws.Cells(j, 37) <> departement And Ws.Cells(j, 37) <> "" Then
Cells.EntireRow.Delete
End If
Next
End Sub

Sinon un extrait de ton fichier

Bye

Erreur de post.

Salut benibeno,

Bonjour Patty,

pour supprimer la ligne, je propose plutôt ceci :

        Rows(j).EntireRow.Delete shift:=xlUp

A+

Bonsoir,

Sub BOUCLETEST()
    Dim Ws As Worksheet, departement$, i%, j%
    Set Ws = Sheets("Data_TEST (2)")
    i = Ws.Cells(Rows.Count, 37).End(xlUp).Row
    departement = "OP-PROGR"
    Application.ScreenUpdating = False
    For j = i To 1 Step -1
        If Ws.Cells(j, 37) <> departement And Ws.Cells(j, 37) <> "" Then
            Ws.Rows(j).Delete
        End If
    Next j
End Sub

Cordialement.

Merci à tous pour les solutions j'apprécie. Elles fonctionnent bien!

Je pousse un peu mais quelqu'un sait la comment d'inclure un ou plusieurs "or" ?

departement = "OP-PEM"

departement1 = "OP-PEM2H"

'boucle de la dernière à la premiere ligne

For j = i To 1 Step -1

If Ws.Cells(j, 37).Value <> departement Or Ws.Cells(j, 37).Value <> departement1 Then

Rows(j).EntireRow.Delete

End If

Mise à part un select case je ne vois pas comment. Des solutions ?

Merci

Bonsoir,

Mise à part un select case je ne vois pas comment. Des solutions ?

C'est bien un Select Case qui s'avèrera la solution la plus pratique...

    Select Case ws.Cells(j, 37)
        Case departement, departement1
        Case Else
            ws.Rows(j).Delete
    End Select

NB- Rows cible des lignes (par définition entières !). EntireRow sert à étendre à la ligne (aux lignes) un objet Range quelconque ne comportant qu'une fraction de lignes : .Cells(j, 37).EntireRow...

Cordialement.

Bonjour MFerrand,

(il doit faire jour, chez toi, non? )

A propos de Rows().EntireRow, je me demandais justement pourquoi, Bon Dieu, je persistais dans cette mauvaise habitude acquise au début de ma reprise de VBA lorsque je lisais cela dans tous les post.

Promis, je vais faire un effort!

A+

(il doit faire jour, chez toi, non? )

Fuseau UTC+4, le jour arrive en effet...

Mais je suis à Nice !

Bonne fin de nuit...

Merci à tous

Rechercher des sujets similaires à "objet requis probleme"