Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

macro auto

3 réponses
Avatar
fredbzr
Bonjour à tous
j'utilise le code ci-dessous (merci à Jacques Boigontier sur Excelabo) pour
me mermettre de compter des cellules de couleurs.
Ce code est placé dans un module
J'aurai voulu savoir comment faire pour que le calcul soit automatique à
chaque fois qu'il y a un changement sans être obligé de faire F9 à chaque
fois.
Merci de votre aide

Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp
Calculate
End Function

Function CompteCouleur2(champ As Range, couleur As Integer)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur Then
temp = temp + 1
End If
Next c
CompteCouleur2 = temp
Calculate
End Function


--


Katia , Fred & Valentin

3 réponses

Avatar
lSteph
Bonjour,
C'est bien pourquoi il a déjà largement été évoqué sur ce forum
que vouloir calculer avec des couleurs est inutile en l'état
et pourtant dans cette tentative de code il y est fait au
mieux puisque bien précisé Application.Volatile,

le Hic c'est que

Volatile force une fonction à se réexecuter,
lorsqu'il y a un recalcul dans la feuille

MAIS

Un changement de format, soit de couleur,
n'a pas vocation à précisémentà provoquer un recalcul.

Diverses solutions complexes seraient evisageables pour contourner ..
Je ne suis pas sûr qu'un tel dispositif soit souhaitable, d'autant que
d'aucuns voudraient pouvoir alors mettre à jour les liaisons de
couleurs obtenues par calcul.

Cdlt.

lSteph




fredbzr a utilisé son clavier pour écrire :
Bonjour à tous
j'utilise le code ci-dessous (merci à Jacques Boigontier sur Excelabo) pour
me mermettre de compter des cellules de couleurs.
Ce code est placé dans un module
J'aurai voulu savoir comment faire pour que le calcul soit automatique à
chaque fois qu'il y a un changement sans être obligé de faire F9 à chaque
fois.
Merci de votre aide

Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp
Calculate
End Function

Function CompteCouleur2(champ As Range, couleur As Integer)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur Then
temp = temp + 1
End If
Next c
CompteCouleur2 = temp
Calculate
End Function


--
- -

Avatar
lSteph
...pour poursuivre, exemple de contournement visant à obtenir plus
simplement ce que tu souhaites
envisager d'utiliser exclusivement une macro pour colorer les cellules
et ainsi y associer le recalcul.

Calculate

Cdlt.

lSteph

--
- -
Avatar
fredbzr
bonjour lSteph
merci pour ton explication
je me forcerai à ne pas oublier de faire F9
bonne journée
"lSteph" a écrit dans le message de news:

Bonjour,
C'est bien pourquoi il a déjà largement été évoqué sur ce forum
que vouloir calculer avec des couleurs est inutile en l'état
et pourtant dans cette tentative de code il y est fait au
mieux puisque bien précisé Application.Volatile,

le Hic c'est que

Volatile force une fonction à se réexecuter,
lorsqu'il y a un recalcul dans la feuille

MAIS

Un changement de format, soit de couleur,
n'a pas vocation à précisémentà provoquer un recalcul.

Diverses solutions complexes seraient evisageables pour contourner ..
Je ne suis pas sûr qu'un tel dispositif soit souhaitable, d'autant que
d'aucuns voudraient pouvoir alors mettre à jour les liaisons de couleurs
obtenues par calcul.

Cdlt.

lSteph




fredbzr a utilisé son clavier pour écrire :
Bonjour à tous
j'utilise le code ci-dessous (merci à Jacques Boigontier sur Excelabo)
pour me mermettre de compter des cellules de couleurs.
Ce code est placé dans un module
J'aurai voulu savoir comment faire pour que le calcul soit automatique à
chaque fois qu'il y a un changement sans être obligé de faire F9 à chaque
fois.
Merci de votre aide

Function CompteCouleur(champ As Range, couleur As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur.Interior.ColorIndex Then
temp = temp + 1
End If
Next c
CompteCouleur = temp
Calculate
End Function

Function CompteCouleur2(champ As Range, couleur As Integer)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Interior.ColorIndex = couleur Then
temp = temp + 1
End If
Next c
CompteCouleur2 = temp
Calculate
End Function


--
- -