Voici mon problème
Par macro, Je cherche a comparer les couleurs ( blanc et gris ) de 2 tableaux case pour case. J'utilise l'instruction " CoulOR = ActiveCell.Interior.ColorIndex" pour identifier la couleur. Ce code marche très bien si la case est coloriée via le menu " Format/cellule/motif".
En revanche si cette couleur est activée par la mise en forme conditionnelle, la macro ne reconnaît pas systématiquement la couleur de cette case, mais reconnaît la couleur par défaut. ( il arrive que parfois la macro identifie la couleur de la mise en forme conditionnelle ).
Existe t-il un moyen de contourner ce problème ? Soit par un code macro, soit en figeant les couleurs, du type copier/coller format, sauf que cette manip de marche pas.
Dans ta feuille, tu as une mise en forme conditionnelle et pour qu'elle fonctionne tu as bien mis une formule, c'est cette formule avec ses conditions qu'il faut retranscrire dans ta macro.
Sans plus, il est difficile de développer davantage.
Regarde néanmoins, en bas de ce fil (pas vérifié), dans les cinq discussions similaires s'il y a des exemples ou bien aussi avec la fonction Recherche en haut à droite sous ton pseudo, ce thème est assez fréquent.
Edit : Bonsoir Lii, bonsoir chris (bises en retour)
Existe t-il un moyen de contourner ce problème ? Soit par un code macro, soit en figeant les couleurs, du type copier/coller format, sauf que cette manip de marche pas.
Dans ce type de problème, n'est-il pas préférable d'utiliser la propriété Color au lieu de ColorIndex ?
La procédure :
Code:
[COLOR="DarkSlateGray"][B]Sub pRout()
Dim i As Byte
For i = 1 To 56
With [A1]
.Offset(i, 0).Value = i
.Offset(i, 1).Interior.ColorIndex = i
.Offset(i, 2).Value = .Offset(i, 1).Interior.Color
End With
Next i
End Sub[/B][/COLOR]
permet d'établir la correspondance des valeurs des deux propriétés.
J'ai testé avec Color à la place de ColorIndex mais le problème reste le même en cas de mise en forme conditionnelle... Quant à la solution FormatConditions(1).Interior.ColorIndex, elle renvoie la couleur du format coditionnel qu'il soit appliqué ou pas. Voir pièce jointe.
Je pense aussi qu'une solution est de reprendre la condition de la MFC dans la macro...
L'ajout du classeur sans relancer la discussion... n'est pas tellement visible !
Ceci dit, l'ayant vu, je ne trouve pas autre chose que ça :
Code:
[COLOR="DarkSlateGray"][B]Sub Macro1()
Dim cel As Range
For Each cel In Range("A1:A20")
If cel.Value = 1 Then cel.Offset(0, 1).Value = "Jaune" Else cel.Offset(0, 1).Value = Empty
Next cel
End Sub[/B][/COLOR]
autrement dit tester la condition qui sélectionne la mise en forme conditionnelle. C'est ce que suggérait jeanpierre (#2).
Intéressant. Le principe est le même : "repêchage" des formules conditionnant la mise en forme. Belle fonction pour automatiser ce "repêchage" au lieu de l'inscrire "en dur" dans la procédure. A retenir (si on en a l'usage, bien sûr ! Et bien faire attention aux restrictions liminaires...).