Compter cellules avec caractere couleur

Bonjour,

Afin de compléter mon calendrier de boulot, j'aurais besoin de compter des cellules contenant un " A" qui représente mes astreintes.

Pour compter les "A" c'est bon mais pas que les rouges, voila la macro que j'utilise:

Sub Valeurs_A()
Dim MaCellule As Object, vRésultat As Long
For Each MaCellule In Range("B14:AF80")
If MaCellule = "A" Then
vRésultat = vRésultat + MaCellule.Count
End If
Next MaCellule
Range("AG3") = vRésultat * 1
End Sub

Une petite modif est elle possible pour résoudre mon problème.

Bonne fin d'après-midi et Merci.

Bonjour,

Sub Valeurs_A()
    Dim MaCellule As Range, vRésultat As Long
    For Each MaCellule In Range("B14:AF80")
        If MaCellule = "A" And MaCellule.Font.Color = vbRed Then _
         vRésultat = vRésultat + 1
    Next MaCellule
    Range("AG3") = vRésultat
End Sub

Cordialement.

NB- Je n'aime cependant pas les Range non qualifiées (quelle feuille ?)

Bonjour Bayard, bonjour le forum,

Essaie comme ça :

    Sub Valeurs_A()
    Dim MaCellule As Object, vRésultat As Long
    For Each MaCellule In Range("B14:AF80")
    If MaCellule = "A"  And MaCellule.Font.ColorIndex = 3 Then
    vRésultat = vRésultat + MaCellule.Count
    End If
    Next MaCellule
    Range("AG3") = vRésultat * 1
    End Sub

[Édition]

Bonjour Môssieur Ferrand ! Nos post se sont croisés...

Bonjour MFerrand,

NB- Je n'aime cependant pas les Range non qualifiées (quelle feuille ?)

2017

Et Merci

Peu importe ! C'est nécessairement la feuille active, mais dans tous les cas le code est plus efficace et plus précis en le mettant.

ActiveSheet.Range... oblige à lancer la macro avec ladite feuille active...

Worksheets("2017").Range... permet de la lancer de n'importe où...

et l'utilisation d'une variable pour le nom de feuille (comme il s'agit d'année, cela peut être intéressant), par exemple : an

Worksheets(CStr(an)).Range... fournit un code lançable de n'importe où pour n'importe quelle feuille...

Par ailleurs, intéresse-toi aux autres modifs que j'ai faites sur ton code :

MaCellule est une cellule, donc à déclarer comme Range, on y gagne en précision du code et lors de l'écriture l'assistant fait les bonnes propositions de propriétés ou méthodes pour Range qu'il ne fera pas pour Object !

MaCellule.Count, c'est forcément 1, perte de temps de le faire calculer...

Et multiplier le résultat qui est déjà un nombre par 1 n'a guère d'utilité...

La mise de la condition sur une ligne est secondaire, mais c'est toujours moins à écrire...

Cordialement.

Salut ThauThème !

Rechercher des sujets similaires à "compter caractere couleur"