OVH Cloud OVH Cloud

Pb Utilisation fonction comptage des cellules colorées

7 réponses
Avatar
HD
Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour faire des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées passent à 14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------

7 réponses

Avatar
anomymousA
bonjour,

ai essayé avec les élements que tu donnes. pas de problème. tu peux en dire
+ ?


Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour faire des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées passent à 14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------






Avatar
HD
Si je t'envoyais mon classeur en exemple?
Hervé


"anomymousA" a écrit dans le message
de news:
bonjour,

ai essayé avec les élements que tu donnes. pas de problème. tu peux en
dire
+ ?


Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour faire
des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées passent à
14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------








Avatar
anomymousA
re,

Désolé, je réponds sur le forum mais je ne fais pas de réception de
fichiers. Si tu souhaites continuer, réexplique mieux les conditions
d'occurence de ton erreur.
Quant à moi, je reprends le fil demain matin.

A+


Si je t'envoyais mon classeur en exemple?
Hervé


"anomymousA" a écrit dans le message
de news:
bonjour,

ai essayé avec les élements que tu donnes. pas de problème. tu peux en
dire
+ ?


Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour faire
des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées passent à
14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------













Avatar
Benead
Bonjour HD,

Envoie

Benead
XL97

HD a écrit:
Si je t'envoyais mon classeur en exemple?
Hervé


"anomymousA" a écrit dans le message
de news:

bonjour,

ai essayé avec les élements que tu donnes. pas de problème. tu peux en
dire
+ ?



Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour faire
des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées passent à
14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------













Avatar
Benead
Après avoir reçu et regarder le fichier de HD, je me permets de corriger la fonction de Denis (pourvu qu'il ne m'en
veuille pas !):

Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
c.Parent.Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function

En fait il manquait simplement c.Parent. devant Range(Application.Caller.Address).
Explications : la couleur de la cellule c qui se trouve sur la feuille n°1 est comparée à
"Range(Application.Caller.Address)" qui est fait obligatoirement à la référence à feuille active. Le résultat de la
fonction devenait donc complètement abracadabrant !

A+
Benead
XL97


Benead a écrit:
Bonjour HD,

Envoie

Benead
XL97

HD a écrit:

Si je t'envoyais mon classeur en exemple?
Hervé


"anomymousA" a écrit dans le
message de news:

bonjour,

ai essayé avec les élements que tu donnes. pas de problème. tu peux
en dire
+ ?



Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour
faire des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées
passent à 14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout
redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------
















Avatar
AV
Une fonction comptabilisant les cellules colorées n'est pas une vraie bonne idée
car le changement de format d'une cellule n'entraine aucun recalcul et donc le
résultat de la fonction n'est pas mis à jour !

Une bonne solution est d'utiliser la MEFC pour le "barbouillage" et une formule
utilisant le(s) tes(s) logique(s) contenu(s) dans la MEFC pour le comptage

AV
Avatar
HD
Ca marche nickel.
Merci beaucoup.

Hervé

"Benead" a écrit dans le message de
news:
Après avoir reçu et regarder le fichier de HD, je me permets de corriger
la fonction de Denis (pourvu qu'il ne m'en veuille pas !):

Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
c.Parent.Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function

En fait il manquait simplement c.Parent. devant
Range(Application.Caller.Address).
Explications : la couleur de la cellule c qui se trouve sur la feuille n°1
est comparée à "Range(Application.Caller.Address)" qui est fait
obligatoirement à la référence à feuille active. Le résultat de la
fonction devenait donc complètement abracadabrant !

A+
Benead
XL97


Benead a écrit:
Bonjour HD,

Envoie

Benead
XL97

HD a écrit:

Si je t'envoyais mon classeur en exemple?
Hervé


"anomymousA" a écrit dans le
message de news:

bonjour,

ai essayé avec les élements que tu donnes. pas de problème. tu peux en
dire
+ ?



Bonjour,
J'utilise dans une feuille la fonction de Denis Michon pour compter
les
cellules colorées.
J'ai mis le code en dessous.
Les données récoltées sont utilisées dans une autre feuille pour faire
des
calculs.
Le problème survient dans cette autre feuille. Dès que j'y modifie une
formule, le calcul de mes cellules colorées se remet à jour et devient
complètement aberrant. Toutes les valeurs de cellules colorées passent
à 14.
Je suis obligé de revenir à ma feuille contenant les couleurs, puis de
mettre les champs à jour avec l'option "calculate", et là tout
redevient
normal.
Quelqu'un à une idée sur ce qui se passe?
Par avance merci
Hervé

'----------------------- de Denis Michon-------------
Function Couleur(Rg As Range) As Long
Dim B As Long
Application.Volatile
For Each c In Rg
If c.Interior.ColorIndex = _
Range(Application.Caller.Address). _
Interior.ColorIndex Then
B = B + 1
End If
Next
Couleur = B
End Function
-----------------------