VBA Probleme avec des doublons

bkawak

XLDnaute Nouveau
Bonjour,

J ai un petit probleme avec ma macro. J ai une plage de 150 nombres environ et ma macro doit supprimer tous les doublons. Voici le code que j applique actuellement :

Code:
Sub Arrang()
Dim i, k, endline As Integer
'To save the useful data
 Columns("A:A").Select
    Range("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess
Range("A1").Select
endline = ActiveCell.End(xlDown).Row

' Pour connaitre la derniere ligne

For i = 1 To endline - 1
    For k = i + 1 To endline
        If (Range("A" & k).Value = Range("A" & i).Value) And k <= endline Then
            Range("A" & k).Delete 'Shift:=xlUp
            endline = endline - 1
        End If
    Next
Next
End Sub

Ce code enleve quelques doublons mais pas tous... Pourquoi je ne sais pas...

Merci pour votre aide

Je joins ma plage de donnees

Benjamin
 

Pièces jointes

  • TEST.xls
    23.5 KB · Affichages: 45
  • TEST.xls
    23.5 KB · Affichages: 52
  • TEST.xls
    23.5 KB · Affichages: 49

nolich

XLDnaute Occasionnel
Re : VBA Probleme avec des doublons

Bonjour Benjamin, bonjour à toutes et à tous :)

Envoyé par bkawak
J ai un petit probleme avec ma macro. J ai une plage de 150 nombres environ et ma macro doit supprimer tous les doublons.

Ce code enleve quelques doublons mais pas tous... Pourquoi je ne sais pas...

Voici un code qui devrait faire ce que tu souhaites :

Code:
Sub Arrang()
'
Dim i As Long, k As Long, EndRow As Long
'
  Range("A:A").Sort Key1:=Range("A1"), Order1:=xlAscending, header:=xlNo
  
  ' Pour connaitre la derniere ligne
  EndRow = Range("A65536").End(xlUp).Row

  i = 1
  
  Do While i <= (EndRow - 1)
  
    k = i + 1
    
    Do While k <= EndRow
    
      If (Range("A" & k) = Range("A" & i)) Then
        Range("A" & k).Delete Shift:=xlUp
        EndRow = EndRow - 1
      Else
        k = k + 1
      End If
      
    Loop
    
    i = i + 1
    
  Loop
  
End Sub

Ce n'est pas le plus optimisé mais je n'ai pas XL pour l'instant ; à tester donc :)

@+
 

bkawak

XLDnaute Nouveau
Re : VBA Probleme avec des doublons

Salut nolich,

Je suis degoute la :cool: . Ton code marche super bien, je t en remercie. Mais je ne vois pas de grande difference entre nos deux codes.

Nous avons deux methodes equivalentes pour trouver la derniere ligne et toi tu utilises une boucle Do loop et moi un For Next.

Pourquoi mon code ne marche pas ???
 

nolich

XLDnaute Occasionnel
Re : VBA Probleme avec des doublons

Re Benjamin,

Salut nolich,

Je suis degoute la :cool: . Ton code marche super bien, je t en remercie. Mais je ne vois pas de grande difference entre nos deux codes.

Nous avons deux methodes equivalentes pour trouver la derniere ligne et toi tu utilises une boucle Do loop et moi un For Next.

Pourquoi mon code ne marche pas ???

C'est simplement parce que tu dois incrémenter k uniquement si tu n'as pas supprimé de valeur. Si tu incrémentes dans tous les cas, lorsque tu supprimes une cellule, la suivante vient à sa place, et ton code incrémentait k zappant cette cellule suivante... ;)

@+
 

Discussions similaires

Réponses
23
Affichages
1 K
Réponses
12
Affichages
288

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz