Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

suppression de doublons dans une plage de cellule

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 !

eduraiss

XLDnaute Accro
Bonjour le forum

j'ai poste un message hier mais je crois que je n'était pas sur le bon forum.

voici mon problème dans une plage de cellules de a6:a399 , j'ai des doublons que je voudrais enlever mais sans que cela face le trie.
il me faudrait un code VBA que je déclencherais a l'aide d'un bouton

je joins un fichier pour une meilleur compréhension


merci de votre aide
 

Pièces jointes

Re : suppression de doublons dans une plage de cellule

Bonjour,

Je n'ai pas regardé le fichier

Code:
[FONT=Arial]Sub ENLEVER_DOUBLONS()[/FONT]
[FONT=Arial]ListeValUniques Range("A2:A5000"), Range("E1")   [/FONT][COLOR=teal][FONT=Arial]‘ on met la liste en colonne 1, la liste épurée se colle en colonne E[/FONT][/COLOR][FONT=Arial][/FONT]
[FONT=Arial]End Sub[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]Sub ListeValUniques(PlageSrc As Range, CellDest As Range)[/FONT]
[COLOR=teal][FONT=Arial]'Extrait les valeurs uniques d'une colonne et les renvoie[/FONT][/COLOR]
[COLOR=teal][FONT=Arial]'dans une autre, à partir de CellDest[/FONT][/COLOR][FONT=Arial][/FONT]
[FONT=Arial]Dim Arr1, Elt, Arr2(), Coll As New Collection[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]If PlageSrc.Columns.Count > 1 Then Exit Sub[/FONT]
[FONT=Arial]Arr1 = PlageSrc.Value[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]For Each Elt In Arr1[/FONT]
[FONT=Arial]On Error Resume Next[/FONT]
[FONT=Arial]Coll.Add Elt, CStr(Elt)[/FONT]
[FONT=Arial]If Err.Number = 0 Then[/FONT]
[FONT=Arial]ReDim Preserve Arr2(1 To Coll.Count)[/FONT]
[FONT=Arial]Arr2(Coll.Count) = Elt[/FONT]
[FONT=Arial]End If[/FONT]
[FONT=Arial]On Error GoTo 0[/FONT]
[FONT=Arial]Next[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]CellDest.Resize(Coll.Count).Value = _[/FONT]
[FONT=Arial]Application.Transpose(Arr2)[/FONT]
[FONT=Arial] [/FONT]
[FONT=Arial]End Sub[/FONT]

Clic droit sur le bouton
Affecter une macro
 
Re : suppression de doublons dans une plage de cellule

Salut,

En un peu plus simple que mon amie Nat, je te propose le code suivant qui fonctionne sur ton exemple :
Code:
Sub test()
Dim i%, k%
For i = 6 To 399
    For k = 7 To 399
        If Cells(i, 1).Value = Cells(k, 1).Value And i <> k Then
            Cells(k, 1).ClearContents
        End If
    Next k
Next i
End Sub

@+
 
Re : suppression de doublons dans une plage de cellule

Tout en étant dans le ressemblance de Porcinet82:

Sub dbl()

Dim i As Integer
Dim a As String

For i = 6 To 399

a = Cells(i, 1).Value


For i2 = i + 1 To 399

If Cells(i2, 1).Value = a Then
Cells(i2, 1).ClearContents

End If
Next i2


Next i

End Sub
 
Re : suppression de doublons dans une plage de cellule

Mdr a oui, j'ai pas testé donc bon, erreur de noobie =) j'avoue.

Alala, la déclaration de variable, quelle facilité d'erreur

En gros, meme idée que la tienne, mais la tienne sans erreur 😉.


+
 
Re : suppression de doublons dans une plage de cellule

bonsoir et merci pour ta réponse.

en effet le code est relativement long il supprime tres vite mais appreé il boucle sur pas mal de temps

le code est celui que tu m'a donner
Sub test()
Dim i%, k%
For i = 6 To 399
For k = 7 To 399
If Cells(i, 1).Value = Cells(k, 1).Value And i <> k Then
Cells(k, 1).ClearContents
End If
Next k
Next i
End Sub


une petite erreur de ma part, la plage est en b6:b399 et les codes sont identifiés de cette maniere

6aa3
6z9
6d8
6u7

je ne sais pas comment transposer ton code sur cette colonne

Merci de ton aide et de m'avoir répondu

eric
 
Re : suppression de doublons dans une plage de cellule

Salut,

Tu peux esayer le code suivant qui a l'air de tourner moins longtemps :
Code:
Sub test()
Dim i%, k%
For i = 6 To 399
    For k = i + 1 To 399
        If IsEmpty(Cells(i, 2).Value) = False And Cells(i, 2).Value = Cells(k, 2).Value And i <> k Then Cells(k, 2).ClearContents
    Next k
Next i
End Sub

Sinon, il faut passer par un tri. Tu rajoutes une colonne dans laquelle tu mets un numéro que tu incrémentes de 1 à 394 et ensuite tu fais un tri sur la colonne sur laquelle tu veux supprimer des valeurs. Un petit code permet ensuite simplement de supprimer les valeurs je pense plus rapidement.
Si ca peux t'interesser, tiens moi au courant.

@+
 
- 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
5
Affichages
595
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…