Suppression de doublons sous excel [Résolu]

Elnono94 13 Messages postés samedi 14 février 2004Date d'inscription 6 décembre 2005 Dernière intervention - 22 août 2005 à 16:21 - Dernière réponse : Elnono94 13 Messages postés samedi 14 février 2004Date d'inscription 6 décembre 2005 Dernière intervention
- 23 août 2005 à 17:26
Bonjour à tous,
Voila je souhaiterais savoir s'il existe
un code vba afin de supprimer des doublons.



exp:
A B
32050 220
32050 220
33100 250
34550 120
34550 120
34550 120


La colonne A contient des références et la colonne B des valeurs.
Il faudrait en fait que les doublons de la colonne B soient supprimés
ou remplacer par 0.

Merci pour votre aide
Afficher la suite 

9 réponses

Meilleure réponse
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 23 août 2005 à 14:01
3
Merci
Voila mon brave,

Entre deux coup de dents dans le sandwich en fait le soluce est tout con, que voila:

Sub doublons()
Dim i, j, DBL, NBV
NBV = Application.CountA(Columns("A"))
For i = 1 To NBV
DBL = Cells(i, "A")
tval = Cells(i, "B")
For j = i + 1 To NBV
If LCase(Cells(j, "A")) = LCase(DBL) Then
If LCase(Cells(j, "B")) = LCase(tval) Then
Cells(j, "B") = "0"
End If
End If
Next j

Next i
End Sub

j'ai testé et cela fonctionne, bien entendu avant tu dois trié les deux colonnes

Courage à toi surtout.
Sacha
\!/
00
!

Merci sacha1435 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 22 août 2005 à 16:54
0
Merci
Salut

ici tu as de quoi faire
http://www.vbfrance.com/forum.v2.aspx?id=167978

Sacha

\!/
00
!
Elnono94 13 Messages postés samedi 14 février 2004Date d'inscription 6 décembre 2005 Dernière intervention - 22 août 2005 à 17:45
0
Merci
Merci Sacha mais il reste un problème
Dans le code vba suivant (le plus approprié) :

Sub doublons()
'Ce code efface tout les doublons de la colonne B
Dim i, j, DBL, NBV
NBV = Application.CountA(Columns("B"))
For i = 1 To NBV
DBL = Cells(i, "B")
For j = i + 1 To NBV
If LCase(Cells(j, "B")) LCase(DBL) Then Cells(j, "B") "0"
Next j
Next i
End Sub

Le probleme c'est que celui-ci ne prend pas en compte les valeurs de la colonne A.
Du coup le code effecera automatiquement la valeur 120 qui se rapporte à la référence 34551 de la dernière ligne qui n'est pas un doubon...

A B
32050 220
32050 220
33100 250
34550 120
34550 120
34551 120

Comment faire pour pour se reporter à la colonne A afin que celui-ci détermine la bonne valeur à replacer ?
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 23 août 2005 à 08:43
0
Merci
Récapitulon,

Il faut supprimer les doublon colonne "B" si valeur unique dans la colonne "A"

Donc le résultat attendu est :
A B
32050 220
32050 0
33100 250
34550 120
34550 0
34551 120

j'ai justement une chtite fonction qui fait ca mais sur une variable tableau a 2 colonnes que je dois adapter
a ta spec.

Sacha

\!/
00
!
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 23 août 2005 à 09:13
0
Merci
Voila

Sub doublons()
Dim i, j, DBL, NBV
NBV = Application.CountA(Columns("A"))
For i = 1 To NBV
DBL = Cells(i, "A")
For j = i + 1 To NBV If LCase(Cells(j, "A")) LCase(DBL) Then 'Cells(j, "A") "0" If LCase(Cells(j, "B")) LCase(Cells(j - 1, "B")) Then Cells(j, "B") "0"
End If
Next j

Next i
End Sub

Sacha

\!/
00
!
Elnono94 13 Messages postés samedi 14 février 2004Date d'inscription 6 décembre 2005 Dernière intervention - 23 août 2005 à 11:48
0
Merci
Salut Sacha
j'ai essayé la fonction sur un tableau contenant plusieurs variables,
il subsiste encore un probléme. En effet dés qu'il y a une suite de variables supérieur à 2, la fonction ignore le doublon :

Exp :

A B
32050 220
32050 0
32050 220 =====> la fonction ne reconnait pas la valeur comme un doublon
33100 250
34550 120
34550 0
34551 120

Peut-être peut-on à l'aide d'une boucle comparer les valeurs de la colonne A
avec la colonne B afin de déterminer les doublons.
sacha1435 94 Messages postés jeudi 13 février 2003Date d'inscription 12 octobre 2005 Dernière intervention - 23 août 2005 à 12:17
0
Merci
Salut Elnono,

évidement c'est logique vu que la valeur 220 est remplacée par un 0,
il faut juste crée une variable qui prendra en compte la 1 ere valeur de la colonne B au regard de A
dès que la valeur colonne A est différente de la précédente il faut réinitialisée cette variable.
sinon le plus simple est de lui faire récrire les valeurs dans la colonne cela donnera ceci

A B C
32050 220 220
32050 220 0
32050 220 0
33100 250 250
34550 120 120
34550 120 0
34551 120 120

après tu copie de C>B
voici le code "j'ai pas testé"

Sub doublons()
Dim i, j, DBL, NBV
NBV = Application.CountA(Columns("A"))
For i = 1 To NBV
DBL = Cells(i, "A")
For j = i + 1 To NBV
If LCase(Cells(j, "A")) = LCase(DBL) Then If LCase(Cells(j, "B")) LCase(Cells(j - 1, "B")) Then Cells(j, "C") "0"
Else
Cells(j,"C")=Cells(j,"B")
End If
Next j

Next i
End Sub

Si cette bidouille ne te conviend pas je te gratte la fonction mais ce sera pour demain matin, j'ai beaucoup de travail en ce moment.

Dis moi quoi que je ne gratte pas pour rien

Sacha
\!/
00
!
Elnono94 13 Messages postés samedi 14 février 2004Date d'inscription 6 décembre 2005 Dernière intervention - 23 août 2005 à 13:01
0
Merci
Je te remercie pour le temps consacré sacha.
Je te rassure si je demande de l'aide ce n'est pas pour rien !
Mon tableau Excel est déjà formaté au niveau des colonnes, par conséquent
il m'est impossible de lui faire rajouter une autre colonne afin de faire réécrire
à la fonction les valeurs.

Ne te presse pas, de toute façon ce n'est pas urgentissime.

Encore merci pour ton aide.
Bon courage !
Elnono94 13 Messages postés samedi 14 février 2004Date d'inscription 6 décembre 2005 Dernière intervention - 23 août 2005 à 17:26
0
Merci
J'ai donc appliqué la fonction et tout marche parfaitement.
Un grand MERCI à Sacha qui à pris de son temps afin de pouvoir m'aider.

Merci à VBfrance par la même occasion, ce site est très instructif !!!

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.