Macro - supprimer la ligne sous une double condition

bonjour,

j'ai mon skin, mais je n'arrive pas a la poser sur une macro et j'aimerais avoir de l'aide svp.

mon skin le voila :

s'il y a le mot "apparitioncoupure secteur" et "disparitioncoupure secteur" sous le meme numero de "reference" ou s'il y a "apparitioncoupure secteur" et "apparitionretour secteur" alors il faut supprimer la ligne sinon laisser la ligne ou "apparitioncoupure secteur" apparait

je poste mon fichier .xls pour aider a voir ce que je veux faire.

Merci d'avance

PS : en jaune les lignes a supprimer, les vierges a conserver

Bonjour

1) Pour ma culture personnelle skin Kesako ?

2) ton fichier à vérifier

Edit : Mauvais fichier

le skin en tout cas comme je l'entend c'est le script que je dois tenir sans avoir le contenu

et cette macro ne fonctionne pas vraiment

il reste la 1ere ligne ou les references 2239 devrait disparaitre par exemple

et il reste egalement les lignes ou "Apparitionretour secteur" qui ne devraient plus etre la

pour completer, la ou j'ai la reference 2239 ( il y a 3 lignes qui correspondent) ces 3 lignes ne devraient plus apparaitre parce que j'ai l'information "disparitioncoupure Secteur" (idem s'il y avait inscrit "apparitionretour Secteur")

en esperant que ca aide davantage

Nico

Voici la procédure que j'ai développé si j'ai bien compris ta demande naturellement.

Sub test()

Sheets("matrice").Select

Sheets("matrice").Copy After:=Sheets("matrice")

ac = "ApparitionCOUPURE SECTEUR"

dc = "DisparatioCOUPURE SECTEUR"

ar = "ApparitionRETOUR SECTEUR"

compteur = 2

fin = 2000

ancienne_valeur = Range("B" & compteur).Value

Choix_A = Range("H" & compteur).Value

compteur = compteur + 1

While compteur <= fin

nouvelle_valeur = Range("B" & compteur).Value

If nouvelle_valeur = ancienne_valeur Then

Choix_B = Range("H" & compteur).Value

If Choix_A = ac And Choix_B = dc Then

Rows(compteur & ":" & compteur).Select

Selection.Delete Shift:=xlUp

fin = fin - 1

Choix_B = ""

compteur = compteur - 1

End If

If Choix_A = dc And Choix_B = ac Then

Rows(compteur - 1 & ":" & compteur - 1).Select

Selection.Delete Shift:=xlUp

fin = fin - 1

Choix_A = ""

compteur = compteur - 1

End If

If Choix_A = ac And Choix_B = ar Then

Rows(compteur & ":" & compteur).Select

Selection.Delete Shift:=xlUp

fin = fin - 1

Choix_B = ""

compteur = compteur - 1

End If

If Choix_B = ac And Choix_A = ar Then

Rows(compteur - 1 & ":" & compteur - 1).Select

Selection.Delete Shift:=xlUp

fin = fin - 1

Choix_A = ""

compteur = compteur - 1

End If

If Choix_A = "" Or Choix_B = "" Then

Else

If Choix_B = Choix_A Then

Rows(compteur & ":" & compteur).Select

Selection.Delete Shift:=xlUp

fin = fin - 1

compteur = compteur - 1

End If

End If

Else

Choix_A = ""

Choix_B = ""

ancienne_valeur = Range("B" & compteur).Value

Choix_A = Range("H" & compteur).Value

If Choix_A = "" Then

fin = compteur

End If

End If

compteur = compteur + 1

Wend

End Sub

un code que je n'aurais meme pas imaginer faire !

Manque juste un detail important...

comme dit precedement la ligne avec la reference 2239 ne devrait pas apparaitre sur le fichier final, parce que sous cette reference on a eu a un moment l'information "disparitioncoupure secteur"

Encore merci pour votre aide

Bonsoir

Alors j'ai du mal comprendre

erakiel54 a écrit :

il reste la 1ere ligne ou les references 2239 devrait disparaitre par exemple

Réfrerence 2239

Au départ il y a 2 "Disparition......" et 1 "Apparition ....."

Comme tu dis

erakiel54 a écrit :

