Signaler

COmpter les cellules en fonction du format et du contenu [Résolu]

Posez votre question olivivier59 8Messages postés mardi 3 octobre 2017Date d'inscription 5 octobre 2017 Dernière intervention - Dernière réponse le 5 oct. 2017 à 22:43 par olivivier59
Bonsoir
Je voudrais compter les celules rouge ou bleues ou.... J'ai teste plusieurs script mais le résultats n'est pas à ce que je veux. Je suis amateur dans les macros excel.
Mon probléme : si une cellule sur une plage donnée (en ligne) avec un fond rouge ou bleu... et avec un contenu spécifque (T ou R) avec une couleur de fond définie je voudrais faire la somme de ces cellules.
Si la cellule est rouge avec "T" ou "R" quelle compte le nombre de cellule rouge.
Je ne sais pas si cela viens mon exel (2013 pro). La fonction de recacul ne fonctionne pas ni la touche F9
Ci dessous le script pour le couleurs (trouvé sur le net) mais il ne fonctionne pas chez moi. si je je mets aucun remplissage aucun calcul ne se fait.
Merci de votre aide



Function NbCellCouleur(Plage As Range, Couleur As Integer) As Long
Dim c As Range

NbCellCouleur = 0
For Each c In Plage
If c.Interior.ColorIndex = Couleur Then
NbCellCouleur = NbCellCouleur + 1
End If
Next c

End Function
Function CodeCouleur(CelluleCouleur As Range) As Long
'Retourne le code couleur de la CelluleCouleur
Application.Volatile
CodeCouleur = CelluleCouleur.Interior.ColorIndex
End Function
Utile
+0
plus moins
Bonjour,

Bienvenue sur le forum.

La fonction de recacul ne fonctionne pas ni la touche F9
Tu dois avoir un paramétrage bien malade dans ce cas...

Si la cellule est rouge avec "T" ou "R" quelle compte le nombre de cellule rouge.
Il serait peut-être judicieux d'utiliser une autre méthode pour faire un cumul car un tableur est surtout prévu pour cumuler des nombres.

il ne fonctionne pas chez moi
Il faut autoriser les macros pour avoir un résultat car la fonction est opérationnelle si elle est implantée correctement.
Donnez votre avis
Utile
+0
plus moins
Bonjour olivivier59,

Pour ta fonction NbCellCouleur(), si tu veux compter les cellules
qui n'ont pas de couleur de fond (= Aucun remplissage), tu dois
transmettre pour le 2ème paramètre Couleur : -4142 (xlNone).

Cordialement
Donnez votre avis
Utile
+0
plus moins
Merci pour vos réponses rapides je teste et reviens vers vers vous dès les tests effectués
Énorme merci
Donnez votre avis
Utile
+0
plus moins
pour être complet : les macros sont activées. j'ai enregistré le fichier est redemmarrer excel. j'ai l'impression que la macro "fonctionne à l'envers" . si j'efface le contenu de la cellule ma macro fonctionne mais une fois. j'ai essayer de compléter avec un remplissage blanc au lieu de aucun remplissage mais sans résultat. je vais persévérer. merci à vous
paul- 3 oct. 2017 à 22:55
⚠  Le code couleur à transmettre pour du blanc est 2 ; le blanc n'est pas la même
chose que Aucun remplissage ; je précise au cas où : tu le savais peut-être déjà.  ;)
Répondre
olivivier59 8Messages postés mardi 3 octobre 2017Date d'inscription 5 octobre 2017 Dernière intervention - 3 oct. 2017 à 22:57
Merci paul je l'ai testé mais sans résultat. je cherche encore cette semaine et vous tiens au courant. encore une fois merci
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonjour,

Comme tu n'as pas précisé, tu as vu que c'est pour compter des couleurs mises manuellement et non par MFC ?
eric
olivivier59 8Messages postés mardi 3 octobre 2017Date d'inscription 5 octobre 2017 Dernière intervention - 5 oct. 2017 à 20:04
Eriiic oui je sais que le codege des MEFC sont différents. Merci
Répondre
Donnez votre avis
Utile
+0
plus moins
bonsoir à tous

Tout d'abord merci pour les précisions apportées.
J'ai résolu mon problème.
Je vous mets le code ci dessous pour aiser d'autre personne

Code pour trouver le code d'une couleur

Function Couleur(Cellule As Range)
Application.Volatile
Couleur = Cellule.Interior.ColorIndex
End Function

et ci dessous le code utiliser pour compter les cellule de couleurs différentes

Function NbCoul1(Zne As Range, Couleur As String)
Application.Volatile True
For Each cell In Zne
If cell.Interior.ColorIndex = 37 Then NbCoul1 = NbCoul1 + 1
If cell.Interior.ColorIndex = 6 Then NbCoul1 = NbCoul1 + 2
If cell.Interior.ColorIndex = 3 Then NbCoul1 = NbCoul1 + 3
If cell.Interior.ColorIndex = 14 Then NbCoul1 = NbCoul1 + 4
If cell.Interior.ColorIndex = 47 Then NbCoul1 = NbCoul1 + 5
Next
NbCoul1 = NbCoul1
End Function


il me fallait un facteur multiplicatif donc la raison des +1, +2 +3.......

Par contre je ne sais pas ou mettre résolu.
gbinforme 14204Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 10 octobre 2017 Dernière intervention - 5 oct. 2017 à 21:07
Bonsoir,

J'ai résolu mon problème
C'est très bien pour toi et vu que la solution n'a rien à voir avec l'exposé de la demande, ("avec un fond rouge ou bleu... et avec un contenu spécifique (T ou R) ") il était hautement improbable que l'on arrive à ton résultat ! ;-)
Répondre
Donnez votre avis
Utile
+0
plus moins
Bonsoir gbinforme effectivement j'étais partis sur une idée. Mais la persévérence à payée. J'ai pris un stylo et ecris ce que je voulais.
Encore merci pour tout
Donnez votre avis
Utile
+0
plus moins
Le contenu "T ouR" venais du fait que je prenais comme référence une cellule copiée avec une liste déroulante
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !