Supprimer les lignes si différent de 2 motifs

Résolu
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   -  
PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite dans un fichier EXCEL, avec vba supprimer dans une colonne les motifs donc les lignes qui ne sont pas égal à :

"PE - TESTONS"
&
"autre - mot"

Dans la macro suivante, Si j'indique 1 motif cela fonctionne mais si je propose 2 motifs,
cela ne fonctionne pas...

Voici ce qui ne fonctionne pas (erreur de syntaxe?)

Sub Delssmotif1()
Application.ScreenUpdating = False

Dim i As Integer
Dim ssmotif As String
ssmotif = "PE - TESTONS";"autre - mot"
With ThisWorkbook.Sheets("donnees")
For i = .Range("X" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("X" & i).Value <> ssmotif Then
Rows(i).Delete
End If
Next i
End With
End Sub

Voici ce qui fonctionne :

Sub Delssmotif2()
Application.ScreenUpdating = False

Dim i As Integer
Dim ssmotif As String
ssmotif = "PE - TESTONS"
With ThisWorkbook.Sheets("donnees")
For i = .Range("X" & .Rows.Count).End(xlUp).Row To 2 Step -1
If .Range("X" & i).Value <> ssmotif Then
Rows(i).Delete
End If
Next i
End With
End Sub

Bien cordialement,

Configuration: Windows / Firefox 78.0

1 réponse

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    comme ceci:

    Sub Delssmotif2()
    Application.ScreenUpdating = False
    Dim i As Integer
    With ThisWorkbook.Sheets("donnees")
    For i = .Range("X" & .Rows.Count).End(xlUp).Row To 2 Step -1
    If .Range("X" & i).Value <> "PE - TESTONS" And .Range("X" & i).Value <> "autre - mot" Then
    Rows(i).Delete
    End If
    Next i
    End With
    End Sub
    


    Voilà

    1
    1. PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21
       
      Bonjour et merci cs_Le Pivert !

      Cela fonctionne !

      Si je devais remplacer "PE - TESTONS" par "PE"* pour dire tout ce qui commence par "PE". Auriez- vous la syntaxe svp ?
      Merci encore pour votre aide !
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention  
         
        voir ceci:

        https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-B

        ce qui donne:

        Option Explicit
        Option Compare Text
        'https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-B
        Sub Delssmotif2()
        Application.ScreenUpdating = False
        Dim i As Integer
        With ThisWorkbook.Sheets("donnees")
        For i = .Range("X" & .Rows.Count).End(xlUp).Row To 2 Step -1
        If Left(.Range("X" & i).Value, 2) <> "PE" And .Range("X" & i).Value <> "autre - mot" Then
        Rows(i).Delete
        End If
        Next i
        End With
        End Sub
        


        Voilà

        @+ Le Pivert
        0
      2. PYGOS69 Messages postés 452 Date d'inscription   Statut Membre Dernière intervention   21 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        Un grand Merci !

        Bonne journée !
        0