Compter des cases dont la police est rouge
Résolu
Ju
-
katinounou Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
katinounou Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Compter des cases dont la police est rouge
- Changer police facebook - Guide
- Police aptos - Accueil - Bureautique
- Police instagram - Guide
- Police d'écriture journal ancien ✓ - Forum Graphisme
- Telecommande free clignote rouge - Forum TV & Vidéo
8 réponses
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+
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+
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 ??
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+
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+
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
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
y a t'il correspondance entre ligne et cellule j'explique une cellule rouge par ligne
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 :)
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.
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.
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
If compterRouge = 1 Then c = "cellule" Else c = "cellules"
Merci
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.
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.
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
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
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.
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
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