formules conditionnelles

L

ludo

Guest
Bonjour,
dans une ligne de données composées uniquement de la valeur "1"
dans certaines cellules, le chiffre "1" est en couleur automatique, dans d'autres en couleur rouge.
comment faire pour calculer la somme des chiffres "1" notés en rouge !
je connais un peu les formules conditionnelles =NB.SI(...)
mais impossible de trouver la formule type avec la couleur comme condition...
si un expert d'excel peut me venir en aide !
 
D

didier

Guest
Si tu as mis manuellement la couleur sur les cellules, et que ta liste ne comporte pas de trou utilise cette fonction dans VBA

Sub babar()

ActiveCell.Select

Dim j As Integer
Do While (ActiveCell.Value <> "")
If (ActiveCell.Interior.ColorIndex <> xlNone) Then
j = j + 1

End If
ActiveCell.Offset(1, 0).Select
Loop
Selection.Value = j
End Sub

Mode d'emploi

pour que cela marche colle cette fonction dans VBA (en haut outils>Macro>visual basic éditor)
puis selection la premiere cellule de ta liste horizontale.(excute le macro en haut outils>Macro>excecuter)
et il va te compter toutes les cellules dont le fond n'est pas "blanc"
et te coller le résultat en dessous.

Bon j'espère que cela correspond a ta demande.
Salut.a+
 
A

andré

Guest
J'emploierai dans ton cas une méthode "détournée"
Vois l'exemple ci-joint, avec plusieurs couleurs.
Tu peux faire la même chose avec le fond, les bordures, la case, ...
Tu peux même additionner les contenus de tes cellules suivant leur mise en forme en employant la fonction =somme.si
La ligne 2 peut être cachée après emploi.

André
 

Pièces jointes

  • couleur.xls
    14 KB · Affichages: 65
  • couleur.xls
    14 KB · Affichages: 69
  • couleur.xls
    14 KB · Affichages: 73
T

Ti

Guest
Voici 2 fonctions utilisables directement en tant que fonctions matricielles Excel (méthodologie appliquée d'après un article de Laurent Longre).
La première ESTFONDCOLORE teste si le fond des cellules est coloré et renvoie VRAI dans ce cas.
La seconde ESTTEXTECOLORE fait la même chose avec le texte : elle renvoie VRAI si le texte est différent de la couleur automatique

Dans ton cas, voici la formule que tu peux utiliser pour compter le nombre de cellules dans la ligne E1:E10, contenant le chiffre 1 écrit dans une couleur différente de la couleur automatique (formule matricielle à valider par Ctrl-Maj-Entree) :

=SOMME(SI(esttextecolore(E1:E10);1;0))


Function ESTFONDCOLORE(Plage As Range)
Dim Tableau
Dim Ligne As Integer, Col As Integer
If Plage.Cells.Count = 1 Then
Tableau = Plage.Interior.ColorIndex <> xlNone
Else
Tableau = Plage
For Ligne = 1 To UBound(Tableau, 1)
For Col = 1 To UBound(Tableau, 2)
Tableau(Ligne, Col) = _
Plage(Ligne, Col).Interior.ColorIndex <> xlNone
Next Col
Next Ligne
End If
ESTFONDCOLORE = Tableau
End Function

Function ESTTEXTECOLORE(Plage As Range)
Dim Tableau
Dim Ligne As Integer, Col As Integer
If Plage.Cells.Count = 1 Then
Tableau = Plage.Font.ColorIndex <> xlColorIndexAutomatic
Else
Tableau = Plage
For Ligne = 1 To UBound(Tableau, 1)
For Col = 1 To UBound(Tableau, 2)
Tableau(Ligne, Col) = _
Plage(Ligne, Col).Font.ColorIndex <> xlColorIndexAutomatic
Next Col
Next Ligne
End If
ESTTEXTECOLORE = Tableau
End Function
 

Statistiques des forums

Discussions
312 980
Messages
2 094 128
Membres
105 941
dernier inscrit
antho_qh