Suppression ligne en fonction d'une lettre

Bonjour à tous,

Aujourd'hui un petit problème mais je cr

ois que c'est pas grave. J'ai réalisé plusieurs macros sur Excel qui réalisent un tri automatique en fonction de différentes gares dont les données sont répertoriées sur la liste "Base de données". Je cherche à supprimer les lignes de ma base de données qui ne commencent pas par "P, D ou F". J'ai donc trouvé un code sur internet et il a l'air de bien fonctionner. Sauf que lorsque je lance ma macro depuis la feuille "Infos" cela me supprime la ligne 37 de toute les feuilles ? En tout cas c'est visible sur la dernière feuille "Bilan". Je pense que cela vient de la boucle for de ce sub.

Sub Supression_données()

    Sheets("Extraction").Select

Dim I As Integer
Dim Ws As Object
For Each Ws In ThisWorkbook.Worksheets

    For I = Ws.Range("C" & Rows.Count).End(xlUp).Row To 1 Step -1
        If Ws.Range("C" & I).Value Like "*R*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "*T*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "*Z*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "*G*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "0*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "1*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "2*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "3*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "4*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "5*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "6*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "7*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "8*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "9*" Then Ws.Rows(I).Delete
        If Ws.Range("C" & I).Value Like "-*" Then Ws.Rows(I).Delete
    Next I
Next Ws

End Sub

Est-ce que vous savez comment corriger le problème ?

Cordialement

Antoine_56610

bonjour,

une proposition

Sub Supression_données()

    Dim I As Long
    Dim Ws As Object
    Set Ws = Sheets("Extraction")

    For I = Ws.Range("C" & Rows.Count).End(xlUp).Row To 1 Step -1
        Select Case Left(Ws.Range("C" & I), 1)
            Case "P", "D", "F"
                Ws.Rows(I).Delete
        End Select
    Next I

End Sub

Super ça fonctionne je me doutais que ce n'était pas grand chose j'ai juste modifié les lettres car je voulais justement garder "P, D et F". Sinon tout marche ! Merci beaucoup.

Antoine_56610

Rechercher des sujets similaires à "suppression ligne fonction lettre"