Elnono94
Messages postés13Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 6 décembre 2005
-
22 août 2005 à 16:21
Elnono94
Messages postés13Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 6 décembre 2005
-
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.
sacha1435
Messages postés94Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 octobre 20052 23 août 2005 à 14:01
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
Elnono94
Messages postés13Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 6 décembre 2005 22 août 2005 à 17:45
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
Messages postés94Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 octobre 20052 23 août 2005 à 09:13
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
Elnono94
Messages postés13Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 6 décembre 2005 23 août 2005 à 11:48
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
Messages postés94Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention12 octobre 20052 23 août 2005 à 12:17
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.
Elnono94
Messages postés13Date d'inscriptionsamedi 14 février 2004StatutMembreDernière intervention 6 décembre 2005 23 août 2005 à 13:01
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.