Marquer les doublons

Résolu
fne67 Messages postés 17 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 19 septembre 2009 - 13 janv. 2009 à 06:27
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 13 janv. 2009 à 21:03
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 janv. 2009 à 07:55
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
3
fne67 Messages postés 17 Date d'inscription samedi 29 septembre 2007 Statut Membre Dernière intervention 19 septembre 2009
13 janv. 2009 à 19:40
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 janv. 2009 à 21:03
analyse et adaptes le code ^^
0