MFC et VBA interior.color

luitpold

XLDnaute Nouveau
Bonjour le forum,

J'ai fait une fonction qui compte le nombre de cellules suivant la couleur de remplissage avec le code suivant :

Code:
Function NbCaseCouleur(Couleur As Range, Plage As Range)
Dim nb As Double
    nb = 0
    For Each cell In Plage
        If cell.Interior.Color = Couleur.Interior.Color Then nb = nb + 1
    Next cell
    NbCaseCouleur = nb
End Function

Elle marche très bien pour les cellules dont le remplissages est défini manuellement ou par VBA mais elle ne prend pas en compte les couleurs des MFC.
Ce qui est bien dommage c'était précisément mon but, l'utiliser avec des MFC

Une solution à ce problème ?

D'autre par la valeur de cette formule ne se met pas à jour si je change des couleurs (même après Calculer ou F9) ?

luit
 

Pierrot93

XLDnaute Barbatruc
Re : MFC et VBA interior.color

Bonjour,

Ce qui est bien dommage c'était précisément mon but, l'utiliser avec des MFC
Une solution à ce problème ?

bah... dans le code, il faut effectuer sur la plage de cellules les mêmes tests que ceux effectués pas la MFC...


D'autre par la valeur de cette formule ne se met pas à jour si je change des couleurs (même après Calculer ou F9) ?

essaye peut être ceci en début de procédure..;
Code:
Application.Volatile

bon après midi
@+
 

Misange

XLDnaute Barbatruc
Re : MFC et VBA interior.color

Bonjour

1)Les couleurs mise en place par une mefc n'ont pas de code couleur qu'on puisse récupérer même si visuellement on voit la même chose.
2) un changement de format quel qu'il soit ne déclenche en aucun cas un événement interceptable par excel. On peut utiliser dans certains cas des solutions de contournement, en utilisant par exemple les macros XL4 lire.cellule et interpréter la modif sur la cellule contenant cette fonction XL4.
Donc oui, comme te le propose Pierrot, LA solution, c'est de tester la condition utilisée pour la mefc et la réutiliser pour compter le nb de cellules répondant à la condition.
 

luitpold

XLDnaute Nouveau
Re : MFC et VBA interior.color

Merci pour ces infos,
Cette fonction avait pour objet d'être utilisé dans la feuille de calcul, et partagée avec mes collègues... elle me semble donc "casse-gueule" en l'état puisquelle ne prend pas en compte des cellules qui sont visuellement en couleur. Quand à entrer les condition de la MFC dans le code, cela me ferait perdre le caractère générique de la fonction. Je vais donc tenter la solution de Misange.
Merci pour le "Application.volatile" dont j'avais oublié l'existence !

luit
 

Misange

XLDnaute Barbatruc
Re : MFC et VBA interior.color

"la solution de Misange"... Je crois qu'on s'est mal compris : je te préconise exactement la même chose que ce que Pierrot t'a dit :) : utiliser les conditions appliquées pour ta mefc pour compter les couleurs.
Cela dit tu n'es pas obligé d'utiliser une fonction pour cela.
Si tu mets en rouge toutes les cellules =2, un simple nb.si suffira

Le application volatile ne sera pas utile ici car encore une fois un changement de couleur n'induit pas d'événement capturé par excel dans une macro. Avec ou sans ta fonction ne verra pas de changement de couleur, appliquée par mefc ou manuellement, même combat.
 

Discussions similaires

Réponses
2
Affichages
149
Réponses
8
Affichages
693

Statistiques des forums

Discussions
312 571
Messages
2 089 775
Membres
104 272
dernier inscrit
stef606