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 !

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

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

Discussions similaires

Réponses
3
Affichages
45
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Réponses
3
Affichages
599
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
  • Question Question
Microsoft 365 VBA Transpose
Réponses
11
Affichages
754
Retour