Excel macro pour supprimer les lignes contenant des mots clés
kitten13
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
A l'aide de MACRO j'aimerais supprimer les lignes dont la première cellule (colonne A) contient l'un des mots clés prédéfinie dans une liste (Renault, fiat, BMW, etc.).
J'ai donc procéder comme ceci (mais ça ne fonctionne pas):
Merci de votre aide !
A l'aide de MACRO j'aimerais supprimer les lignes dont la première cellule (colonne A) contient l'un des mots clés prédéfinie dans une liste (Renault, fiat, BMW, etc.).
J'ai donc procéder comme ceci (mais ça ne fonctionne pas):
Merci de votre aide !
Option Explicit Option Base 1 Sub DeleteIfKeywords() Dim r As Long, lr As Long, n As Long, k, i As Long Application.ScreenUpdating = False k = Array("Fiat", "Renault") lr = Cells(Rows.Count, 1).End(xlUp).Row For r = lr To 2 Step -1 n = 0 For i = LBound(k) To UBound(k) If InStr(Cells(r, 1), k(i)) = 0 Then n = n + 1 Exit For End If Next i If n = 0 Then Rows(r).Delete Next r Application.ScreenUpdating = True End Sub
A voir également:
- Supprimer toutes les lignes contenant un mot excel
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Trousseau mot de passe iphone - Guide
- Supprimer page word - Guide
- Supprimer mot de passe windows 10 - Guide
3 réponses
Bonjour
Essaies comme ceci
Cdlmnt
Essaies comme ceci
Sub DeleteIfKeywords()
Dim r As Long, lr As Long, k, i As Long
Application.ScreenUpdating = False
k = Array("Fiat", "Renault")
lr = Cells(Rows.Count, 1).End(xlUp).Row
For r = lr To 2 Step -1
For i = LBound(k) To UBound(k)
If InStr(UCase(Cells(r, 1)), UCase(k(i))) > 0 Then
Rows(r).Delete
Exit For
End If
Next i
Next r
Application.ScreenUpdating = True
End Sub
Cdlmnt
Bonjour a vous deux,
une autre methode:
une autre methode:
Option Explicit
Option Base 1
Sub DeleteIfKeywords()
Dim Lr As Long, k, i As Long, Nb, Plage As Range, lig, point
Application.ScreenUpdating = False
With Worksheets("feuil1")
k = Array("Fiat", "Renault")
For i = LBound(k) To UBound(k)
Lr = .Cells(Rows.Count, 1).End(xlUp).Row
'mise en memoire plage de cellules
Set Plage = .Range("A2:A" & Lr)
'nombre d'iteration
Nb = Application.CountIf(Plage, k(i))
If Nb > 0 Then
lig = 1
For point = 1 To Nb
'recherche ligne et positionnement pour tour suivant
lig = .Columns(1).Find(k(i), .Cells(lig, 1), , xlWhole).Row
Rows(lig).Delete
Next point
End If
Next i
End With
Application.ScreenUpdating = True
End Sub
Bonjour,
Combien as tu de lignes environ?
il y a des solutions différentes suivant le nombre: soit par "Find" ou par dictionary et variable-tableau
Combien as tu de lignes environ?
il y a des solutions différentes suivant le nombre: soit par "Find" ou par dictionary et variable-tableau
Bonjour,
Si peu de lignes ( <1000),
les mots clés ne sont pas forcément isolés par ex: Fiat 500
Si peu de lignes ( <1000),
les mots clés ne sont pas forcément isolés par ex: Fiat 500
Sub detruire_si()
Dim T_car, Idx As Integer, Nbre As Integer
Dim Cptr As Integer, Lig As Integer
Application.ScreenUpdating = False
T_car = Array("Fiat", "Renault", "BMW", "Audi", "Peugeot", "Rover")
For Idx = 1 To UBound(T_car)
Nbre = Application.CountIf(Columns("A"), "*" & T_car(Idx) & "*")
If Nbre > 0 Then
For Cptr = 1 To Nbre
Lig = Columns("A").Find(T_car(Idx), Range("A1"), xlValues).Row
Rows(Lig).Delete
Next
End If
Next
End Sub