Remplissage de ligne avec conditions

Résolu/Fermé
Fitz_Chev - 22 oct. 2015 à 10:31
Fitz_Chevalerie Messages postés 2 Date d'inscription jeudi 22 octobre 2015 Statut Membre Dernière intervention 23 octobre 2015 - 23 oct. 2015 à 10:06
Bonjour,

J'ai un petit souci sur une de mes macros.
Je cherche à identifier mes doublons sur ma colonne I et ensuite surligner toute la ligne en gris.
Pour identifier mes doublons j'ai fait une mise en forme conditionnelle sur ma colonne I. Je l'ai fait avec l'enregistrement de macro et ça me donne donc ça:
    
Columns("I:I").Select
Selection.FormatConditions.AddUniqueValues
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).DupeUnique = xlDuplicate
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False


Donc ensuite, pour surligner mes lignes j'ai utilisé ça:

For i = [I65000].End(xlUp).Row To 2 Step -1
If Cells(i, 9).Interior.Color = 13551615 Then Rows(i & ":" & i).Interior.ColorIndex = 48
Next i


Le problème c'est que rien ne se passe. Je suis certain que cela viens de ma condition
If Cells(i, 9).Interior.Color = 13551615
car avec une autre condition cela marche.

Donc ma question est, quel est le problème dans ma condition, et comment y remédier?

Merci d'avance pour vos réponse.
PS: Je précise que j'ai besoin que ça sois sous forme de macro car cela viens s'intégrer dans une macro plus grande.


1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 693
22 oct. 2015 à 22:22
Bonjour,

La couleur mise avec MFC n'est pas la couleur de la cellule mais uniquement le résultat de la mfc.

Il te faut donc faire ton test avec la condition que tu as mise dans la MFC
DupeUnique = xlDuplicate
0
Fitz_Chevalerie Messages postés 2 Date d'inscription jeudi 22 octobre 2015 Statut Membre Dernière intervention 23 octobre 2015
23 oct. 2015 à 09:11
Merci pour votre réponse, c'est à dire que ma condition doit être :
If Cells(i, 9).DupeUnique = xlDuplicate
ou alors
If Cells(i, 9).FormatConditions(1).DupeUnique = xlDuplicate
???
Car avec la première, j'ai une erreur 438 et la seconde me colorie toute mes lignes...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 693
23 oct. 2015 à 10:02
Bonjour,
Je me suis mal exprimé car je voulais dire qu'il fallait faire le même test que dans ta MFC mais "DupeUnique = xlDuplicate" est propre aux MFC.
Tu peux reprendre ta condition en déterminant les doubles ainsi :
For i = [I65000].End(xlUp).Row To 2 Step -1
If Application.WorksheetFunction.CountIf(Range("I2:I" & [I65000].End(xlUp).Row), Cells(i, 9).Value) > 1 Then Rows(i & ":" & i).Interior.ColorIndex = 48
Next i

Avec NB.SI(ta_plage;ta_cellule) tu comptes les occurrences et s'il y en a plus d'une c'est un double.
0
Fitz_Chevalerie Messages postés 2 Date d'inscription jeudi 22 octobre 2015 Statut Membre Dernière intervention 23 octobre 2015 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
23 oct. 2015 à 10:06
C'est parfait, merci beaucoup
0