couleur de texte comment les compter

0

Bonjour, j'ai 2 colonnes de dates qui se mettent automatique en rouge ou en vert selon si il y a plus d'intervalle (le texte uniquement). Mon problème est comment faire pour compter le nombre de vert et nombre de rouge?


Merci de votre aide

Posté le 29 décembre 2017, 20:28
par Stéphanie
Répondre
1

Bonsoir Stephanie,

Tu poses une bonne question qui a déjà fait l'objet de nombreuses interrogations sur le net.

Nous sommes ici dans un cas manifeste de faiblesse d'Excel.

En effet, nous pouvons distinguer deux cas de figure :

1 les cellules à compter sont mises en couleur manuellement :

Pour ce cas il existe bien différentes manière de tester la couleur se trouvant dans une cellule soit par VBA soit en utilisant l'ancien système des macro 4 qui existe toujours dans Excel d'aujourd'hui et qui peut rendre toutes sortes de services notamment pour tester le contenu de cellule.

MAIS toutes ces manières supposent qu'Excel lance sont processus de calcul or le changement de couleur ne lance PAS le processus de calcul.  

Donc il n'y a pas moyen de rendre cela automatique.  Il faut toujours une intervention manuelle pour que le système utilisé fonctionne.  

C'est donc dangereux car lorsque l'on change la couleur d'une cellule, il ne faut pas oublier de lancer la procédure de calcul ce qui peut arriver (et donc arrivera...)

Toutefois, je me suis aperçu que si on duplique la couleur d'une cellule répondant aux bons critères vers une autre cellule à l'aide du pinceau (ou de copier / collage spécial / format) cela déclenche le calcul de la feuille donc il y a quand même moyen de rendre cela automatique à condition de respecter cette procédure.

2 les cellules à compter sont mises en couleur grâce à la mise en forme conditionnelle (ce qui, en fonction de ton exposé, est probablement le cas pour toi :  "j'ai 2 colonnes de dates qui se mettent automatique en rouge ou en vert selon si il y a plus d'intervalle "

Là les explications seront très simples : on ne peut tout simplement  pas détecter la couleur de la cellule.  

Je pense que pour Excel c'est la quadrature du cercle. En effet, par essence la mise en forme conditionnelle est volatile et l’algorithme d'Excel qui détermine le code couleur qu'il faut attribuer à la cellule est probablement postérieur à celui qui demande quelle est la couleur qui s'y trouve donc il ne peut pas répondre (c'est l'explication que je me suis donnée... pas certain que c'est la bonne mais cela me paraît logique)

Donc, à priori, pas possible de te donner une solution à ton problème SAUF QUE :

Si tu utilises la mise en forme conditionnelle (MEFC), c'est que tu as été capable de formuler un test ou plusieurs tests qui permettent de faire fonctionner la MEFC.

Donc pour quoi ne pas faire ton calcul en te basant sur les mêmes tests ??

Je te joins en annexe un tableur où j'ai essayé de simuler ce qui pourrait être ton cas de figure (tu n'as pas mis beaucoup d'explications sur ton application).  

J'ai donc imaginé une liste de dates dont il faut enlever une date de départ pour déterminer le délai en jours séparant les 2 dates ainsi qu'un délai autorisé à ne pas dépasser.

Le tableau affiche donc en colonne A :

A1 : une date de départ que tu peux changer

A2 : un délai autorisé (ici j'ai mis 30 mais tu peux changer)

de A3 à A53 des dates d'exécutions qui doivent être supérieures à la date de départ

La mise en forme conditionnelle teste si la différence entre les dates d'exécution et la date de départ est supérieure (rouge) ou inférieur ou égale (vert) au délai autorisé.

Je te propose deux solutions :

1 solution :

En colonne B on calcule le délai pour chaque ligne contenant une date en colonne A

En cellules D1 et D2 on calcule le nombre de l'un et de l'autre grâce aux formules :

=NB.SI($B$3:$B$53;">"&$A$2)

=NB.SI($B$3:$B$53;"<="&$A$2)

Cela nécessite donc une colonne supplémentaire mais qui peut se révéler intéressante dans ce cas de figure. Encore une fois, j'ignore quel est le test qui t'importe à toi c'est donc à toi de voir si la colonne peut être utile pour l'opérateur.  A noter toutefois que la colonne peut être mise n'importe où dans le tableau et peut être masquée si inutile pour l'opérateur

2 solution

On oublie la colonne supplémentaire et on utilise la fonction surpuissante d'Excel qui est SOMMEPROD.  On place donc en F3 et F4 les formules suivantes :

=SOMMEPROD(($A$3:$A$53<>"")*($A$3:$A$53-$A$1>$A$2)*1)

=SOMMEPROD(($A$3:$A$53<>"")*($A$3:$A$53-$A$1<=$A$2)*1)

Et on obtient le résultat escompté.

A toi de choisir.

La solution 1 est un peu plus lourde (colonne supplémentaire) mais les formules sont simples quand à la solution 2 ... cela demande un peu plus de connaissance d'Excel.  Si tu le veux, je peux te fournir différents petits mémos sur le sujet que j'ai recueilli à droite et à gauche et aménagé à ma manière.

De même si tu es intéressé par les méthodes pour détecter les couleurs mises manuellement dans une cellule, je peux également te donner quelques textes et même un exemple que j'ai élaboré en tentant de te répondre et en utilisant ces systèmes et avant d'arriver aux conclusions que je te présente (j'ai passé pas mal de temps sur le net pour trouver toute la littérature sur le sujet... et crois moi il y en a un paquet et j'ai fait beaucoup d'essais... infructueux en tous cas en partie).

Voici ma proposition à adapter en fonction de tes tests bien entendu :

https://www.cjoint.com/c/HAbwuVd7wWo

Tu cliques sur le lien et tu suis les instructions pour récupérer le classeur 

Si tu veux que j'adapte cela à ton sujet, il faut m'envoyer ton classeur Excel (par le même site)

Bien entendu tu enlèves les informations confidentielles, et si le classeur contient beaucoup de données, tu limites cela à une dizaine d'exemples.  Ce qui importe c'est la structure du fichier pour que puisse y implanter les tests et, éventuellement, la colonne si tu choisi cette solution.

J'espère que cela t'aidera à bien commencé l'année 2018 que je te souhaite bonne et pleine de petits tableaux Excel

A+

Chris

 




CHRIS Posté le 1 janvier 2018, 23:34
par CHRIS

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :