Marquer les doublons

Résolu
Signaler
Messages postés
17
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
19 septembre 2009
-
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
-
Bonjour est bonne année à tous !
Je ne suis pas expert dans la programmation VB, je souhaiterais via macro marquer la première ligne en double d'un tableau le programme que j'ai fais ne fonctionne pas quelqu'un a-t-il une solution pour le rendre viable SVP

Sub MarqueLesDoublons()
Dim Plage As Range, i&, Cell As Range, Rng As Range
On Error Resume Next
Set Plage = Range("c1:c65000").Value
If IsEmpty(Plage) Then Exit Sub
Application.ScreenUpdating = False
For Each Cell In Plage
For i = 1 To Plage.Count
Set Rng = Cell.Offset(i)
If Rng <> "" And Rng = Cell Then
ActiveCell.EntireRow.Select                         ' met en bleue la première ligne des doublons
Selection.Font.Color = RGB(0, 0, 255)
Exit For
End If
Next i
Next Cell
End Sub

Merci d'avance

3 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
le .Value ici:

Set Plage = Range("c1:c65000").Value

m'intrigue.

le
On Error Resume Next
est une mauvaise habitude qui masque tes erreurs.

pas utile ni très bon de faire des .Select ni de jouer avec ActiveCell au sein d'une macro

Sub MarqueLesDoublons()
Dim oPlage As Range
Dim oCell1 As Range, oCell2 As Range
Set oPlage = Range("c1:c65000")
For Each oCell1 In oPlage
'# Si la cellule n'est pas vide et qu'elle n'a pas déjà été traitée...
If LenB(oCell1.Value) And oCell1.Font.Color <> vbBlue Then
'# On cherche les valeurs en doublon
For Each oCell2 In oPlage
'# Idem, on traque les cellules vides
If LenB(oCell2.Value) Then
'# Si oCell1 et oCell2 ne pointent pas sur la même cellule
If oCell1.Address <> oCell2.Address Then
'# Et que leur contenu est identique...
If oCell1.Value = oCell2.Value Then
'# On colorie ces cellules
oCell1.EntireRow.Font.Color = vbBlue
oCell2.EntireRow.Font.Color = vbBlue
End If
End If
Else
'# Cellule vide, on ne continue pas plus bas
Exit For
End If
Next oCell2
Else
Exit For
End If
Next oCell1
End Sub
Messages postés
17
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
19 septembre 2009

Merci pour ton code, il fonctionne bien mais se que j'aurais aimer c'est mettre en bleue uniquement la première ligne des doublons trouvés dans la plage. ton code color chaque doublon, ce que se souhaite, si c'est possible, de ne coloriser que la première ligne des doublons.
Exemple :
1 <= bleue
2
3
4 <= bleue
1<= non bleue
2
4<= non bleue
etc..
Merci encore pour tes efforts j'apprécie beaucoup
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
analyse et adaptes le code ^^