OVH Cloud OVH Cloud

nb de cellules rouges par fonction personnalisée

11 réponses
Avatar
Boursicot
Bonjour,

Je voudrais denombrer le nombre de cellules ecrites en rouge (ou autre) dans
un champ à l'aide d'une fonction personnalisée.

pour celà je fais

Function SommeCouleur(couleur, champ)
Application.Volatile True
Dim cellule As Range
a = 0

For Each cellule In champ
If (cellule.Font.ColorIndex = couleur) Then
a = a + 1
End If

b = cellule.Font.ColorIndex
Next cellule

SommeCouleur = a
End Function

Tout va bien sauf qu'il faut que je reactualise par un F9 meme avec le
volatile. comment puis je faire pour que le calcul soit instantané.

Merci de vos réponses.

A+

10 réponses

1 2
Avatar
AV
Tout va bien sauf qu'il faut que je reactualise par un F9 meme avec le
volatile. comment puis je faire pour que le calcul soit instantané.


Un changement de format n'entraine pas de recalcul donc........
Une fonction qui dénombre/somme ou....des "cellules barbouillées" est une
mauvaise idée !
La solution passe par une MEFC qui utilise des tests logiques pour colorer
Ces mêmes tests serviront (par une formule) à dénombrer/sommer...etc....

AV

Avatar
Boursicot
Merci de ta réponse c'est hélas un peu ce que je pensais.

A+



"AV" a écrit dans le message de news:
%
Tout va bien sauf qu'il faut que je reactualise par un F9 meme avec le
volatile. comment puis je faire pour que le calcul soit instantané.


Un changement de format n'entraine pas de recalcul donc........
Une fonction qui dénombre/somme ou....des "cellules barbouillées" est une
mauvaise idée !
La solution passe par une MEFC qui utilise des tests logiques pour colorer
Ces mêmes tests serviront (par une formule) à dénombrer/sommer...etc....

AV





Avatar
Emcy
salut,

attend un peu j'ai peu être une solution...

"Boursicot" a écrit dans le message de news:
42ccce05$0$672$
Merci de ta réponse c'est hélas un peu ce que je pensais.

A+



"AV" a écrit dans le message de news:
%
Tout va bien sauf qu'il faut que je reactualise par un F9 meme avec le
volatile. comment puis je faire pour que le calcul soit instantané.


Un changement de format n'entraine pas de recalcul donc........
Une fonction qui dénombre/somme ou....des "cellules barbouillées" est une
mauvaise idée !
La solution passe par une MEFC qui utilise des tests logiques pour
colorer
Ces mêmes tests serviront (par une formule) à dénombrer/sommer...etc....

AV









Avatar
Emcy
La solution que je voulais utilisée n'est pas viable.
Par contre tu dois pouvoir toi mememe créer une userform avec les couleurs à
l'intereiur que tu appel en appuyant sur un bouton perso
=> après lorsque tu clic sur une des couleurs, il te suffit d'appliquer la
couleur puis de lancer le rafraichissement de ta fonction.

"Emcy" a écrit dans le message de news:
e35$
salut,

attend un peu j'ai peu être une solution...

"Boursicot" a écrit dans le message de news:
42ccce05$0$672$
Merci de ta réponse c'est hélas un peu ce que je pensais.

A+



"AV" a écrit dans le message de news:
%
Tout va bien sauf qu'il faut que je reactualise par un F9 meme avec le
volatile. comment puis je faire pour que le calcul soit instantané.


Un changement de format n'entraine pas de recalcul donc........
Une fonction qui dénombre/somme ou....des "cellules barbouillées" est
une
mauvaise idée !
La solution passe par une MEFC qui utilise des tests logiques pour
colorer
Ces mêmes tests serviront (par une formule) à dénombrer/sommer...etc....

AV













Avatar
Patrick BASTARD
Bonjour, *Boursicot*
J'ai lu ton post 42cc54a9$0$23525$
avec le plus grand intéret :

Peut-être ce code de michdenis à adapter (fonctionne pour compter le nombre
de cellules ayant le même motif que la cellule contenant la formule),

'------------------------------------
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
'------------------------

Dis-nous.
--
Bien amicordialement,
P. Bastard

Bonjour,

Je voudrais denombrer le nombre de cellules ecrites en rouge (ou
autre) dans un champ à l'aide d'une fonction personnalisée.

pour celà je fais

Function SommeCouleur(couleur, champ)
Application.Volatile True
Dim cellule As Range
a = 0

For Each cellule In champ
If (cellule.Font.ColorIndex = couleur) Then
a = a + 1
End If

b = cellule.Font.ColorIndex
Next cellule

SommeCouleur = a
End Function

Tout va bien sauf qu'il faut que je reactualise par un F9 meme avec le
volatile. comment puis je faire pour que le calcul soit instantané.

Merci de vos réponses.

A+


Avatar
AV
Hum...
T'as testé la mise à jour du résultat après la modif d'un motif d'une cellule
de la plage ?

AV
Avatar
Patrick BASTARD
Bonjour, *Alain*

Nécessité de faire F9 pour recalculer si l'on "colorie le fond".
Astuce : mettre le motif d'abord, saisir une valeur ensuite;
Sinon, copier - coller, ça fonctionne bien :

http://cjoint.com/?hhs7gldQQ3


Hum...
T'as testé la mise à jour du résultat après la modif d'un motif d'une
cellule de la plage ?

AV


Avatar
AV
Nécessité de faire F9 pour recalculer si l'on "colorie le fond".


Ben c'est justement là tout le problème et...depuis quelques lustres....!
As-tu bien lu la question ?

Astuce : mettre le motif d'abord, saisir une valeur ensuite;
Sinon, copier - coller, ça fonctionne bien :


En peignant l'écran aussi ?
Ouarff..ouarf....;-)

AV

Avatar
AV
PS : Dans l'exemple joint (que je n'avais pas encore regardé) la fonction perso
que tu utilises (que je persiste à fortement déconseiller) devrait être
avantageusement remplacée par un SOMMEPROD qui, lui, est complétement
indifférent au barbouillage

AV
Avatar
Patrick BASTARD
As-tu bien lu la question ?
Force ne m'est que de le reconnaitre : NON ...

Astuce : mettre le motif d'abord, saisir une valeur ensuite;
Sinon, copier - coller, ça fonctionne bien :


En peignant l'écran aussi ?
Ouarff..ouarf....;-)


Et la girafe ?
rofl rofl



--
Bien amicordialement,
P. Bastard
Confus, cependant...


1 2