Compte couleur automatisé

Lleytt

XLDnaute Nouveau
Bonjour,

Il y a 1 semaine vous m'aviez aidé avec une macro qui déterminait le nombre de cases colorées dans un tableau.
J'aimerais savoir s'il était possible d'automatiser cette recherche et l'intégrer dans un autre tableau. Je m'explique, sur le fichier ci-joint:
Il y a le tableau de base avec des cases colorées.
En dessous, 2 tableaux que je remplis jusqu'à maintenant manuellement grâce à la macro comptecouleur. Cependant, Est-ce que les 2ème et 3ème tableaux pourraient être remplis automatiquement sans passer par la case remplissage manuel de ligne et colonne?

Merci de votre aide précieuse, je suis novice en informatique/Excel...

Lleytt
 

Pièces jointes

  • Dossier 1.xlsx
    20.4 KB · Affichages: 34

Lleytt

XLDnaute Nouveau
Re : Compte couleur automatisé

Bonjour,

En effet je l'avais enregistréé sans la macro... désolé. Voici le bon fichier.
J'aimerais que ce système fonctionne aussi sur d'autres figurations de tableaux (3 couleurs dans mon tableau ou plus) ... je ne sais pas si c'est possible.
 

Pièces jointes

  • dossier-1.xlsm
    32.5 KB · Affichages: 35

job75

XLDnaute Barbatruc
Re : Compte couleur automatisé

Bonjour Lleytt, Roger,

Cela n'a rien à voir avec le fil précédent :rolleyes:

Pour les 2 tableaux il s'agit d'un simple comptage de couleur sur une plage avec cette fonction :

Code:
Function NCoul(ref As Range, r As Range)
Application.Volatile
Dim coul&
coul = ref.Interior.Color
For Each r In r
  If r.Interior.Color = coul Then NCoul = NCoul + 1
Next
End Function
Fichier joint.

PS1 : je vous laisse masquer les valeurs zéro...

PS2 : la couleur en A44 n'était pas la bonne...

A+
 

Pièces jointes

  • dossier(1).xlsm
    33.8 KB · Affichages: 34

job75

XLDnaute Barbatruc
Re : Compte couleur automatisé

Re,

Si l'on veut une seule formule pour le tableau B37:H40 utiliser :

Code:
Function NCoul(ref As Range, r As Range, Optional nom$ = "")
Application.Volatile
Dim coul&
If nom <> "" Then Set r = Intersect(r, Range("_" & nom).MergeArea.EntireRow)
coul = ref.Interior.Color
For Each r In r
  If r.Interior.Color = coul Then NCoul = NCoul + 1
Next
End Function
Et nommez comme je l'ai fait les cellules fusionnées de la plage A2:A32.

Edit : pour grouper les noms il vaut mieux mettre le tiret "_" en tête.

Fichier (2).

A+
 

Pièces jointes

  • dossier(2).xlsm
    34.8 KB · Affichages: 27
Dernière édition:

job75

XLDnaute Barbatruc
Re : Compte couleur automatisé

Bonsoir Lleytt, le forum,

La fonction avec 2 arguments supplémentaires, plus besoin de noms définis :

Code:
Function NCoul(ref As Range, r As Range, titre, zonetitre As Range, sens As Byte)
'sens=0 lignes, sens=1 colonnes
Application.Volatile
Dim coul&
With zonetitre(Application.Match(titre, zonetitre, 0)).MergeArea
  Set r = Intersect(r, IIf(sens, .EntireColumn, .EntireRow))
End With
coul = ref.Interior.Color
For Each r In r
  If r.Interior.Color = coul Then NCoul = NCoul + 1
Next
End Function
Fichier (3).

Attention les années en lignes 1 et 43 doivent être de même nature, nombres ou textes...

Bonne fin de soirée.
 

Pièces jointes

  • dossier(3).xlsm
    35.1 KB · Affichages: 29

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 249
dernier inscrit
solo