XL 2021 Additionner la couleur du fond et la police de plusieurs cellule en vba

Tophe2

XLDnaute Impliqué
Bonjour le forum,

J'ai récupéré le fichier sur le site pour pouvoir additionner des chiffres (totaux du chiffre inscrit dans la cellule) en fonction de la cellule du fond et de la couleur de la police.

J'ai des zones de traitements où peuvent se trouver des cellules de couleurs de fonds différentes avec des police identiques j'essai de collationner le tout.

Je n'arrive pas à collationner le tout en code VBA.

Couleur de fond identique bleu et police différente blanc et rouge & fond saumon avec couleur police blanc ou rouge.

Voici le fichier récupérer.

Peut être avez un code plus simple pour l'utiliser sur un zone de traitement identique, plusieurs fonds différents et police identiques.

Merci pour votre aide

Bonne soirée
Christophe
 

Pièces jointes

  • Compte_Couleur.xls
    64.5 KB · Affichages: 5
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Tophe2 :),

Une fonction personnalisée qui s'appelle : CouleurPlage(...)

Elle a quatre paramètres en entrée :
  1. xrgPlageSource : c'est la plage des cellules sources
  2. operation : c'est le type d'opération qu'on doit faire. Si sa valeur est 0 alors on effectue un comptage, sinon on effectue une somme
  3. coulFondPolice : c'est l'élément dont on doit considérer la couleur. Si sa valeur est 0 alors on s’intéresse à la couleur du fond, sinon on s’intéresse à la couleur de la police
  4. xrgRefCoul : c'est la cellule qui indique la couleur de référence. Attention! Si on s’intéresse à la couleur du fond alors c'est la couleur du fond de cette cellule qui sera la référence. Si on s’intéresse à la couleur de la police alors c'est la couleur de police de cette cellule qui sera la référence.

La déclaration de la fonction est donc :
Function CouleurPlage ( xrgPlageSource As Range , operation& , coulFondPolice& , xrgRefCoul As Range )

Exemple 1 : =CouleurPlage( B9:G9 ; 0; 0; H8 ) : Sur la plage B9:G9, on va compter les cellules dont la couleur de fond est identique à la couleur de fond de la cellule H8

Exemple 2 : =CouleurPlage( B9:G9;1;1;J8 ) : Sur la plage B9:G9, on va sommer les cellules dont la couleur de police est identique à la couleur de la police de la cellule H8

La formule en H9 est à recopier en I9, puis les formules H9:I9 sont à recopier vers le bas.
La formule en J9 est à recopier en K9, puis les formules J9K9 sont à recopier vers le bas.

Attention ! Quand vous modifiez des couleurs (du fond ou de la police), Excel n'effectue pas forcément le recalcul de la feuille. Il faut veiller à forcer le recalcul de la feuille en tapant sur la touche de fonction F9.

Le code est dans Module1. Il est un tout petit peu commenté.

nota : cette fonction est utilisable dans une feuille de calcul ou dans un code VBA.
 

Pièces jointes

  • Tophe2- Compte_Couleur- v1.xlsm
    24.8 KB · Affichages: 2
Dernière édition:

Tophe2

XLDnaute Impliqué
Bonjour mapomme,

Désolé pour le retard de ma réponse mais un imprévu ce jour......

Je tiens à te remercier pour ta réponse et les explication ci dessus je n'ai pas eu le temps de regarder le code et de l'adapter en fonction.

Je vois ça rapidement.

Un grand MERCI

Bonne Journée
Christophe
 

Tophe2

XLDnaute Impliqué
Bonjour mapomme, le forum,

Je viens de regarder ton code et tes explications cependant je n'ai pas dû être clair dans mes explication.
Est il possible de pouvoir additionner des cellules identiques sur le fond et sur la police.

exemple : Fond bleu police rouge il faut additionner toutes les celles identiques (les chiffres inscrits à l'intérieur) pas le nombre de cellule bleu.

J'ai copié la feuil1 et commenté dans une bulle le souhait du résultat, en espérant être plus clair et surtout que cela puisse être envisageable..... (fichier joint)

Merci par avance pour ton aide
Bonne Journée
 

Pièces jointes

  • Tophe2- Compte_Couleur- v1.xlsm
    28.8 KB · Affichages: 2

mapomme

XLDnaute Barbatruc
Supporter XLD
Re ;) ,

J'ai modifiée la fonction pour tenir compte d'un troisième type de comparaison qui prend en compte la couleur du fond et la couleur de la police.

Les paramètres sont les suivants :

xrgPlageSource : c'est la plage des cellules à traiter (inchangé par rapport à la v1)

operation : c'est l'opération à faire pour les cellules correspondantes (inchangé par rapport à la v1)
  • 0 => on compte les cellules
  • 1 => on somme les valeurs des cellules
coulFondPolice : comment faire la concordance des couleurs ? (complété par rapport à la v1)
  • 0 => les couleurs de fond seront comparées
  • 1 => les couleurs de police seront comparées
  • 3 => les couleurs de fond ET de police seront comparées

xrgRefCoul : c'est la cellule qui contient la référence de la couleur de fond et de la police (inchangé par rapport à la v1)
 

Pièces jointes

  • Tophe2- Compte_Couleur- v2.xlsm
    23 KB · Affichages: 1
Dernière édition:

Tophe2

XLDnaute Impliqué
Bonjour mapomme, le Forum,

Merci pour tes explications et l'exemple dans le fichier ça fonction très bien.

Tu notes :

coulFondPolice : comment faire la concordance des couleurs ? (complété par rapport à la v1)
  • 0 => les couleurs de fond seront comparées
  • 1 => les couleurs de police seront comparées
  • 2 => les couleurs de fond ET de police seront comparées
Dans le code je vois bien 0, le 1 et ensuite il est noté 3 pour couleur de fond ET la police pourquoi mettre 2 dans l'explication ?

de mon côté j'ai copié la formule existante et ça marche très très bien.

On fait "F9" pour rafraichir la page et obtenir le résultat, c'est la seule solution pour obtenir une mise à jour du fichier ?

MERCI
bonne Journée
Christophe
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @Tophe2 :),

Dans le code je vois bien 0, le 1 et ensuite il est noté 3 pour couleur de fond ET la police pourquoi mettre 2 dans l'explication ?

Hé bien, tu as l"oeil ;)!

C'est une faute de frappe :mad: dans le code, j'aurais dû mettre 2 et j'ai mis 3 dans le code. Un petit coup de fatigue.

Je m'en vais corriger les explications... Merci à toi 👌.

On fait "F9" pour rafraichir la page et obtenir le résultat, c'est la seule solution pour obtenir une mise à jour du fichier ?

Il n'y a pas de méthode infaillible pour le faire.
  • d'aucuns utilisent un Timer qui toutes les secondes fait le recalcul de la feuille. Je trouve cela lourd.
  • d'autres utilisent des évènements tels que le changement de sélection sur la feuille pour faire le recalcul. Mais ça ne marche pas à tout les coups
 
Dernière édition:

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
314 701
Messages
2 112 032
Membres
111 408
dernier inscrit
Vonkhar777