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

Somme par rapport à des cellules colorées

14 réponses
Avatar
géjoun.
Bonjour,

Je viens de chercher un peu partout sur le site excelabo, et je ne trouve
pas vraiment une macro qui convienne à ce que je souhaite faire (ça s'en
rapproche, mais c'est pas ça)..

J'ai une plage de cellules A9:E20; et dans cette plage, je voudrais que
lorsque je colore 6 cellules en vert (ça fonctionne toujours par 6), ça me
renvoie en A1 la valeur 0.5; si j'en colore 12, alors ça me renvoie 1, si
j'en colore 18, en A1 : 1.5...etc...
Et par contre, si je ne colore que 5 cellules, ça ne renvoie rien, si j'en
colore 11, ça me renvoie toujours le nombre inférieur, c'est à dire 0.5 (si
j'en colore 17, ça me renvoie 1...etc...).

Est-ce possible de faire ça?
Merci!

--
Géjoun.
dam-mail2004@ifrance.com
/Enlevez l'année pour répondre.../

10 réponses

1 2
Avatar
isabelle
bonjour gégoun

Function couleur6(plg As Range)
Application.Volatile
For Each c In plg
If c.Interior.Color = vbRed Then x = x + 1
couleur6 = Int(x / 6)
Next
End Function

isabelle


Bonjour,

Je viens de chercher un peu partout sur le site excelabo, et je ne trouve
pas vraiment une macro qui convienne à ce que je souhaite faire (ça s'en
rapproche, mais c'est pas ça)..

J'ai une plage de cellules A9:E20; et dans cette plage, je voudrais que
lorsque je colore 6 cellules en vert (ça fonctionne toujours par 6), ça me
renvoie en A1 la valeur 0.5; si j'en colore 12, alors ça me renvoie 1, si
j'en colore 18, en A1 : 1.5...etc...
Et par contre, si je ne colore que 5 cellules, ça ne renvoie rien, si j'en
colore 11, ça me renvoie toujours le nombre inférieur, c'est à dire 0.5 (si
j'en colore 17, ça me renvoie 1...etc...).

Est-ce possible de faire ça?
Merci!

--
Géjoun.

/Enlevez l'année pour répondre.../


Avatar
Rai
Bonsoir,


Function parsix(target As Range)
Application.Volatile
coulcherche = 4
For Each c In target
If c.Interior.ColorIndex = coulcherche Then nbr = nbr + 1
Next c
parsix = Int(nbr / 6) * 0.5
End Function

Bonne soirée

Rai

"géjoun." a écrit dans le message de news: %
Bonjour,

Je viens de chercher un peu partout sur le site excelabo, et je ne trouve
pas vraiment une macro qui convienne à ce que je souhaite faire (ça s'en
rapproche, mais c'est pas ça)..

J'ai une plage de cellules A9:E20; et dans cette plage, je voudrais que
lorsque je colore 6 cellules en vert (ça fonctionne toujours par 6), ça me
renvoie en A1 la valeur 0.5; si j'en colore 12, alors ça me renvoie 1, si
j'en colore 18, en A1 : 1.5...etc...
Et par contre, si je ne colore que 5 cellules, ça ne renvoie rien, si j'en
colore 11, ça me renvoie toujours le nombre inférieur, c'est à dire 0.5 (si
j'en colore 17, ça me renvoie 1...etc...).

Est-ce possible de faire ça?
Merci!

--
Géjoun.

/Enlevez l'année pour répondre.../



Avatar
géjoun.
Bonjour,

Merci pour cette macro, et, si je comprend bien, elle est écrite pour
additionner les cellules colorées en rouge, et non celles en vert, est-ce
bien ça?
Pour changer la couleur d'addition, suffit-il que je modifie "=vbRed" par
"vb+la couleur que je souhaite"?

Merci!
--
Géjoun.

/Enlevez l'année pour répondre.../

De ses petits doigts, isabelle [] a tapoté:

|| bonjour gégoun
||
|| Function couleur6(plg As Range)
|| Application.Volatile
|| For Each c In plg
|| If c.Interior.Color = vbRed Then x = x + 1
|| couleur6 = Int(x / 6)
|| Next
|| End Function
||
|| isabelle
Avatar
géjoun.
Bonjour,

Ta formule fonctionne, mais par contre, à chaque fois que je colore 6
nouvelles cellules, je suis obligé d'aller re-valider la formule afin que
celle-ci s'actualise, y a t'il un moyen pour qu'elle se rafraichisse
automatiquement à cahque fois que je modifie le nombre de cellules colorées?

Merci!

--
Géjoun.

/Enlevez l'année pour répondre.../


De ses petits doigts, Rai [] a tapoté:

| Bonsoir,
|
|
| Function parsix(target As Range)
| Application.Volatile
| coulcherche = 4
| For Each c In target
| If c.Interior.ColorIndex = coulcherche Then nbr = nbr + 1
| Next c
| parsix = Int(nbr / 6) * 0.5
| End Function
|
| Bonne soirée
|
| Rai
Avatar
AV
Votre attention SVP :
Une fonction pour additionner ou décompter ou...les cellules colorées ne peut
qu'être insatisfaisante voire "dangereuse" car le changement de format d'une
cellule ne déclenche aucun recalcul ! (l'instruction Application.volatile n'est
d'aucune utilité dans ce cas)
Il vaut mieux (comme dit très souvent en ce lieu) que le barbouillage des
cellules soit le résultat d'une MEFC
Si tel est le cas, il suffit de se servir des tests logiques de cette
fonctionnalité pour additionner/dénombrer...notamment en utilisant la fonction
SOMMEPROD

AV ... pour le smilblick
Avatar
Pierre CFI [mvp]
Bien vu. bravo l'artiste :o)
euh, tu penses à me rendre mon attention

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"AV" a écrit dans le message de news:
Votre attention SVP :
Une fonction pour additionner ou décompter ou...les cellules colorées ne peut
qu'être insatisfaisante voire "dangereuse" car le changement de format d'une
cellule ne déclenche aucun recalcul ! (l'instruction Application.volatile n'est
d'aucune utilité dans ce cas)
Il vaut mieux (comme dit très souvent en ce lieu) que le barbouillage des
cellules soit le résultat d'une MEFC
Si tel est le cas, il suffit de se servir des tests logiques de cette
fonctionnalité pour additionner/dénombrer...notamment en utilisant la fonction
SOMMEPROD

AV ... pour le smilblick




Avatar
Rai
Bonjour,

Cf. la réponse d'Alain (AV) ci-dessus.
Le changement de format d'une cellule (couleur, format nombre, alignement ...) ne provoque pas de recalcul de la feuille, car il ne provoque pas d'évennement 'change' sur la feuille.

Par contre si tu insère une nouvelle donnée, là ça marche.

Une solution, mais que je ne choisirais pas, serait d'utiliser l'évennement 'SelectionChange' de la feuille concernée pour lancer un recalcul. Je crains fort que cela ne provoque plus de soucis qu'autre chose.

Cordialement

Rai

"géjoun." a écrit dans le message de news:
Bonjour,

Ta formule fonctionne, mais par contre, à chaque fois que je colore 6
nouvelles cellules, je suis obligé d'aller re-valider la formule afin que
celle-ci s'actualise, y a t'il un moyen pour qu'elle se rafraichisse
automatiquement à cahque fois que je modifie le nombre de cellules colorées?

Merci!

--
Géjoun.

/Enlevez l'année pour répondre.../


De ses petits doigts, Rai [] a tapoté:

| Bonsoir,
|
|
| Function parsix(target As Range)
| Application.Volatile
| coulcherche = 4
| For Each c In target
| If c.Interior.ColorIndex = coulcherche Then nbr = nbr + 1
| Next c
| parsix = Int(nbr / 6) * 0.5
| End Function
|
| Bonne soirée
|
| Rai





Avatar
géjoun.
Bonjour,

Effectivement, c'est ce que j'ai pu remarquer, et c'est vrai que c'est pas
terrible pour un tableau où on retrouve à plusieurs endroits ce type de
formules. :-(
Par contre, pourrais-je avoir un peu plus de détails pour utiliser une
fonction 'de remplacement' dont tu parles en dessous ? je vois pas trop
comment utiliser une MEFC pour faire ça.

Merci!
--
Géjoun.

/Enlevez l'année pour répondre.../


De ses petits doigts, AV [] a tapoté:

|| Votre attention SVP :
|| Une fonction pour additionner ou décompter ou...les cellules
|| colorées ne peut qu'être insatisfaisante voire "dangereuse" car le
|| changement de format d'une cellule ne déclenche aucun recalcul !
|| (l'instruction Application.volatile n'est d'aucune utilité dans ce
|| cas)
|| Il vaut mieux (comme dit très souvent en ce lieu) que le
|| barbouillage des cellules soit le résultat d'une MEFC
|| Si tel est le cas, il suffit de se servir des tests logiques de cette
|| fonctionnalité pour additionner/dénombrer...notamment en utilisant
|| la fonction SOMMEPROD
||
|| AV ... pour le smilblick
Avatar
géjoun.
Salut,

Oui, j'ai bien vu la réponse d'AV, mais j'avais reposté avant.
Et pour l'utilisation de 'SelectionChange', je préfère essayer de voir avec
des formules classiques dont parle AV (si c'est possible) plutôt que de
m'embarquer dans une fonction VBA que je maitriserais pas forcément...
restons simple :-)

--
Géjoun.

/Enlevez l'année pour répondre.../


De ses petits doigts, Rai [] a tapoté:

| Bonjour,
|
| Cf. la réponse d'Alain (AV) ci-dessus.
| Le changement de format d'une cellule (couleur, format nombre,
| alignement ...) ne provoque pas de recalcul de la feuille, car il ne
| provoque pas d'évennement 'change' sur la feuille.
|
| Par contre si tu insère une nouvelle donnée, là ça marche.
|
| Une solution, mais que je ne choisirais pas, serait d'utiliser
| l'évennement 'SelectionChange' de la feuille concernée pour lancer un
| recalcul. Je crains fort que cela ne provoque plus de soucis qu'autre
| chose.
|
| Cordialement
|
| Rai
Avatar
AV
je vois pas trop
comment utiliser une MEFC pour faire ça.


Il faudrait que le barbouillage des cellules obeissent à une logique
Exemples : les cellules contenant "truc" ou celles dont le mois de la date est
Avril ou....etc...c'est toi qui vois

AV

1 2