Microsoft 365 Supprimer ligne dés qu'il y a un mot dans la colonne

Moreno076

XLDnaute Impliqué
Bonsoir le forum,

Je souhaiterais que si dans la colonne D, une cellule contient le mot "DO" "HS" "FV" alors supprimer la ligne.

Après cette suppression et seulement après idem aussi pour la colonne F mais avec des mots différents.

Je suis parti sur ça mais je galère, ca ne fonctionne même pas avec un MOT.

Sub Filtre()

Sheets("Synthèse").Select
Range("F1").Select
For r = 1 To Range("F1").End(xlDown).Row
If ActiveCell = "DO" Then Rows(r).Delete
Next r
End Sub

Merci à vous
 

Pièces jointes

  • GRv64.xlsm
    281.3 KB · Affichages: 5
Dernière édition:

Moreno076

XLDnaute Impliqué
Sub SupprimerLignes()

Dim i As Long
Sheets("Synthèse").Select
Application.ScreenUpdating = False
For i = Cells(Rows.Count, 6).End(xlUp).Row To 1 Step -1 ' 4 pour la colonne "D"
If Cells(i, 6) = "DIL A" Or Cells(i, 6) = "DIL C" Or Cells(i, 6) = "DIL G" Then Rows(i).Delete
Next i
Application.ScreenUpdating = True

End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Tu as fait un truc de ce genre là ?
VB:
Sub NoPainNoGain()
[E2].FormulaR1C1 = "=MATCH(RC[-2],{""DO"";""HS"";""FV""},0)>0"
[C1:C24].AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2"), Unique:=False
End Sub
Car j'avais précisé: (avec un critère formulé)

EDITION: Je viens de voir ton message.
Et donc de me rendre compte que tu n'avais pas utilisé le filtre élaboré ;)
 

Moreno076

XLDnaute Impliqué
Re

Tu as fait un truc de ce genre là ?
VB:
Sub NoPainNoGain()
[E2].FormulaR1C1 = "=MATCH(RC[-2],{""DO"";""HS"";""FV""},0)>0"
[C1:C24].AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2"), Unique:=False
End Sub
Car j'avais précisé: (avec un critère formulé)

EDITION: Je viens de voir ton message.
Et donc de me rendre compte que tu n'avais pas utilisé le filtre élaboré ;)
non sans critère formulé, il faut vraiment lire au mot près :cool:
 

Moreno076

XLDnaute Impliqué
Sauf que ca se complique apres car une fois la donne D ou F est filtré il faut supprimer les lignes aussi en doublons c est à dire même code dans la colonne B car pour les doublons les colonnes DEF ne sont pas renseignées car les informations sont regroupées dans la colonne C d' où le renommage.
 

Moreno076

XLDnaute Impliqué
j ai essayé le filtre formulé
ActiveSheet.Range("$A$1:$X$60").AutoFilter Field:=4, Criteria1:= _
"=*""DIL A"", ""SIL B"" ""A""*", Operator:=xlAnd
Application.Run "GRv65.xlsm!Clignote"
Application.Run "GRv65.xlsm!Clignote"
ActiveSheet.Range("$A$1:$X$60").AutoFilter Field:=4, Criteria1:= _
"=*""DIL A"", ""SIL B"" ""A""*", Operator:=xlAnd
Application.Run "GRv65.xlsm!Clignote"
Application.Run "GRv65.xlsm!Clignote"
Range("C68").Select
 

Staple1600

XLDnaute Barbatruc
Re

Oui, il faut lire tous les mots ;)
Dans le message et dans le code VBA ;)
Je parle de Filtre élaboré (pas de filtre automatique)
et de critère formulé (c'est à dire avec une formule)
Testes cet exemple sur une feuille vierge et tu comprendras
VB:
Sub CREER_TEST()
t = Array("=ROW()*COLUMN()", "=TODAY()+ROW()")
tt = Array(1, "DO", 2, "HS", 3, "FV")
[A1] = "ITEM_1": [A1].AutoFill Destination:=Range("A1:D1"), Type:=0
[D2:D7] = Application.Transpose(tt)
[D2:D7].AutoFill Destination:=Range("D2:D35"), Type:=0
[A2:B35].Formula = t
End Sub
Sub Suppression_Avec_Filtre()
Dim pf As Range
[F2].Formula = "=MATCH(D2,{""DO"";""HS"";""FV""},0)>0"
[D1:D35].AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("F1:F2"), Unique:=False
Set pf = [_FilterDataBase]
pf.Offset(1, 0).Resize(pf.Rows.Count - 1).SpecialCells(12).EntireRow.Delete
ActiveSheet.ShowAllData
End Sub
1) Tu lances d'abord CREER_TEST
puis la seconde macro.

NB: La formule pour le critère sera en F2
 

Discussions similaires

Réponses
3
Affichages
664

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
313 046
Messages
2 094 759
Membres
106 081
dernier inscrit
CHRIS-5461