Fonction comptage cellules avec caractères en gras

Bonjour tout le monde,

Dans le cadre de la réalisation d'un tableau quotidien de gestion d'effectifs, je souhaiterais mettre dans une cellule un décompte automatique des cellules d'un ensemble de cellules dans lesquelles se trouvent des caractères en gras (mettre ou non un nom en gras dans ce tableau correspondant à certaines caractéristiques précises d'agents).

Jusqu'à maintenant, ce décompte était fait manuellement, ce qui présentait plusieurs désavantages (plus long, risque d'erreur, etc).

Après recherches, j'ai trouvé plusieurs VBA qui proposent plus ou moins de réaliser ça (comptage en fonction du format de la cellule, de la couleur de police ou de remplissage, etc), mais rien de ce que j'ai trouvé ne fonctionne dans le cas précis et exclusif de comptage de cellules avec une police en gras.

Quelqu'un pourrait-il m'éclairer sur la solution, si elle existe ?

Par avance merci.

Bonjour,

Avec une fonction VBA

A mettre dans un module

Function Gras(plg As Range)
For Each c In plg
If c.Font.Bold Then x = x + 1
Next c
Gras = x
End Function

A mettre dans la feuille concernée

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1").Formula = Range("A1").Formula 'A1 est la cellule qui affiche le résultat
End Sub

Mettre en A1 si c'est la cellule de recherche

=Gras(A2:A5)

Bonjour M12,

Quand, pour la deuxième partie, tu dis "mettre dans la feuille concernée"... Ça correspond à quoi ? Où faut-il le mettre ?

Merci par avance.

Re,

depuis VBA, double clic sur la feuille où tu dois compter les cellules et colle le code

A chaque changement sur une cellule, le comptage sera mis à jour


Re,

Fichier exemple

158neirda.xlsm (14.48 Ko)

Re,

Nickel, ça fonctionne bel et bien !

Question bonus... Si sur la même feuille, il y a deux cases pour lesquelles le décompte doit être fait (pas dans la même sélection de cellules, du coup), comment je dois adapter ?

En gros, dans l'exemple que tu me donnes, s'il y a un report du comptage dans "A1", mais aussi dans "B1" ?

Encore merci

Re

Tu rajoutes la ligne dans le code de la feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("A1").Formula = Range("A1").Formula 'A1 est la cellule qui affiche le résultat

Range("B1").Formula = Range("B1").Formula

End Sub

Cette fois c'est bon, solution parfaitement adaptée !

Merci

Re,

Et sache que tu peux aussi sélection par ta formule =GRAS(A3:C50) et le compte sera sur la plage

Bonjour,

Il faudrait ajouter Application.Volatile au début de la fonction.

Et faire F9 sur la feuille de la formule pour la ré-évaluer en cas de changement des cellules en gras.

eric

Bonjour Eriiic,

Application volatile je ne connait pas trop,

et comme un bon exemple vaut mieux qu'un long discourt

Si tu as un moment, je suis preneur (sans que j'aille farfouiller ailleurs)

Une fonction personnalisée n'est ré-évaluée que si un des arguments passé en paramètre change.

Un changement de mise en forme n'est pas considéré comme un changement pour VBA ce qui obligerait à revalider la formule pour mettre son résultat à jour.

Si tu la rends volatile elle sera ré-évaluée à chaque recalcul de la feuille, même si elle n'est pas directement concernée. F9 ou une simple validation d'une cellule quelconque la ré-évaluera.

Function xxxx(...)
   Application.Volatile
   '.... calcul
End Function

eric

Ok

Merci Eriiic pour l'info

On apprend tous les jours et avec EXCEL et son VBA , c'est très loin d'être fini , et c'est ce qui donne un certain charme

Rechercher des sujets similaires à "fonction comptage caracteres gras"