Calculer le nombre de cellules comportant un commentaire sur une sélection

Gudo

XLDnaute Junior
Bonjour

J’aurai besoin de calculer le nombre de cellules comportant un nombre positif et comportant un commentaire précis.
Ou à défaut au moins comportant un commentaire quelconque.

Je n’ai pas trouvé de fonction de base pour faire ce calcul
Mais une telle fonction est-elle réalisable ?
Peut-être que quelqu’un l’a déjà fait ?

Merci
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Bonjour,


Code:
Function NbCmt(champ As Range)
 Application.Volatile
 For Each c In ActiveSheet.Comments
  If Not Intersect(champ, c.Parent) Is Nothing Then n = n + 1
 Next c
 NbCmt = n
End Function

Code:
Function NbCmt2(champ As Range, Cmt)
 Application.Volatile
 For Each c In ActiveSheet.Comments
  If Not Intersect(champ, c.Parent) Is Nothing Then
     If c.Text = Cmt And c.Parent.Value > 0 Then n = n + 1
  End If
 Next c
 NbCmt2 = n
End Function

JB
 

Pièces jointes

  • CompteCmt.xls
    28.5 KB · Affichages: 29
  • CompteCmt.xls
    28.5 KB · Affichages: 32
  • CompteCmt.xls
    28.5 KB · Affichages: 28
Dernière édition:

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Bonjour BOISGONTIER

Merci pour cette réponse ultra rapide

La 1ère fonction avec un commentaire quelconque fonctionne parfaitement

Pour la 2ème, j'ai eu un peu de mal
Cela fonctionne, mais à condition qu'il y a pas le nom de l'auteur.

Exemple avec le commentaire "Essai" c'est Ok
Mais si le commentaire est "Gudo: Essai", cela ne donne rien

A+
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Code:
Function NbCmt2(champ As Range, Cmt)
 Application.Volatile
 For Each c In ActiveSheet.Comments
  If Not Intersect(champ, c.Parent) Is Nothing Then
     If InStr(UCase(c.Text), UCase(Cmt)) > 0 And c.Parent.Value > 0 Then n = n + 1
  End If
 Next c
 NbCmt2 = n
End Function

JB
 

Pièces jointes

  • CompteCmt.xls
    29 KB · Affichages: 30
  • CompteCmt.xls
    29 KB · Affichages: 33
  • CompteCmt.xls
    29 KB · Affichages: 38

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Re,

Merci avec cette 2ème macro c'est Ok
Mais il y a quelque chose qui m’échappe !!

Dans mon fichier personnel
Tant que je reste sur une sélection à l'intérieur de la feuille où est la formule, c'est Ok
Dès que je l'applique à une autre feuille,
J'ai le message "Le type de donnée d'une valeur utilisée dans la formule est incorrecte"

Pourtant j'ai fait l’essai avec un autre classeur créé pour la circonstance, avec les mêmes noms de feuille, la même sélection, les mêmes commentaires. La formule est Ok
Si je recopie cette formule dans mon classeur, il me renvoie cette erreur

A+
 

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Re,

Je viens de trouvez peut-être un début d'explication

Dans mes cellules, ce ne sont pas des nombres mais des dates,
Si j'applique la formule à une zone où sont entre-autre ces dates, cela ne fonctionne pas
Si j'ajoute un nombre, par exemple dans la cellule 021 avec un commentaire (Voir fichier joint)
Le résultat dans la feuille 2 devient correct
Mais si j'active le recalcul, tous repasse à 0 !

Je joins le fichier, car cela est très difficile à expliquer
 

Pièces jointes

  • CompteCmt3.xls
    38 KB · Affichages: 32
  • CompteCmt3.xls
    38 KB · Affichages: 32
  • CompteCmt3.xls
    38 KB · Affichages: 28

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Bonjour

Cette nouvelle version fonctionne parfaitement
Je vous remercie pour cette fonction qui remplie exactement ce que je souhaitais

J'utilise également la fonction SOMMEPROD pour faire des totaux
Votre fonction m'a fait penser à quelques chose
Mais je ne suis pas sûr cette fois que cela soit réalisable :

Ce serait de faire un test à 2 conditions
1) l'appartenance à type de produit
2) la présence ou pas d'un commentaire type

La première condition ne pose évidement aucun problème; mais pour la deuxième il en est tout autrement ??
Comme il s'agit d'une demande différente, je vais donc lancer une nouvelle discussion
Dans laquelle je vais produire un exemple qui sera plus parlant

Encore merci et peut être à plus
 

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Bonjour

Je voudrais faire évoluer cette fonction créée par J.BOISGONTIER il y a quelques jours
De manière à la lier, non pas à une feuille du même classeur
Mais à une feuille, d'un autre classeur.

Je pense que cela doit être possible ?
Mais je n'y arrive pas

Si quelqu'un peut m'aider ?
Merci d'avance
 

Pièces jointes

  • CompteCmt3.xls
    31 KB · Affichages: 27
  • CompteCmt3.xls
    31 KB · Affichages: 27
  • CompteCmt3.xls
    31 KB · Affichages: 30

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Bonjour à tous

Je suis toujours à la recherche d'un coup de main, pour modifier cette fonction afin de la rendre exploitable entre 2 classeurs

Merci
 

Gudo

XLDnaute Junior
Re : Calculer le nombre de cellules comportant un commentaire sur une sélection

Bonjour

Je reviens encore pour essayer de résoudre mon problème de fonction

Pour être peut-être plus claire, voici la fonction valable pour une utilisation entre 2 feuilles d'un même classeur

Code:
=nbcmt2(Feuil1!B1:B30;"Commentaire1";"Feuil1")

Entre 2 classeurs différents, je pensais que cela pourrait être :

Code:
=nbcmt2([Classeur2.xlsx]Feuil1!$B$1;"Manquant";"[Classeur2.xlsx]Feui1")

Mais cela ne fonctionne pas

Je redonne la fonction ce dessous
Function NbCmt2(champ As Range, Cmt, Optional onglet)
Application.Volatile
If IsMissing(onglet) Then onglet = ActiveSheet.Name
For Each c In Sheets(onglet).Comments
If Not Intersect(Sheets(onglet).Range(champ.Address), c.Parent) Is Nothing Then
If InStr(UCase(c.Text), UCase(Cmt)) > 0 And c.Parent > 0 Then n = n + 1
End If
Next c
NbCmt2 = n
End Function

Si quelqu'un à une idée, merci d'avance
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin