Pb NB_SI_couleur et NO_couleur en MFC

Bonjour,

Je découvre ce site en étant parti à la recherche d'une solution pour compter des cellules colorées par MFC. J'ai donc installé le pack des fonctions complémentaires XLP et fait le fichier .xlsm de test ci-joint. Mon environnement PC/Windows/Excel est précisé dans le fichier joint. Le premier essai des fonctions NB_SI_COULEUR et NO_COULEUR sans MFC (col A à D) est concluant, donc je pense que l'installation est OK. Par contre les 2 essais avec MFC (col F à I et col K à N), utilisant chacun 2 jeux de règles de MFC différentes, donnent tous deux des résultats KO, alors que la doc indique que les 2 fonctions sont OK en MFC. Il apparaît que c'est NO_COULEUR qui ne donne pas le bon résultat (cf. col G et L). J'ai dû oublier quelque chose ?

Au cas où ce serait ma configuration machine qui soit en cause et que le fichier fonctionne correctement dans un autre environnement, je mets également ci-joint le pdf du résultat que j'obtiens avec mon environnement.

NB : j'ai bien sûr essayé de trouver une solution dans ce forum en filtrant sur les 2 fonctions, mais l'outil de recherche supprime les _ si bien qu'on se retrouve avec tous les posts mentionnant "couleur" !

Merci d'avance pour tout éclaircissement.

Avec mes salutations.

Garbcolle

Bonjour,

Pourquoi chercher à appliquer un code pour compter les couleurs, il suffit d"appliquer une formule pour compter les cellules qui répondent aux critères demandés dans les MFC.

Exemple: (appliquez les vrais seuils).

garbcolle

Cdlt

Bonjour Arturo83,

Merci pour ta réponse rapide.

Mais malheureusement je ne comprends pas le rapport avec mon problème qui concerne les fonctions du pack NB_SI_COULEUR et NO_COULEUR (du pack des fonctions complémentaires XLP) qui ne donnent pas les résultats escomptés en MFC, cf. colonnes G,I et L,N. Ce que je ne m'explique pas puisque la doc indique que les 2 fonctions sont fonctionnent en MFC.

Avec mes salutations

Garbcolle

Bonsoir

Avec une macro embarquer pour le comptage des couleurs

Slts

Bonjour boss_68,

Merci pour ta réponse, voici ce que j'ai observé en ouvrant le xlsm modifié que tu m'as retourné :

1) Toutes les cellules utilisant les 2 fonctions du pack XLP étaient en ERREUR. Vite trouvé et corrigé = le chemin du pack XLP avait été transformé en D: au lieu du C: initial.

2) Cela étant rétabli, lorsque je double clique sur une des cellules contenant une de ces 2 fonctions, puis que je valide, une erreur systématique d'exécution se produit : Erreur 438 = Propriété ou méthode non gérée par cet objet. Je passe en débogage par le bouton de la boîte de dialogue : dans le code VBA qui s'affiche, l'exécution est arrêtée sur la ligne coul = c.DisplayFormat.Interior.Color (première boucle c) qui est surlignée.

