Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Compter les cellules en gras...

1,466 views
Skip to first unread message

butch

unread,
Apr 22, 2006, 2:39:01 PM4/22/06
to
Bonjour,

Existe-t-il une formule permettant de compter, dans une plage de cellules
(ex: A1:A50), combien de cellules contiennent des données (chiffres ou texte)
possédant l'attribut gras ?
--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.

Papy Bernard

unread,
Apr 22, 2006, 2:43:50 PM4/22/06
to
Slt,
De "butch"

> Bonjour,
>
> Existe-t-il une formule permettant de compter, dans une plage de cellules
> (ex: A1:A50), combien de cellules contiennent des données (chiffres ou
> texte)
> possédant l'attribut gras ?
> --
> Merci pour votre aide :-)

Et pourquoi certaines cellules sont en gras ????

--
A+
Papy Bernard (RTCien malgré lui)


Pounet95

unread,
Apr 22, 2006, 3:06:58 PM4/22/06
to
Bonsoir,

Ceci devrait faire l'affaire ( à adpater, améliorer, etc )

Dans un module standard :

Function BoldCell(Range, Optional Gras)
Dim Cell As Object
For Each Cell In Range
If Cell.Font.Bold = True And Not IsEmpty(Cell) Then _
BoldCell = BoldCell + Cell
Next Cell
End Function


Dans la cellule où sera récupéré le nombre :
=BoldCell(A1:A20)

Pounet95
On trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"butch" <nospam...@hotmail.com> a écrit dans le message de news:
8FD602EE-5593-46A3...@microsoft.com...

Thierryp

unread,
Apr 22, 2006, 3:22:02 PM4/22/06
to
Bonjour,

En voilà une réponse qui fait avancer le schmilblik !!! ça vaut vraiment
le coup d'avoir une connection Internet....

Par formule, je dirais non...En VBA, peut-être un truc du genre :

Sub test()
For Each c In Range("A1:A10")
If c.Font.Bold = True Then az = az + 1
Next
MsgBox az
End Sub

--
@+ thierryp

------------------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin gourmet. (Courteline)
------------------------

Papy Bernard a écrit :

Papy Bernard

unread,
Apr 22, 2006, 5:03:29 PM4/22/06
to
Slt,
De "Thierryp"

> En voilà une réponse qui fait avancer le schmilblik !!! ça vaut vraiment
> le coup d'avoir une connection Internet....

Mon message n'est pas une réponse mais une question !!!!!!

butch

unread,
Apr 23, 2006, 9:01:01 AM4/23/06
to
Bonjour "Pounet95",

Tout d'abord merci pour ton intervention.

Toutefois, lorsque j'essaie d'utiliser le code que tu as proposé, j'obtiens :
1) Dans la cellule où =BoldCell(A1:A20) est inscrit le fameux message
#Valeur.
2) À l'ouverture du débogueur VBA, un message m'indique : Erreur de
compilation. Next sans For.

Bon... je ne suis vraiment pas à l'aise en VBA. Je comprend bien le sens
des lignes de code que tu as proposées mais voilà... je ne sais pas comment
régler ce problème.
Merci à l'avance si tu peux m'éclairer davantage..!


--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"Pounet95" a écrit :

butch

unread,
Apr 23, 2006, 9:13:01 AM4/23/06
to
Bonjour Papy Bernard,

En réponse à ta question....

Les cellules sont mises en gras par une "Mise en forme conditionnelle" afin
de les faire ressortir, visuellement, par rapport aux autres cellules dans la
même plage.

Mon objectif, par ma question, est de faire inscrire, dans une cellule
située sous la plage en question, le nombre de cellules en gras.
Voilà..!


--
Merci pour votre aide :-)

Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"Papy Bernard" a écrit :

Modeste

unread,
Apr 23, 2006, 9:56:15 AM4/23/06
to
Bonsour® butch avec ferveur ;o))) vous nous disiez :

> 2) À l'ouverture du débogueur VBA, un message m'indique : Erreur de
> compilation. Next sans For.

ceci n'est qu'un seule intruction sur une seule ligne :
If Cell.Font.Bold = True And Not IsEmpty(Cell) Then BoldCell = BoldCell
+ Cell

en recopiant IE à tendance à occulter le caractère de continuité "_"

> > Dans un module standard :
> >
> > Function BoldCell(Range, Optional Gras)
> > Dim Cell As Object
> > For Each Cell In Range
> > If Cell.Font.Bold = True And Not IsEmpty(Cell) Then _
> > BoldCell = BoldCell + Cell
> > Next Cell
> > End Function

--
;o)))
@+

Les news à la source !!!
news://news.microsoft.com/microsoft.public.fr.excel
et répondez OUI

n'oubliez pas les FAQ :http://www.excelabo.net
http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr


Pounet95

unread,
Apr 23, 2006, 10:05:33 AM4/23/06
to
Bonjour à tous,
Effectivement et je ne sais pas à quel nombre de caractères il faut revenir
à la ligne !
Si encore il y avait un aperçu avant envoi ?

Sinon, avec la correction préconisée par Modeste, ça fonctionne ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/


Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Modeste" <nom...@nomail.net> a écrit dans le message de news:
uFOdr2tZ...@TK2MSFTNGP04.phx.gbl...

JB

unread,
Apr 23, 2006, 10:11:07 AM4/23/06
to
Bonjour,

http://cjoint.com/?exqjPuKrvW

Compte les cellules en gras:

Dans le tableur: =comptegras(A2:B7)

Dans un module:

Function CompteGras(champ As Range)
Application.Volatile
Dim c, temp
temp = 0
For Each c In champ
If c.Font.Bold Then temp = temp + 1
Next c
CompteGras = temp
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate 'maj
End Sub

butch

unread,
Apr 23, 2006, 10:19:01 AM4/23/06
to
Bonjour (à vous deux...)

OK... plus de message d'erreur avec la solution de "Modeste".
Toutefois, le nombre retourné est incorrect. Après les tests dans les
cellules A1 à A30 dans lesquelles il n'y a que 3 cellules en gras, le
résultat affiché est : 78,66666667 !

Omission (involontaire...) de ma part dans le message original : Les
cellules impliquées possèdent une "Mise en forme conditionnelle" faisant
automatiquement affciher des chiffres en gras en les comparant à un chiffre
"source". Serait-ce là la cause de ce résultat erroné ?

Encore merci !


--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"Modeste" a écrit :

AV

unread,
Apr 23, 2006, 11:47:42 AM4/23/06
to
| Les cellules sont mises en gras par une "Mise en forme conditionnelle" afin
| de les faire ressortir, visuellement, par rapport aux autres cellules dans la
| même plage.

Ben voilà !
Dis nous la condition qui sert à dans la MEFC, un petit coup vraisemblablement
de SOMMEPROD et tu auras répondu à ta question !

AV


butch

unread,
Apr 23, 2006, 12:22:02 PM4/23/06
to
Bonjour JB,

Excellent ! La procédure que tu as inscrite fonctionne à merveille.
Gros Merci.


--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"JB" a écrit :

butch

unread,
Apr 23, 2006, 12:24:01 PM4/23/06
to
Bonjour AV,

Merci pour ton intervention... la solution a été trouvée. S.V.P. voir ma
réponse au message de JB.


--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"AV" a écrit :

AV

unread,
Apr 23, 2006, 1:11:28 PM4/23/06
to
| Merci pour ton intervention... la solution a été trouvée.

D'une façon générale mais surtout quand la mise en forme dépend d'une MEFC,
c'est vraiment une totale hérésie que de récourir à une fonction perso qui
nécessite, pour une mise à jour (très hypothétique) des résultats, une proc
évènementielle qui ne sera par forcément enclenchée après un changement de
format et donc risque d'affichage de résultats erronés !

C'est toi qui vois....surprises à venir à peu près garanties
AV


Ange Ounis

unread,
Apr 23, 2006, 2:02:31 PM4/23/06
to
Sans compter la lenteur qui risque de devenir rapidement handicapante du fait du
recalcul systématique imposé dans Worksheet_SelectionChange...

----------
Ange Ounis
----------

AV a écrit :

butch

unread,
Apr 23, 2006, 5:18:01 PM4/23/06
to
Re-bonjour,

Bon... j'ai bien lu vos remarques. Alors... compte tenu des explications que
j'ai données et afin d'éviter ce que toi et Ange Ounis avez mentionné, quelle
formule dois-je utiliser (puisqu'une "proc" ne semble pas OK...) afin
d'atteindre mon objectif ?

--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"AV" a écrit :

> | Merci pour ton intervention... la solution a été trouvée.

JB

unread,
Apr 24, 2006, 12:01:54 AM4/24/06
to
Dans le post d'origine, il n'était pas mentionné que la mise en forme
étatit le résultat d'une MFC.

-Si la MFC est >100, utiliser =Nbval(champ)
-Si la MFC est compris entre 100 et 200, utiliser
=SommeProd((champ>=100)*(champ<=200))

http://cjoint.com/?eygbt7Jiq2

JB

AV

unread,
Apr 24, 2006, 2:21:09 AM4/24/06
to
| Sans compter la lenteur qui risque de devenir rapidement handicapante du fait
du
| recalcul systématique imposé dans Worksheet_SelectionChange...

Je ne peux que souscrire...;-)

AV


AV

unread,
Apr 24, 2006, 2:24:00 AM4/24/06
to
|...quelle formule dois-je utiliser (puisqu'une "proc" ne semble pas OK...) afin

| d'atteindre mon objectif ?

Tu as dit précédemment :


"Les cellules sont mises en gras par une "Mise en forme conditionnelle"

Il suffit que tu donnes la formule ou la condition qui active la MEFC
Il suffira ensuite de dénombrer sous condition

AV


JB

unread,
Apr 24, 2006, 2:49:57 AM4/24/06
to
Si la formule de calcul est en A10:

[A10].Calculate n'est pas pénalisant.

JB

Ange Ounis

unread,
Apr 24, 2006, 3:44:44 AM4/24/06
to
Certes, sur une plage d'une seule cellule, la différence est imperceptible, mais
très rapidement, en augmentant le nombre de cellules traitées, elle le devient !
C'est un des problèmes des fonctions VBA persos du fait que le VBA n'est pas un
vrai langage de programmation compilé.
Pour de vraies performances comparables aux fonctions natives d'Excel, il faut
passer par des .xll et de la programmation en C (comme le Morefunc.xll de
Laurent Longre). Mais ce n'est plus, bien sûr, aussi accessible..

----------
Ange Ounis
----------

JB a écrit :

AV

unread,
Apr 24, 2006, 3:48:13 AM4/24/06
to
| Certes, sur une plage d'une seule cellule,

Encore que "[A10].Calculate" ne limite absolument pas le recalcul à la cellule
A10 mais à l'ensemble des formules/cellules de la feuille...

AV


Ange Ounis

unread,
Apr 24, 2006, 4:32:22 AM4/24/06
to
Ce n'est pas ce que dit l'aide, mais sur ce point je suis assez dubitatif et
j'aurais plutôt tendance à être d'accord avec toi.

----------
Ange Ounis
----------

AV a écrit :

isabelle

unread,
Apr 24, 2006, 4:56:55 AM4/24/06
to
hello vous tous,

après test je constate que ce n'est plus le cas sur la version 2002, et j'en suis la première surprise.
il faut quant même que "Calculate" soit à la position xlManual, pour qu'un recalcul se fasse uniquement sur une plage déterminer.

mais il faudrait faire des tests plus appronfondi, par exemple que se passera t'il suite à l'exécution des macros événementielle.

isabelle

AV a écrit :

isabelle

unread,
Apr 24, 2006, 5:39:22 AM4/24/06
to
.. dans tout les cas, le recalcule complet du classeur se fait à l'événement "Enregistrer"

isabelle

AV a écrit :

AV

unread,
Apr 24, 2006, 6:06:30 AM4/24/06
to
| .. dans tout les cas, le recalcule complet du classeur se fait à l'événement
"Enregistrer"

Heu... Oui...si "recalcul avant enregistrement" est coché dans les options de
Calcul

AV


isabelle

unread,
Apr 24, 2006, 6:23:21 AM4/24/06
to
c'est bien ça AV, j'avions oublier qu'excel active automatiquement cette case à cocher.

isabelle


AV a écrit :

butch

unread,
Apr 24, 2006, 7:58:02 AM4/24/06
to
Bonjour AV,

Voici la condition de la "MEFC" :
La valeur de la cellule est .... égale à .... (ici, il y a l'adresse de la
cellule à comparer).

Ex: Si la donnée dans B3 est égale à ce qu'il y a dans B75, alors la donnée
dans B3 doit être mise en GRAS.

Voilà... j'espère que j'ai bien expliqué la situation !


--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"AV" a écrit :

> |...quelle formule dois-je utiliser (puisqu'une "proc" ne semble pas OK...) afin

AV

unread,
Apr 24, 2006, 8:09:36 AM4/24/06
to
| Voici la condition de la "MEFC" :
| La valeur de la cellule est .... égale à .... (ici, il y a l'adresse de la
| cellule à comparer).

=NB.SI(Plage_à_examiner;Valeur_à_trouver)

AV


butch

unread,
Apr 24, 2006, 11:04:02 AM4/24/06
to
Bonjour AV,

> =NB.SI(Plage_à_examiner;Valeur_à_trouver)

OK... mais comment trouver, dans la "Plage_à_examiner" les cellules
contenant des chiffres en gras soit... "Valeur_à_trouver" ?

Actuellement, je ne vois vraiment pas commet NB.SI peut faire ce travail !

Merci encore.

--
Merci pour votre aide :-)
Butch

P.-S: Pour écrire à mon adresse personnelle S.V.P. enlever "nospam_" devant
celle-ci.


"AV" a écrit :

> | Voici la condition de la "MEFC" :

AV

unread,
Apr 24, 2006, 11:23:22 AM4/24/06
to
| OK... mais comment trouver, dans la "Plage_à_examiner" les cellules
| contenant des chiffres en gras soit... "Valeur_à_trouver" ?

Laisse tomber les "chiffres en gras" ..
Demande toi pourquoi ils sont en gras et ce pourquoi servira de critère de
dénombrement
Si tu nous mettais un bout de fichier exemple ça éviterait les "prêches dans le
désert" ;-)

AV


Papy Bernard

unread,
Apr 24, 2006, 11:43:15 AM4/24/06
to
Slt,

D'"AV"

> Laisse tomber les "chiffres en gras" ..
> Demande toi pourquoi ils sont en gras et ce pourquoi servira de critère de
> dénombrement

C'était le fond de ma question.

Mais voilà, les usines à gaz qui autorisent les **fioritures** conduisent,
"a posteriori", au prix de contorsions de programmation, à des questions de
ce genre.

Pourquoi faire simple quand on peut faire compliqué.

--
A+
Papy Bernard (RTCien malgré lui)


AV

unread,
Apr 24, 2006, 12:20:57 PM4/24/06
to
| C'était le fond de ma question.

Elle (la question) était fondée.

| Mais voilà, les usines à gaz qui autorisent les **fioritures**

|.................

Cette rengaine n'a strictement aucun intérêt...

AV


0 new messages