VBA Probleme avec des doublons

  • Initiateur de la discussion Initiateur de la discussion bkawak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

bkawak

Guest
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

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 🙂

@+
 
Re : VBA Probleme avec des doublons

Salut nolich,

Je suis degoute la 😎 . 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 ???
 
Re : VBA Probleme avec des doublons

Re Benjamin,

Salut nolich,

Je suis degoute la 😎 . 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... 😉

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
8
Affichages
400
Réponses
4
Affichages
742
Réponses
15
Affichages
812
Réponses
5
Affichages
925
Réponses
3
Affichages
333
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
907
Retour