Mise en forme conditionnelle en VBA

Bonjour,

Je cherche de l'aide pour savoir comment avec une macro en VBA on peut savoir si une cellule a été coloriée (couleur de fond) par une mise en forme conditionnelle.

Je ne cherche pas à connaitre la couleur de la cellule: ni la couleur réelle de fond ni celle donnée par la MFC.

J'ai juste besoin de savoir si il y a une MFC et si elle change la couleur ou pas.

Actuellement une des formules de MFC est : =ET((Q$11>=$K27);(Q$11<=$L27)). Cette formule change en fonction des différentes cellules de la plage exploitée qui va de Q11 à FD 36

Une solution partielle a été trouvée sur le forum mais cette solution ne remplit qu’une partie des conditions en ne faisant que la différence entre une cellule qui a une MFC ou pas.

Voici cette procédure incomplète :

Sub coloriée()

With ActiveCell

If .FormatConditions.Count = 0 Then

MsgBox "La cellule a été coloriée par l'utilisateur.", vbInformation, "Résultat"

Else

MsgBox "La cellule a été coloriée par une mise en forme conditionnelle.", vbInformation, "Résultat"

End If

End With

Merci de votre aide car après avoir cherché longtemps sur les forums et testé pas mal de chose, je n'ai pas encore trouvé la solution.

Merci d'avance.

Pascal

Bonjour,

Il n'y a pas d'autre solution que de tester toutes les conditions de MFC. Si les conditions sont remplies la MFC à surement fait son boulot ! Si aucune des conditions ne sont remplies c'est qu'aucune des MFC ne s'applique...

Nota : De plus cela ne vérifie que l'action de la MFC, pas le changement de couleur ! Si la cellule est déjà rouge et que l'action de la MFC est de mettre en rouge il n'y a pas changement de couleur mais la MFC à bien joué.

En d'autre terme les MFC servent à l'utilisateur pour avoir une alerte visuelle. Ce n'est pas un instrument de calcul pour Excel... (ni pour VBA)

A+

Merci pour ta réponse,

si j'ai bien compris, impossible de savoir si une couleur à été renvoyée par la MFC ou pas ?

Cordialement.

Pascal

galopin01 a écrit :

Bonjour,

Il n'y a pas d'autre solution que de tester toutes les conditions de MFC. Si les conditions sont remplies la MFC à surement fait son boulot ! Si aucune des conditions ne sont remplies c'est qu'aucune des MFC ne s'applique...

Nota : De plus cela ne vérifie que l'action de la MFC, pas le changement de couleur ! Si la cellule est déjà rouge et que l'action de la MFC est de mettre en rouge il n'y a pas changement de couleur mais la MFC à bien joué.

En d'autre terme les MFC servent à l'utilisateur pour avoir une alerte visuelle. Ce n'est pas un instrument de calcul pour Excel... (ni pour VBA)

A+

Merci pour ta réponse,

si j'ai bien compris, impossible de savoir si une couleur à été renvoyée par la MFC ou pas ?

Cordialement.

Pascal

Bonjour,

Sub testCouleur()
    If Not ActiveCell.DisplayFormat.Interior.Color = ActiveCell.Interior.Color Then
        MsgBox "MFC active"
    ElseIf Not ActiveCell.Interior.Color = vbWhite Then
        MsgBox "Couleur manuelle"
    Else
        MsgBox "Pas de couleur"
    End If
End Sub

avec 3 (petites) limitations :

  • excel >= 2007
  • si couleur MFC = couleur manuelle elle n'est pas détectée comme MFC, à toi de t'arranger que ça n'arrive pas si c'est gênant
  • non utilisable dans une fonction personnalisée
eric

Merci eriiic, c'est exactement ce que je cherchais.

Bien cordialement, meilleures salutations.

Pascal

Rechercher des sujets similaires à "mise forme conditionnelle vba"