Compter des cases dont la police est rouge

Résolu/Fermé
Ju - 30 juin 2008 à 09:43
katinounou Messages postés 5 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 6 avril 2012 - 6 avril 2012 à 18:34
Bonjour,

J'ai un tableau excel avec des données entrées en rouge ou en noir selon leur état d'avancement. Je souhaite compter le nombre de ligne de données qui sont en rouge. Je voudrais utiliser la commande NB.SI(ma plage; test) mais impossible de me souvenir la commande excel pour la couleur de police. Je sais que sous VBA c'est avec Font.ColorIndex = ... mais là ça ne marche pas avec ça.

Merci pour votre aide.

8 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 juin 2008 à 09:53
Salut,

testes cette macro

Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.Range("A18:A24") 'plage de cellule à compter
If cell.Font.Color = vbRed Then 'Red est la couleur rouge
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge 'Affiche boite compteur
Worksheets("feuil1").Range("G25").Value = compterRouge 'Affiche compteur dans ma cellule ici G25
End Sub



A+
0
katinounou Messages postés 5 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 6 avril 2012
4 avril 2012 à 22:07
bonjour Mike-31

Quelle serait la macro si la couleur de police est bleue?
J'ai remplacé dans la macro ci-dessus "Rouge" par "Bleu" et "Red" par "Blue", mais ça ne marche pas.
Il faut préciser que c'est ma première macro :)

Merci par avance pour ta réponse
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
4 avril 2012 à 22:36
salut,

alors essaye d'écrire avec les index couleurs primaires ce sera plus facile. l'index du bleu est 5

Sub inventaireRouge()
sommeRouge = 0
compterRouge = 0
For Each cell In ActiveSheet.Range("A18:A24") 'plage de cellule à compter
If cell.Font.ColorIndex = 5 Then '5 est l'index d'une couleur bleue
On Error Resume Next
sommeRouge = sommeRouge + cell.Value
On Error GoTo 0
compterRouge = compterRouge + 1
End If
Next
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
MsgBox compterRouge & " " & c & " -- Total = " & sommeRouge 'Affiche boite compteur
Worksheets("feuil1").Range("G25").Value = compterRouge 'Affiche compteur dans ma cellule ici G25
End Sub
0
katinounou Messages postés 5 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 6 avril 2012
5 avril 2012 à 21:12
Bjr Mike-31,

Tout d'abord merci mille fois d'avoir répondu aussi rapidement à ma requête.
C'est vraiment très sympa de ta part.
En essai, dans la feuille1 d'un classeur acceptant les macros, j'ai renseigné une suite de nombres de B2 à B9.
B3, B5, B8 sont de police bleue
B2, B4, B6, B7, B9 sont de police noire

Quand j'exécute ma macro, la fenêtre qui apparait affiche:
0 cellules-- total = 0

Voila comment j'ai transposé ta formule de rouge en bleu:

Sub inventaire5()
somme5 = 0
compter5 = 0
For Each cell In ActiveSheet.Range("B2:B9") 'plage de cellule à compter
If cell.Font.ColorIndex = 5 Then '5 est l'index d'une couleur bleue
On Error Resume Next
somme5 = somme5 + cell.Value
On Error GoTo 0
compter5 = compter5 + 1
End If
Next
If compter5 = 1 Then c = "cellule" Else c = "cellules"
MsgBox compter5 & " " & c & " -- Total = " & somme5 'Affiche boite compteur
Worksheets("feuil1").Range("C10").Value = compter5 'Affiche compteur dans ma cellule ici C10
End Sub

Je pense que vu le résultat j'ai du faire une erreur quelque part. Peux tu voir ce qui ne va pas?
Encore merci d'aider un débutant.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 5/04/2012 à 21:34
Re,

Explique exactement ce que tu veux faire, le code que tu as glané compte le nombre de cellules formatées (police de couleur déterminée) et faisait la somme des valeurs formatées de couleur déterminée.
Que veux-tu compter ou additionner !
Il faut faire attention au code couleur, depuis Excel 2007 nous en avons une multitude

si tu bidouilles le code il faut être précis, une variante

