Discussion:
Dénombrer les cellules colorées d'une plage
(trop ancien pour répondre)
Versatile
2010-04-07 12:35:32 UTC
Permalink
Bonjour,
Sauriez-vous s'il est possible de dénombrer les cellules colorées dans
leur arrière plan d'une plage en utilisant seulement les formules
d'Excel ?
Je sais que cela est possible avec macros, mais avec les seules
formules d'Excel 2000 à 2002 ?
Merci beaucoup !
Patrick BASTARD
2010-04-07 12:54:36 UTC
Permalink
Bonjour, "Versatile" <***@gmail.com>

Si la coloration répond à une logique, ce serait bien le diable qu'on ne
trouve pas une solution.
Encore faut-il que nous connaissions cette logique...
Un fichier joint, ou un p'tit exemple ?
--
Bien ***@lement,

Patrick ***@RD


Bonjour,
Sauriez-vous s'il est possible de dénombrer les cellules colorées dans
leur arrière plan d'une plage en utilisant seulement les formules
d'Excel ?
Je sais que cela est possible avec macros, mais avec les seules
formules d'Excel 2000 à 2002 ?
Merci beaucoup !
Versatile
2010-04-07 13:05:31 UTC
Permalink
Post by Patrick BASTARD
Si la coloration répond à une logique, ce serait bien le diable qu'on ne
trouve pas une solution.
Encore faut-il que nous connaissions cette logique...
Un fichier joint, ou un p'tit exemple ?
Eh bien voilà. J'ai une collègue qui a un fichier où en colonne A se
trouvent les jours du mois X, et en colonne B de tierces personnes
insèrent une couleur de fond pour le cas où une activité d'un certain
rype est prévue pour ce jour là. Exemple :
Colonne A Colonne B
Ligne 1 1er janv.
Ligne 2 2 janv. (cellule à colorer)
....
Ligne 20 Somme des cellules colorées =
Je souhaiterais additionner en bas de la colonne B toutes les cellules
qui comportent une couleur de fond au dessus-d'elle. Une espèce de
NB.cellule_colorée....
Patrick BASTARD
2010-04-07 13:15:53 UTC
Permalink
Re, "Versatile"

La solution consiste à renseigner le "certain type" d'activité en colonne B
(par exemple à l'aide d'une liste de validation), et d'utiliser la mise en
forme conditionnelle pour colorier les cellules concernées.
Une simple formule nb.si permettra de dénombrer le nb de cellules
remplissant la condition choisie..
--
Post by Patrick BASTARD
Si la coloration répond à une logique, ce serait bien le diable qu'on ne
trouve pas une solution.
Encore faut-il que nous connaissions cette logique...
Un fichier joint, ou un p'tit exemple ?
Eh bien voilà. J'ai une collègue qui a un fichier où en colonne A se
trouvent les jours du mois X, et en colonne B de tierces personnes
insèrent une couleur de fond pour le cas où une activité d'un certain
rype est prévue pour ce jour là. Exemple :
Colonne A Colonne B
Ligne 1 1er janv.
Ligne 2 2 janv. (cellule à colorer)
....
Ligne 20 Somme des cellules colorées =
Je souhaiterais additionner en bas de la colonne B toutes les cellules
qui comportent une couleur de fond au dessus-d'elle. Une espèce de
NB.cellule_colorée....
michdenis
2010-04-07 13:29:26 UTC
Permalink
Bonjour,

Copie cette fonction personnalisée dans un module standard
de ton classeur.
Dans la cellule de ta feuille de calcul où tu veux afficher le résultat,
tu saisis la formule suivante : = SumCouleur(A1:A10;A1)

A ) tout le contenu de la plage A1:A10 doit être numérique dans
un format de cellule "Standard" ou numérique. A1:A10 est la
plage à additionner.
B ) le paramètre A1 représente une cellule ayant la couleur de fond
dont tu veux additionner dans la plage A1:A10

ATTENTION : Si tu modifies manuellement la couleur de fond d'une
cellule, tu dois utiliser la touche F9 pour mettre ta formule à jour.

'----------------------------------
Function SumCouleur(SumPlage As Range, CouleurEtalon As Range)
Application.Volatile
Dim C As Range
For Each C In SumPlage
If C.Interior.Color = CouleurEtalon.Interior.Color Then
SumCouleur = SumCouleur + C.Value
End If
Next
End Function
'----------------------------------




"Versatile" <***@gmail.com> a écrit dans le message de groupe de discussion :
6f2fd788-5a25-4265-bd64-***@h27g2000yqm.googlegroups.com...
Bonjour,
Sauriez-vous s'il est possible de dénombrer les cellules colorées dans
leur arrière plan d'une plage en utilisant seulement les formules
d'Excel ?
Je sais que cela est possible avec macros, mais avec les seules
formules d'Excel 2000 à 2002 ?
Merci beaucoup !
Versatile
2010-04-07 13:50:18 UTC
Permalink
Post by Versatile
Bonjour,
Copie cette fonction personnalis e dans un module standard
de ton classeur.
Dans la cellule de ta feuille de calcul o tu veux afficher le r sultat,
tu saisis la formule suivante : = SumCouleur(A1:A10;A1)
A ) tout le contenu de la plage A1:A10 doit tre num rique dans
un format de cellule "Standard" ou num rique. A1:A10 est la
plage additionner.
B ) le param tre A1 repr sente une cellule ayant la couleur de fond
dont tu veux additionner dans la plage A1:A10
ATTENTION : Si tu modifies manuellement la couleur de fond d'une
cellule, tu dois utiliser la touche F9 pour mettre ta formule jour.
'----------------------------------
Function SumCouleur(SumPlage As Range, CouleurEtalon As Range)
Application.Volatile
Dim C As Range
For Each C In SumPlage
    If C.Interior.Color = CouleurEtalon.Interior.Color Then
        SumCouleur = SumCouleur + C.Value
    End If
Next
End Function
'----------------------------------
Merci bien. J'aurais espéré que l'on puisse éviter les macros et se
satisfaire des formules. Bon bien tant pis.
Et merci pour la macro.
Patrick BASTARD
2010-04-07 14:05:25 UTC
Permalink
Re,Versatile"
J'aurais espéré que l'on puisse éviter les macros et se satisfaire des
formules.
Le fait qu'on puisse utiliser les macros n'implique pas forcément qu'on ne
puisse pas s'en passer...
--
Bien ***@lement,

Patrick ***@RD
patrick.bastardchezdbmail.com
michdenis
2010-04-07 14:31:11 UTC
Permalink
Tu peux le faire sans VBA.

A ) D'abord, tu crées un nom (insertion / nom / définir)
Supposons "Denis"
Et tu lui affectes fait référence à : = Lire.Cellule(63;$A1)

B ) Supposons que tu veuilles additionner la plage A1:A10
Dans la colonne B1:B10, tu copies : = denis
la valeur retournée par la formule est la propriété "ColorIndex"
de la couleur de fond de la cellule

C ) Dans la cellule où tu veux dénombrer le nombre de cellules d'une
couleur particulière, tu inscris : = Nb.Si(A1:A10;6)
le chiffre 6 étant l'index de la couleur

D ) si tu préfères avoir la somme des cellules pour une couleur particulière :
=SOMME.SI(B1:B10;6;A1:A10)
Et tu peux masquer la colonne B:B
Post by Versatile
Bonjour,
Copie cette fonction personnalis e dans un module standard
de ton classeur.
Dans la cellule de ta feuille de calcul o tu veux afficher le r sultat,
tu saisis la formule suivante : = SumCouleur(A1:A10;A1)
A ) tout le contenu de la plage A1:A10 doit tre num rique dans
un format de cellule "Standard" ou num rique. A1:A10 est la
plage additionner.
B ) le param tre A1 repr sente une cellule ayant la couleur de fond
dont tu veux additionner dans la plage A1:A10
ATTENTION : Si tu modifies manuellement la couleur de fond d'une
cellule, tu dois utiliser la touche F9 pour mettre ta formule jour.
'----------------------------------
Function SumCouleur(SumPlage As Range, CouleurEtalon As Range)
Application.Volatile
Dim C As Range
For Each C In SumPlage
If C.Interior.Color = CouleurEtalon.Interior.Color Then
SumCouleur = SumCouleur + C.Value
End If
Next
End Function
'----------------------------------
Merci bien. J'aurais espéré que l'on puisse éviter les macros et se
satisfaire des formules. Bon bien tant pis.
Et merci pour la macro.
Versatile
2010-04-07 14:52:49 UTC
Permalink
Post by michdenis
Tu peux le faire sans VBA.
A ) D'abord, tu crées un nom (insertion / nom / définir)
    Supposons "Denis"
    Et tu lui affectes fait référence à :  = Lire.Cellule(63;$A1)
B ) Supposons que tu veuilles additionner la plage A1:A10
    Dans la colonne B1:B10, tu copies :  = denis
    la valeur retournée par la formule est la propriété "ColorIndex"
    de la couleur de fond de la cellule
C ) Dans la cellule où tu veux dénombrer le nombre de cellules d'une
    couleur particulière, tu inscris :  = Nb.Si(A1:A10;6)
    le chiffre 6 étant l'index de la couleur
        =SOMME.SI(B1:B10;6;A1:A10)
    Et tu peux masquer la colonne B:B
C'est assez génial cette astuce ! Je ne connaissais absolument pas
cette fonction Lire.cellule !....
Merci !
michdenis
2010-04-07 15:20:09 UTC
Permalink
| C'est assez génial cette astuce ! Je ne connaissais
| absolument pas cette fonction Lire.cellule !....

C'est une fonction appartient aux macro xl4 que l'on
peut encore utiliser avec Excel 2007 dans un "nom"
seulement pour l'interface de calcul ou en VBA.
Versatile
2010-04-07 15:37:39 UTC
Permalink
Post by michdenis
C'est une fonction appartient aux macro xl4 que l'on
peut encore utiliser avec Excel 2007 dans un "nom"
seulement pour l'interface de calcul ou en VBA.
Et quel est son nom en vba ?
Syntaxe du genre suivant ?
x = xlm.read.cell(63,"A1")
michdenis
2010-04-07 16:41:47 UTC
Permalink
Pour utiliser la fonction =Lire.Cellule(63,A17) en vba
on devrait utiliser quelque chose comme :

Range("A17").Select
X = Application.ExecuteExcel4Macro("Get.Cell(63)")

Il y n'y a pas d'avantage à utiliser une telle fonction, car elle
retourne l'index couleur de la cellule active... il faut donc la
sélectionner d'abord. Il vaut mieux employer :
x= Range("A17").Interior.ColorIndex
La saisie du code est plus simple et beaucoup plus rapide à l'exécution.

Par contre pour déterminer le nombre de pages à imprimer dans la
feuille active d'un document Excel, ceci est très rapide :
NbPages = Application.ExecuteExcel4Macro("GET.DOCUMENT(50)")
Post by michdenis
C'est une fonction appartient aux macro xl4 que l'on
peut encore utiliser avec Excel 2007 dans un "nom"
seulement pour l'interface de calcul ou en VBA.
Et quel est son nom en vba ?
Syntaxe du genre suivant ?
x = xlm.read.cell(63,"A1")

Loading...