Compter des cases dont la police est rouge

Résolu
Ju -  
katinounou Messages postés 5 Statut Membre -
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.
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
    1. katinounou Messages postés 5 Statut Membre
       
      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
    2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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
    3. katinounou Messages postés 5 Statut Membre
       
      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
    4. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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
    5. katinounou Messages postés 5 Statut Membre
       
      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
  2. Ju
     
    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
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  4. Ju
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  7. Ju
     
    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
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  9. Ju
     
    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
    1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
       
      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
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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