XL 2019 Code VBA - Addition de Cellules en couleur avec Texte

  • Initiateur de la discussion Initiateur de la discussion Caninge
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Caninge

XLDnaute Accro
Bonjour à tous,

j'ai récupéré une macro pour additionner des cellules colorisés.
sauf qu'elle ne comptabilise pas les cellules avec du texte.
Il y a peut-être une modification à apporter !
Je vous remercie de bien vouloir me donner un coup de main.

Function CountCcolor(range_data As Range, criteria As Range) As Long
Dim datax As Range
Dim xcolor As Long
xcolor = criteria.Interior.ColorIndex
For Each datax In range_data
If datax.Interior.ColorIndex = xcolor Then
CountCcolor = CountCcolor + 1
End If
Next datax
End Function
 
Re,
Effectivement votre macro ne peut pas fonctionner si les cellules sont colorisées par MFC. Mais ce n'était pas précisé dans votre post.
Il y a un post à ce sujet sur XLD, mais ça me semble complexe :
 
Bonjour à tous,

j'ai fait une copie de mon tableau.
De cette façon on peut voir les mises en forme conditionnelle qui sont probablement
à l'origine du problème: Les calculs sont faux.
Dans la colonne C le résultat devrait afficher 5 alors qu'il ne prend que les deux cellules sans texte.
Dans la colonne D le résultat devrait afficher 3
Merci d'élucider ce problème.

A plus.
 

Pièces jointes

Si vous n'avez qu'une seule MFC immuable, vous pouvez intégrer la formule MFC dans votre calcul
VB:
=CountCcolor(C4:C21;$A$1)+NB.SI($C$4:$G$4;C15)
Le premier membre compte les couleurs de cellules, le second membre compte les cellules comme les MFC.
 
Bonsoir Caninge, sylvanu,

La propriété DisplayFormat permet de compter aussi les couleurs appliquées par MFC.

Mais elle ne fonctionne pas dans une fonction VBA, il faut une procédure Sub :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim coul&, c As Range, n&
coul = [A1].Interior.Color
For Each c In UsedRange
    If c.DisplayFormat.Interior.Color = coul Then n = n + 1
Next
Application.EnableEvents = False 'désactive les évènements
[C2] = n - 1
Application.EnableEvents = True 'réactive les évènements
End Sub
La cellule C2 est mise à jour quand une cellule quelconque est modifiée.

A+
 

Pièces jointes

Bonsoir Caninge, Job,
Le problème est que DisplayFormat n'est pas valide avec mon VBA 6.3, c'est pour ça que j'ai fait l'impasse, et que je ne propose jamais.
Mais Caninge avec son 2019 ne devrait pas avoir de problème.🙂
 
Bonsoir Job75, sylvanu,
je ne pourrais vous dire si DisplayFormat n'est pas valide lol.
La proposition de JOB75 est bien.
Elle fait l'addition de toutes les cellules mais j'aimerais bien avoir l'addition de chaque colonne.
C'est pour un arbre généalogique, environ 2 à 300 colonnes prévues.
Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
223
Réponses
19
Affichages
898
Réponses
2
Affichages
511
Retour