Elimination séléctive de lignes - problème de code

Bonsoir à tous,

J'ai trouvé et modifié un code me permettant de supprimer toutes les lignes d'un tableau dont la colonne F ne contient pas une série de nombre à 3 chiffres ("305", "405", "276", "423", etc.). Mon problème est que ce code ne fonctionne que si la case contient uniquement le nombre en question. Dans mon tableau, ces nombres sont intégrés à d'autres caractères (ex. XXXX-305-XX ou XXXX405XXX), X étant des lettres.

Je souhaite modifier ce code pour qu'il tienne compte de ce paramètre. J'ai une expérience très limitée en VBA...

Merci d'avance pour vos réponses!

Sub Test()

Dim List As Variant

Dim LR As Long

Dim r As Long

List = Array("305", "405", "276", "423")

LR = Range("F" & Rows.Count).End(xlUp).Row

For r = LR To 2 Step -1

If IsError(Application.Match(Range("F" & r).Value, List, False)) Then Rows(r).Delete

End If

Next r

End Sub

Bonsoir Wespoint, bonsoir le forum,

Si les données ont toujours les mêmes structures au début :

  • 4 lettres suivies d'un tiret, suivi de trois chiffres ou
  • 4 lettres suivies de trois chiffres
le code ci-dessous devrait convenir :
Sub Test()
Dim List As Variant
Dim LR As Long
Dim r As Long
List = Array("305", "405", "276", "423")
LR = Range("F" & Rows.Count).End(xlUp).Row
For r = LR To 2 Step -1
    If Not IsError(Application.Match(Mid(Range("F" & r).Value, 5, 3), List, 0)) Then GoTo suite
    If Not IsError(Application.Match(Mid(Range("F" & r).Value, 6, 3), List, 0)) Then GoTo suite
    Rows(r).Delete
suite:
Next r
End Sub

Bonjour ThauThème,

Merci bcp pour la réponse rapide mais malheureusement les données n'ont pas toujours la même structure.

Le nombre à 3 chiffre est intégré quelque part dans une suite de caractères (lettre ou tiret), sans sytématique donc non prévisible.

Bonjour Westpoint, bonjour le forum,

Pourquoi ne pas utiliser tout simplement les Filtres textuels avec le paramètre Contient...

Hello,

J'ai environ 60 codes à 3 chiffres dans ma liste. Et des dizaines de spreadsheets à traiter régulièrement. J'ai vraiment besoin d'un VBA.

On me propose le code ci-dessous sur un autre forum, le problème est qu'il élimine les lignes contenant mes codes à 3 chiffres au lieu de les garder et d'éliminer toutes les autres.

Merci!

Sub Test()

Dim myList As Variant

Dim i As Long

Dim myVal As String

Dim LR As Long

Dim r As Long

Application.ScreenUpdating = False

myList = Array("305", "405", "276", "423")

LR = Range("F" & Rows.Count).End(xlUp).Row

For r = LR To 2 Step -1

For i = LBound(myList) To UBound(myList)

myVal = myList(i)

If InStr(Cells(r, "F"), myVal) > 0 Then

Rows(r).Delete

Exit For

End If

Next i

Next r

Application.ScreenUpdating = True

End Sub

Re,

Oui le code est excellent (j'ai carrément les boules de n'y avoir pas pensé moi-même). Le voici modifié, à tester :

Sub Test()

Dim myList As Variant
Dim i As Long
Dim myVal As String
Dim LR As Long
Dim r As Long

Application.ScreenUpdating = False
myList = Array("305", "405", "276", "423")
LR = Range("F" & Rows.Count).End(xlUp).Row
For r = LR To 2 Step -1
    For i = LBound(myList) To UBound(myList)
        myVal = myList(i)
        If InStr(Cells(r, "F"), myVal) > 0 Then GoTo suite
    Next i
    Rows(r).Delete
suite:
Next r
Application.ScreenUpdating = True
End Sub

Magnifique! Maintenant ça marche parfaitement.

Merci beaucoup!

Rechercher des sujets similaires à "elimination selective lignes probleme code"