XL 2016 Caractères en doublons

lajoie25

XLDnaute Nouveau
Bonjour;

Je souhaiterais mettre en évidence dans une plage de cellules les valeurs en doublons en changeant de couleur par changement de caractère (pièce jointe)

Merci d'avance.
 

Pièces jointes

  • Valeurs en doublons.xlsx
    8.2 KB · Affichages: 16

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lajoie,
Un essai en PJ. La colonne traitée est en "E". Il suffit de modifier une valeur pour remettre à jour les doublons. Avec :
VB:
Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("E1:E1000")) Is Nothing Then
        PremLig = ActiveCell.End(xlUp).Row
        DerLig = ActiveCell.End(xlDown).Row
        Range(Cells(PremLig, "E"), Cells(DerLig, "E")).Interior.Color = RGB(255, 255, 255)
        Range(Cells(PremLig, "E"), Cells(DerLig, "E")).Font.Color = RGB(0, 0, 0)
        For L = PremLig To DerLig
            If Application.CountIf(Range(Cells(PremLig, "E"), Cells(DerLig, "E")), Cells(L, "E")) > 1 And _
               Cells(L, "E").Interior.Color = RGB(255, 255, 255) Then
                R = 1 + Int(254 * Rnd): G = 1 + Int(254 * Rnd): B = 1 + Int(254 * Rnd)
                Chain = Cells(L, "E")
                For L2 = L To DerLig
                    If Cells(L2, "E") = Chain Then
                        Cells(L2, "E").Interior.Color = RGB(R, G, B)
                    End If
                Next L2
            End If
        Next L
    End If
End Sub
 

Pièces jointes

  • Valeurs en doublons.xlsm
    14.9 KB · Affichages: 4

patricktoulon

XLDnaute Barbatruc
bonjour sylvanu
d’après toi n'y a t il pas 2 problèmes dans ton raisonnement

R = 1 + Int(254 * Rnd): G = 1 + Int(254 * Rnd): B = 1 + Int(254 * Rnd)
qui peux dire et etre sur a 100% sans test que cette couleur ne va pas sortir 2 fois ou même plus
d'autant plus que tu n'utilise pas randomize donc au bout de 5/6 change on revient sur les couleurs déjà vu

et puis quoi? a chaque on change toutes les couleur ? :oops:
ben quand on arrive a des milliers de ligne la fonction sera interminable
 

patricktoulon

XLDnaute Barbatruc
on s'en fou de ca
a chaque différence on revient a la couleur 1 ou 2 selon la couleur de la cell au dessus
c'est moins folklorique je te l'accorde mais allège grandement la peine
puisque il nour reste plus qu'a tester la couleur d'au dessus du target
couleur1=blablabla
couleur2=blobloblo
couleur=target.offset(-1).interiror.color
if target=target.offset(-1) then
target.interior.color=couleur
else
if couleur=couleur1 then target=couleur2 else target.interior.color=couleur1
end if




et on a pas besoins de repasser la plage en revue ;)

c'est moins sapin de noel c'est vrai
 

patricktoulon

XLDnaute Barbatruc
ok tu n'a pas compris le sens de ma demarche
j'ai
toto
titi
riri
toto
fifi
loulou
titi

on va prendre rouge et vert
le dernier c'est titi le précédent c'est loulou
loulou est rouge on met titi en vert
je rajoute
truc
truc
machin

avant truc on avait titi qui est vert
on met donc truc en rouge et le suivant aussi et machin en vert

alors oui tout les doublons ne sont pas de la meme couleur mais a chaque changement la couleur s'inverse

c'est moins reveillon mais c'est plus leger
 

patricktoulon

XLDnaute Barbatruc
tiens regarde pas besoins de re colorer toute la plage

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Randomize
           If Target.Column = 5 And Target.Count = 1 Then
        x = Application.IfError(Application.Match(Target.Value, Columns(5), 0), 0)
       If x > 0 And x <> Target.Row Then
            Target.Interior.Color = Cells(x, Target.Column).Interior.Color
        Else
             Target.Interior.Color = RGB(1 + Int((Rnd * 254)), 1 + Int((Rnd * 254)), 1 + Int((Rnd * 254)))
        End If
    End If
End Sub
tu aura tes doublons de la même couleur
on ne colore qu'une seule cell a chaque change ;)
et pour peu que le fichier soit sauver comme tel apres utilisation on garde les memes couleurs
 

Discussions similaires