Trier sous conditions

Bonjour,

J'ai une demande sensiblement identique à une précédente mais la structure de mon fichier est différente.

En ligne les codes clients que je dois trier et en X, Y, Z les totaux des produits achetés en fonction de la période de commercialisation de ceux ci.

Ce que je veux c'est récupérer les codes des clients qui ont achetés le produit en X sans avoir précédemment achetés les produits en Y et Z. Je souhaite supprimer les lignes clients qui ont acheté ou Y ou Z pour et conserver l'historique des commandes de ceux qui n'ont acheté que X. Les commandes peuvent être négatives et sont à conserver.

J'ai trié à la main jusqu'à la ligne 114.

Merci pour votre aide.

Bonjour,

Ce serait plus clair avec un bout de fichier exemple..

@ te relire

Bonjour,

Désolé j'avais pas vu la limite de taille du fichier.

SI ça peut aider les données du fichier original vont jusqu'à la ligne 3111.

Merci

14book1-v1.xlsx (265.86 Ko)

Bonjour,

Sous réserve d'avoir bien compris la demande..

Voir PJ

@ + +

11lepeno.xlsx (288.45 Ko)

Bonjour R@chid et merci pour ta proposition mais ce n'est pas ce que je recherche.

Chaque codes clients peut apparaître sur 1, 2 ou 3 lignes différentes en fonction des données présentes en colonnes X, Y et Z.

Je veux en fait trier les codes clients pour ne retenir que ceux qui ont achetés au moins un produit en colonne X et qui n'ont pas achetés de produits en colonnes Y et Z.

Hors avec ta formule, tous les clients qui ont achetés un produit en colonne X sont TRUE sans tenir compte du résultat des colonnes Y et Z. La difficulté il me semble est que la structure du fichier est en "escalier" ou "tiroir".

Merci

Récemment Yvouille m'a aidé avec le code suivant, je pense que la mécanique est la même mais je ne sais pas comment l'adapter.

Dim DerLig As Integer, i As Integer

Application.ScreenUpdating = False

Range("I1:M" & Rows.Count).ClearContents
DerLig = Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To DerLig
    Range("E" & i) = i - 1
Next

Range("A1:E" & DerLig).Copy Destination:=Range("I1")
Range("I1:M" & Rows.Count).Sort Key1:=Range("I1"), Order1:=xlAscending, Header:=xlYes

For i = DerLig To 2 Step -1
    If Range("I" & i) <> Range("I" & i - 1) Or Range("I" & i) = Range("I" & i - 1) And Left(Range("J" & i), 1) = Left(Range("J" & i - 1), 1) Then
        Range("I" & i & ":M" & i).Delete Shift:=xlUp
    End If
Next i

For i = DerLig To 2 Step -1
    If Range("I" & i) = Range("I" & i - 1) Then
        Range("I" & i & ":M" & i).Delete Shift:=xlUp
    End If
Next i

Range("I1:M" & Rows.Count).Sort Key1:=Range("M1"), Order1:=xlAscending, Header:=xlYes

Range("J1:M" & Rows.Count).Delete
Range("E:E").ClearContents

End Sub

Sub Pour_la_démo()
Range("I1:M" & Rows.Count).ClearContents
End Sub
Rechercher des sujets similaires à "trier conditions"