s'il y a le mot "apparitioncoupure secteur" et "disparitioncoupure secteur" sous le meme numero de "reference" .... .....alors il faut supprimer la ligne sinon laisser la ligne ou "apparitioncoupure secteur" apparait

J'ai supprimé les lignes avec le mot "Disparition .... " et laisser la ligne avec "Apparition ..."

Donc ce n'est pas ça

Je retire le fichier

Désolé

y a pas de mal

Bonjour à tous,

Sur ton fichier, colore les lignes à supprimer,

ce sera + facile de comprendre tes critères

au moins, les 20 ou 30 premières lignes

Amicalement

Claude

en jaune les lignes a supprimer. Les lignes non colorer a conserver

Merci du conseil en esperant que ca aide davantage

Bonsoir,

Je ne vois toujours pas la logique, dans tes explications

Apparition, Disparatio, COUPURE ou RETOUR SECTEUR

On y comprend rien !!!

ici pour tester, on colore en jaune les "Référence" en doublon et "Anomalie" <>**NT**

vois si tu peux adapter différemment ces critères en F2:G2

Bien sûr, si Ok on supprimera les lignes au lieu de les colorer.

Bonne soirée

Claude

c'est exactement ça que je cherche a faire !

les anomalie en "NT" dont justement des anomalies aléatoires, il y en a d'autres qui sont générées dans mes fichiers et je ne peux les répertorier toutes !

Quoiqu'il en soit je te remercie infiniment même si tu dit n'avoir pas compris la logique c'est exactement ce que je voulais

je poste le code et je met resolu merciiiiiii :

Sub Filtre()

Dim Lg

Application.ScreenUpdating = False

On Error Resume Next

ActiveSheet.ShowAllData 'libère le filtre

Lg = Range("a" & Rows.Count).End(xlUp).Row

Range("a4:h" & Lg).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = xlNone 'en test

'--- filtre ---

Range("h2") = "=Countif(b:b,b4)>1" 'critère

Range("a3:h" & Lg).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _

Range("f1:h2"), Unique:=False

'--- Supprime lignes ---

Range("a4:h" & Lg).SpecialCells(xlCellTypeVisible).EntireRow.Delete

ActiveSheet.ShowAllData

End Sub

re,

les anomalie en "NT" dont justement des anomalies aléatoires, il y en a d'autres qui sont générées dans mes fichiers et je ne peux les répertorier toutes !

ici, on supprime les Anomalies commençant par "Ap" ou "Di" et Références en doublon

la colonne H ne sert à rien ?

Sub Filtre() '2 critères "Anomalie" (OU)
Dim Lg
    Application.ScreenUpdating = False
    On Error Resume Next
    ActiveSheet.ShowAllData 'libère le filtre
    Lg = Range("a" & Rows.Count).End(xlUp).Row
    Range("a5:h" & Lg).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = xlNone 'en test

    '--- filtre ---
    Range("g2") = "=Countif(b:b,b5)>1" 'critère
    Range("a4:h" & Lg).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
    Range("f1:g3"), Unique:=False

    '--- colore pour tests ---
    Range("a5:h" & Lg).SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 6

    '--- Supprime lignes ---
    'Range("a5:h" & Lg).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    ActiveSheet.ShowAllData
End Sub

Claude

finalement non, mais dans mes recherches j'ai tenté de faire une clef pour trouver une solution

Salut

J'ai regardé le fichier Résultat qui contient les lignes en blanc à conserver et je vois que le numéro de compte est unique à chague fois. Le fichier original ne semble plus disponible.

J'ai simplement utilisé la formule suivante SI(OU(C13=C12;C13=C14);1;2) dans H13 et celle-ci dans SI(K13=2;H13;"") qui donne toujours ApparitionCOUPURE SECTEUR.

Lorsque le compte est unique le contenu de H devient 2. Un simple filtre sur ce qui n'est pas 2 éliminera les mauvais comptes et le tour est joué.

Çà peut pas être si simple!!!!!!

42filtre.zip (29.38 Ko)

si le fichier original est dispo au 1er post :p

c'est en effet une autre solution envisageable sur ta formule plus qu'a appliquer une macro si la ligne est egale a 2 on supprime cette ligne et le tour est joué !

Merci encore pour votre aide a tous

Rechercher des sujets similaires à "macro supprimer ligne double condition"