Supprimer lignes tant que

Bonjour ,

Je voudrais trier par ordre croissant la colonne C, et ensuite supprimer toutes les lignes dont le prix est identique,

c'est à dire ne garder qu'une seule ligne.

J'avais bien trouvé sur le forum un sujet similaire, mais là je n'arrive pas à le retrouver.

La boucle commencée à partir du bas et vérifier si les valeurs en ligne n-1 et n étaient identiques

Mais étant donné qu'à chaque suppression le nombre de lignes change, là je pédale.

Quand je n'en avais pas besoin, je suis tombé sur la discussion et aujourd'hui nada! Rien de rien.

Merci de m'aider.

https://www.cjoint.com/c/HEngmEcwK0R le fichier fait 1.73Mo pour 70000 lignes

Bon dimanche.

nb: j'ai mis un grand nombre de lignes juste pour avoir une idée du temps d’exécution du code.

Bonjour,

Les données sont mises sous forme de tableau.

Le fichier est enregistré en binaire pour réduire la taille et éviter l'usage d'un site tiers.

Cdlt.

10supprimerlignes.xlsb (854.45 Ko)
Sub Macro2()
    With ActiveSheet.ListObjects(1)
        If .ShowAutoFilter Then .AutoFilter.ShowAllData
        .Sort.SortFields.Add .ListColumns(3).DataBodyRange, xlSortOnValues, xlAscending
        .Sort.Apply
        .Sort.SortFields.Clear
        .Range.RemoveDuplicates 3, xlYes
    End With
End Sub

Merci beaucoup M12,

Ton code fonctionne bien, j'avais omis de préciser que le code sera exécuté à partir d'une feuille 'Menu'.

Je vais essayer d'adapter ton code. J'espère y parvenir.

Encore merci.

Bon dimanche.

@CP4

Tu devrais essayer mon code VBA très court :

Sub Essai()
  Dim dlig&: Application.ScreenUpdating = 0
  dlig = Cells(Rows.Count, 3).End(xlUp).Row
  With Range("A2:C" & dlig)
    .Sort [C2], 1: .RemoveDuplicates 3, 2
  End With
End Sub

dhany

Bonjour Dhany,

Ton code fait bien le boulot, cependant je n'ai pas compris ce que signifie les codes de cette ligne

.Sort [C2], 1: .RemoveDuplicates 3, 2

Par déduction 1--->Ascendant

3---> 3éme colonne et le 2 c'est quoi? Merci.

@+

1 = Ascendant : exact ; 3 = 3ème colonne : exact ; 2 = sans les entêtes (car range à partir de la ligne n° 2)

dhany

Jean-Eric bonjour

Merci beaucoup pour ton aide. Ton code est très rapide.

Le seul hic, c'est les dates. Ce n'est pas le bon format.

Je vais essayer ton code sur mon fichier original (avec le bon format de date) et voir ce que ça donne.

Merci beaucoup.

Bon dimanche.

1 = Ascendant : exact ; 3 = 3ème colonne : exact ; 2 = sans les entêtes (car range à partir de la ligne n° 2)

dhany

Merci beaucoup pour la célérité de ta réponse.

Ok, j'ai compris.

Merci encore.

@CP4

Merci pour ton retour !

dhany

Re,

Quel est le rapport des dates que tu évoques et ta question ?

Cdlt.

Re,

Quel est le rapport des dates que tu évoques et ta question ?

Cdlt.

Dans le fichier joint les dates étaient au format jj/mm/aaaa

Dans le fichier en retour les dates sont numériques.

Je voudrais juste conserver le format initial.

Je ne suis pas un As du vba, mais je sais que ton code traite les données de la colonne 3.

C'est une question de présentation des données pour impression.

Je t'avais dit que j'allais reprendre ton code sur mon fichier original où les dates sont au bon format.

Cdlt.

Cp4

Re,

@ CP4

Il faut simplement modifier le format nombre (omission ; date jj/mm/aaaa)

@ Dhany,

Un code très court mais un temps de traitement > de 40%

Cdlt.

@Jean-Eric

J'ai pas chronométré, mais j'te crois sur parole ! sur le fichier exemple, ça a pris à peine 2 secondes, alors pour moi, c'est ok :

j'peux facilement patienter quand c'est moins d'une minute !

dhany

Rechercher des sujets similaires à "supprimer lignes tant que"