If, Life, And et Or imbriqués

Résolu
nabhalia Messages postés 23 Statut Membre -  
nabhalia Messages postés 23 Statut Membre -
Bonjour,

Je cherche la syntaxe pour supprimer une ligne, si ni la colonne F, ni la colonne J ne contiennent des valeurs avec les lettre a, b, c, d ou e.

Autrement dit : Si F ou J contient a ou b ou c ou d ou e, ne rien faire. Sinon, supprimer la ligne.

Le code suivant ne fonctionne pas, même avec les parenthèses :

For i = 2 To Range("A1048576").End(xlUp).Row
If Not Cells(i, 6) Like "*a*" Or "*b*" Or "*c*" Or "*d*" Or "*e*" _
And Not Cells(i, 10) Like "*a*" Or "*b*" Or "*c*" Or "*d*" Or "*e*" Then
Cells(i, i).EntireRow.Delete
End If
Next

Quelqu'un aurait-il une solution ?

En vous remerciant.

Nb

1 réponse

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    cette fonction utilisant les expressions régulières te renvoie VRAI si présence d'une de ces lettre: abcde ou ABCDE

    Option Explicit
    'Michel_M pour CCM le 12/04/14
    '-------
    Function verifier_abcde(Texto As String) As Boolean
    Dim reg As Object
    Dim verif As Object

    Set reg = CreateObject("vbscript.regexp")
    reg.Global = False
    'accepte les majuscules
    reg.IgnoreCase = True

    reg.Pattern = "[a-e]"
    Set verif = reg.Execute(Texto)
    verifier_abcde = (verif.Count >= 1)

    Set verif = Nothing
    Set reg = Nothing
    End Function

    est tu sûr de vouloir parcourir les quelques 1 000 000 de lignes ?
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Tu peux aussi utiliser LIKE

      if lacellule like [a-e] renvoie vrai si il y a a ou b ou....
      ou*if lacellule like [!a-e] renvoie vrai si il n'y a pas a ni b ni.....

      mais ca m'a amusé ce matin de pondre une expression régulière
      0
    2. nabhalia Messages postés 23 Statut Membre
       
      Merci Michel,

      C'est encore toi qui me viens en aide.
      C'est parfait, j'ai simplement réduit la taille pour ne pas parcourir le million de lignes.

      Merci beaucoup, et désolé pour la réponse tardive :o)

      Nb
      0