Ceci étant, et sans vouloir abuser de ton temps (je ne connais du VBA, et ne modifie, que des codes simples générés par l'enregistreur de macros), je me questionne sur le fonctionnement :

  • tu m'indiques qu'il s'agit d'une macro, mais je ne trouve aucune macro dans Développeur > Macros du xlsm
  • de même aucun module n'apparaît dans le VBAProject
  • d'où vient le code VBA qui s'exécute et s'affiche dans le débogage
  • comment s'exécute ce code sachant que les cellules font uniquement appel aux 2 fonctions du pack XLP.

Merci, avec mes salutations, et bon week-end.

Garbcolle

Bonjour,

En fait la macro mise dans la feuille même..... en tapant Alt + F11 sert uniquement pour pour la plage F13:F28 les cellules I13, I14, I15 et la deuxième pour la plage K13:K28 et les cellule N13 et N15

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("actualisation").Calculate
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("actualisation").Calculate
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d As Object, c As Range, coul&, coule&
Set d = CreateObject("Scripting.Dictionary")
For Each c In [F13:F28] 'plage à adapter
    coul = c.DisplayFormat.Interior.Color
    d(coul) = d(coul) + 1 'comptage
Next
Application.EnableEvents = False 'désactive les évènements
For Each c In [I13:I15] 'plage à adapter
    c = d(c.Interior.Color)
Next
Application.EnableEvents = True 'réactive les évènements

Set d = CreateObject("Scripting.Dictionary")
For Each c In [K13:K28] 'plage à adapter
    coule = c.DisplayFormat.Interior.Color
    d(coule) = d(coule) + 1 'comptage
Next
Application.EnableEvents = False 'désactive les évènements
For Each c In [N13:N15] 'plage à adapter
    c = d(c.Interior.Color)
Next
Application.EnableEvents = True 'réactive les évènements
End Sub

Le module 1 qui s'y trouve il ne sert à rien je l'ai mis pour des essais mais j'ai oublier de le virer

Moi je n'ai pas installer le Pack XLP cette macro fonctionne très bien sans Pack et moi je n'ai pas de débogage

Slts

Bonsoir boss_68,

Merci pour ta réponse et tes éclaircissements. Du coup j'ai passé le pack XLP en complément inactif et effacé toutes les cellules comportant les 2 fonctions, au cas où il pourrait y avoir des interférences. Mais cela ne change rien, toujours le même résultat : un double clic sur n'importe quelle cellule suivi d'une validation entraîne Erreur 438.

Par ailleurs si je modifie la MFC des 2 plages concernées, par exemple en demandant de colorer les 3 + hauts et les 3 + bas, aucune sommation des couleurs n'apparaît, et aucune erreur d'exécution n'apparaît. Ce qui laisse penser que la macro ne se déclenche pas ?

Dernier point, dans la macro que tu m'as envoyée, les 3 premières lignes sont dupliquées : cela doit être une erreur de copier-coller ?

En conclusion, je me demande si le problème que j'ai n'est pas dû aux versions anciennes W7 et Excel 2007 que j'utilise ?

Merci encore pour les réponses que tu m'as apportées.

Avec mes salutations.

Garbcolle

Bonsoir garbcolle,

Pour la version OUI c'est certainement dû à 2007, puisque j'ai fait un test avec un excel 2007 et j'ai un débogage sur cette ligne

coul = c.DisplayFormat.Interior.Color

Je vais tacher de trouver autre chose mais dis moi que cherches-tu avec N0_Couleur

forum

Slts

Rebonsoir boss_68,

Merci pour la confirmation du problème ... et de persévérer.

J'ai introduit les colonnes NO_Couleur quand j'ai vu que le calcul avec NB_SI_Couleur (dans lequel j'utilise N0_Couleur) ne donnait pas les résultats attendus en MFC dans les colonnes I et N. C'est en quelque sorte du "debug" pour savoir si le problème venait de NO_Couleur (ce qui est le cas) ou de NB_SI_Couleur. Donc aucune finalité par rapport au comptage cherché, qui est bien comme tu l'indiques dans les 3 cellules en colonne I.

De même, il n'est pas utile de poursuivre sur les colonnes K à N. C'était juste pour savoir si le fait d'utiliser une formule dans la MFC plutôt qu'une règle toute faite, pouvait avoir un impact. Le résultat est que ce n'est pas le cas.

Avec mes salutations

Garbcolle

bonjour garbcolle,

Pas trouvé de solution en vba pour excel 2007 pour ton cas désolé

Slts

Bonsoir boss_68,

En tous cas, merci encore pour les réponses que tu m'as apportées et le temps que tu y as consacré !

Je vais maintenir le sujet ouvert au cas où un développeur de ces fonctions du pack XLP pourrait m'apporter une explication sur le dysfonctionnement dans ma configuration.

Bonne continuation.

Avec mes salutations.

Garbcolle

Rechercher des sujets similaires à "couleur mfc"