TRI sur DOUBLON

Bonjour tout le monde,

Je sollicite votre aide pour effectuer en VBA plusieurs actions sur mon fichier:

  • Dans un premier temps je souhaite trier la colone A dans l'ordre
  • Ensuite supprimer les doublons, si il y en a, mais en gardant tout de même au moins une des lignes en doublons...

EDIT : Pour le tri je me suis débrouillé, reste la suppresion des doublons...

End Sub

Les explications sont dans le fichier exemple.

Merci de votre aide

Pascal

26tridoublon.xlsx (11.42 Ko)

Bonjour,

Je ne vois pas bien ton problème, que tu trie et ensuite ôte les doublons ou l’inverse ça n'a pas d'importance ?

Et tu à les commandes Excel qui font ça très bien. Sauf pour les N° ?

A+

Bonjour,

En fait si je devait le faire manuellement, je dois procéder comme suit :

Je tri d'abord pour remettre les N° INC dans l'ordre pour pouvoir ensuite faire un tri dans les N° INC en double.

Le problème n'est pas de supprimer tous les doublons mais d'en garder au moins une des lignes ...je ne sais pas si je me suis bien exprimé.

INC1000 - Tech1 - date1 ==> Ligne à conserver

INC1000 - Tech1 - date2 ==> Ligne à Supprimer

INC1000 - Tech1 - date3 ==> Ligne à Supprimer

Pourquoi un code en VBA ? Parce ce que je souhaite l'intéger à des codes qui existent déjà pour automatiser mon rapport quotidien.

Pascal

OK, je peu te fournir un code qui supprime les doublons mais Excel 2007 fait ça très bien. Emploi l'éditeur de macro.

Éventuellement poste le code qui en résulte si tu veux l'optimiser ou le rendre polyvalent.

Tu dis.

Voilà je code que j'obtiens quand j'enregistre mes manips sur quelques doublons, je ne ne pense pas que cela soit exploitable...

Range("A3:C4").Select

Selection.Delete Shift:=xlUp

Range("A4:C5").Select

Selection.Delete Shift:=xlUp

Range("A5:C6").Select

Selection.Delete Shift:=xlUp

Range("A6:C7").Select

Selection.Delete Shift:=xlUp

Range("A7:C8").Select

Selection.Delete Shift:=xlUp

Range("A8:C9").Select

Selection.Delete Shift:=xlUp

L'idée est que la macro regarde en A2 et lit la valeur

Ensuite elle regarde en A3 (ligne juste en dessous) et si c'est la même valeur alors la ligne complète sera supprimée

etc....

Si tu peux m'orienter/guider , je suis preneur

Pascal

Tu devais employer la fonction d'Excel pour supprimer les doublons et ça t'aurais donner.. (adapter)

Sub SuppDoublon()
Dim Plage As Range
    Set Plage = Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3))
    ActiveSheet.Plage.RemoveDuplicates Columns:=1, Header:=xlYes
 End Sub

A+


Et éventuellement... Faire les deux en même temps.

Sub SuppDoublon_Trie()
Dim Plage As Range
    Set Plage = Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3))
    ActiveSheet.Sort.SortFields.Clear
    With ActiveSheet.Plage
        'trie par ordre croisant
        .Sort.SortFields.Add Key:=Range("A1") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        'supprime les doublons
        .RemoveDuplicates Columns:=1, Header:=xlYes
    End With
End Sub
lermite a écrit :

Tu devais employer la fonction d'Excel pour supprimer les doublons et ça t'aurais donner.. (adapter)

Sub SuppDoublon()
Dim Plage As Range
    Set Plage = Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 3))
    ActiveSheet.Plage.RemoveDuplicates Columns:=1, Header:=xlYes
 End Sub

A+

[/code]

Est-ce que cette alternative fonctionnerait pour mon problème ?

Merci lermite pour ton aide, j'ai réussi à faire ce que je souhaité faire

Je n'avais pas compris ce que tu me demandais de faire et franchement je pensais que la fonction d'Excel supprimait tout les doublons sans garder au moins une occurence

J'ai trouvé ce code via l'enrigistreur de macro et il me convient :

Columns("A:C").Select

ActiveSheet.Range("$A$1:$C$65535").RemoveDuplicates Columns:=1, Header:=xlYes

Merci de m'avoir guidé

Pascal

Rechercher des sujets similaires à "tri doublon"