Répérer les lignes dont les valeurs doublonnent sur une plage
bambifioule
Messages postés
16
Statut
Membre
-
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14393 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Voici un petit tableau dans lequel j'aimerais faire apparaître les doublons lorsqu'Excel détecte que les 3 valeurs sont les mêmes, mêmes si elles sont positionnées dans un ordre différent. Ce qui est le cas en ligne 2 et en ligne 4 par exemple.
Ligne 2 : 1998 2000 2005
Ligne 4 : 2005 1998 2000
Quelqu'un aurait-il une formule pour résoudre ceci ? Un grand merci par avance.

Voici un petit tableau dans lequel j'aimerais faire apparaître les doublons lorsqu'Excel détecte que les 3 valeurs sont les mêmes, mêmes si elles sont positionnées dans un ordre différent. Ce qui est le cas en ligne 2 et en ligne 4 par exemple.
Ligne 2 : 1998 2000 2005
Ligne 4 : 2005 1998 2000
Quelqu'un aurait-il une formule pour résoudre ceci ? Un grand merci par avance.

2 réponses
-
Bonjour bambifioule
Par formule, longue formule en D1, à étirer ensuite :
=SI(ET(SIERREUR(EQUIV(A3;$A$2:$A$5;0);0)+SIERREUR(EQUIV(A3;$B$2:$B$5;0);0)+SIERREUR(EQUIV(A3;$C$2:$C$5;0);0)<>LIGNE()+1;SIERREUR(EQUIV(B3;$A$2:$A$5;0);0)+SIERREUR(EQUIV(B3;$B$2:$B$5;0);0)+SIERREUR(EQUIV(B3;$C$2:$C$5;0);0)=SIERREUR(EQUIV(A3;$A$2:$A$5;0);0)+SIERREUR(EQUIV(A3;$B$2:$B$5;0);0)+SIERREUR(EQUIV(A3;$C$2:$C$5;0);0);SIERREUR(EQUIV(C3;$A$2:$A$5;0);0)+SIERREUR(EQUIV(C3;$B$2:$B$5;0);0)+SIERREUR(EQUIV(C3;$C$2:$C$5;0);0)=SIERREUR(EQUIV(A3;$A$2:$A$5;0);0)+SIERREUR(EQUIV(A3;$B$2:$B$5;0);0)+SIERREUR(EQUIV(A3;$C$2:$C$5;0);0));"doublon";"")
mais possible aussi avec une fonction personnalisée, exemple à partir de tes données :
https://www.cjoint.com/?0DAoORYTWJT
Cdlmnt
Via-
Hello, merci infinement pour cette réponse ! Concernant la macro j'aurais besoin de l'adapter pour détecter les doublons sur 5 colonnes.
Je suis entrain de compléter le code que tu as écrit, mais sur la fin, je ne sais pas trop comment faire :
Function doublons(cellule As Range)
doublons = ""
Dim dl As Long
'derniere ligne remplie
dl = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1
'ligne et colonne de la plage
lig = cellule.Row
col = cellule.Column
' valeurs de la cellule et des 2 cellules à droite
a = Cells(lig, col).Value
b = Cells(lig, col + 1).Value
c = Cells(lig, col + 2).Value
d = Cells(lig, col + 3).Value
e = Cells(lig, col + 4).Value
'boucle sur les lignes du tableau
For t = 2 To dl
' si autre ligne que celle de la formule
If t <> lig Then
' valeurs des 3 cellules de cette ligne
a2 = Cells(t, col).Value
b2 = Cells(t, col + 1).Value
c2 = Cells(t, col + 2).Value
' comparaison avec les valeurs de la ligne de la formule et si identique doublon
If (a = a2 And (b = b2 And c = c2 Or b = c2 And c = b2)) Or (a = b2 And (b = a2 And c = c2 Or b = c2 And c = a2)) Or (a = c2 And (b = b2 And c = a2 Or b = a2 And c = b2)) Then doublons = "doublon"
End If
Next
End Function- Re,
Avec 5 colonnes ç'est plus complexe il faut envisager tous les cas de figure dans le IF; ça devient mission sinon impossible mais du moins ardue car là il n'y a pas 6 possibilités comme précédemment mais 120 !!
Il faut trouver une autre méthode; j'y réfléchis et je te fais retour dès que possible
-
-

