fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 septembre 2009
-
13 janv. 2009 à 06:27
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 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
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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
fne67
Messages postés17Date d'inscriptionsamedi 29 septembre 2007StatutMembreDernière intervention19 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