Sub inventaire5()
som = 0
compt = 0
For Each cell In ActiveSheet.Range("B2:B9") 'plage de cellule à compter
If cell.Font.ColorIndex = 5 Then '5 est l'index d'une couleur bleue
On Error Resume Next
som = som + cell.Value
On Error GoTo 0
compt = compt + 1
End If
Next
If compt = 1 Then c = "cellule" Else c = "cellules"
MsgBox compt & " " & c & " -- Total = " & som 'Affiche boite compteur
Worksheets("feuil1").Range("C10").Value = compt 'Affiche compteur dans ma cellule ici C10
Worksheets("feuil1").Range("C12").Value = som 'Affiche la somme dans ma cellule ici C12
End Sub
0
katinounou Messages postés 5 Date d'inscription mercredi 4 avril 2012 Statut Membre Dernière intervention 6 avril 2012
6 avril 2012 à 03:59
bjr Mike-31

J'ai utilisé votre variante ci dessus mais je n'arrive toujours pas à solutionner le problème.
Est-il possible de vous faire parvenir le fichier afin que vous puissiez regarder quelle erreur je commets?
Merci par avance pour votre réponse
0
Merci c'est exactement ce que je veux. La seule chose est que j'aimerais que cette recherche soit lancée sur plusieurs pages de mon classeur et que mon résultat soit global à ces feuilles. On peut faire un truc comme ça ??
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 juin 2008 à 15:02
Oui bien sur avec excel presque tout est possible

que veux tu exactement avoir le nombre de cellule dont la police est en rouge sur chaque feuille, ou la somme totale des cellules dont la police est en rouge sur l'ensemble des feuilles ou la somme par feuille et le total global qui s'afficherai sur une feuille ou une boite compteur

A+
0
Ce qu'il me faut exactement c'est le nombre total de lignes dont la police est rouge sur l'ensemble des feuilles de mon classeur (car les lignes rouges sont les commandes dont nous n'avons pas encore le retour). J'ai une feuille de synthèse à la fin et je voudrais que ce chiffre apparaisse sur cette page pour savoir combien il me reste de "litiges"
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 juin 2008 à 16:36
Tu me parle de ligne alors que nous étions sur des cellules !!!

y a t'il correspondance entre ligne et cellule j'explique une cellule rouge par ligne
0
Désolé je me suis mal exprimé je parle bien de ligne. C'est juste qu'en pensant au programme je pense à lui lancer la recherche sur une colonne d'où mon terme de cellule... Lol. Donc je veux bien savoir le nombre de lignes qui sont rouges sur tout l'ensemble et non pas le nombre de cellules :)
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 juin 2008 à 17:59
Ci joint un exemple, pour le comptage des lignes en rouge, le commencement et la fin de chaque ligne étant aléatoire, il convient de prendre une colonne de référence et de compter les cellules dont la police est rouge.

Dans le code macro tu trouveras après ' en vert quelques explications

https://www.cjoint.com/?gEr43UqJ4n

A+

__________________________________________________________________

Besoin d’aide. Auprès du forum, des bénévoles prennent le temps de décrypter vos explications parfois confuses, et proposent leur connaissance.
Solution trouvée, ayez la courtoisie de porter votre statut résolu. Afin que votre problème soit classé, et serve de référence pour d’autres cas similaires.
0
Merci beaucoup. J'ai tout de même une petite question car j'aime bien comprendre les choses :) A quoi sert la ligne de commande suivante :
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
Merci
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
1 juil. 2008 à 14:32
Salut,

En effet j'aurai pu écrire le code comme ci dessous, et tu peux le modifier si tu veux

If compterRouge = 1 Then c = "ligne"

Par contre dans la ligne ci dessous, je te conseille de réduire le champ de balayage pour gagner en rapidté

For Each cell In ActiveSheet.Range("B:B")

et l'écrire comme cela

For Each cell In ActiveSheet.Range("B1:B100") de ta première cellule à la dernière

A+
__________________________________________________________________

Besoin d’aide. Auprès du forum, des bénévoles prennent le temps de décrypter vos explications parfois confuses, et proposent leur connaissance.
Solution trouvée, ayez la courtoisie de porter votre statut résolu. Afin que votre problème soit classé, et serve de référence pour d’autres cas similaires.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 5/04/2012 à 23:17
Bonjour tout le monde,

car les lignes rouges sont les commandes dont nous n'avons pas encore le retour
Juste une question : le rouge est mis manuellement ou par une mise en forme conditionnelle ?
Si c'est une MFC il te faut compter les lignes en utilisant les même conditions que la MFC.

eric
0