Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

  • Initiateur de la discussion Initiateur de la discussion natorp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

natorp

XLDnaute Barbatruc
Bjr à toutes et toutes

J'ai ce code pour tester la présence de commentaire dans une feuille :

Code:
  Set f = Sheets("4 joueurs")
  ligne = 2
  For Each c In f.Comments

J'aimerais ajouter quelque chose du style :

Set f = Sheets("4 joueurs").[H10:M49]
ligne = 2
For Each c In f.Comments

pour lui dire que je ne veux tester que la zone H10:M49

sauf que ça plante sur la ligne :
Code:
For Each c In f.Comments
"Propriété ou méthode non gérée par cet objet"

Merci de votre aide, cordialement, Gérard
 
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Bonjour, natorp, le Forum,

Peut-être ainsi :

Code:
Option Explicit
Sub Commentaires_dans_une_plage_repérer()
    On Error Resume Next
    Sheets("4 joueurs").Activate
    With Range("H10:M49").SpecialCells(xlCellTypeComments)
        .Interior.ColorIndex = 3
    End With
End Sub

A bientôt 🙂

P. S. : Bonjour, job75 😀😀
 
Dernière édition:
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Bonjour Natorp, salut DoubleZero 🙂 heureux de te croiser 🙂

Autre solution, à adapter éventuellement :

Code:
Sub Test()
Dim f As Worksheet, plage As Range, c As Comment, a As String
Set f = Sheets("4 joueurs")
Set plage = f.[H10:M49]
For Each c In f.Comments
  a = c.Parent.Address(0, 0)
  If Not Intersect(plage, f.Range(a)) Is Nothing _
    Then MsgBox c.Text, , "Commentaire en " & a
Next
End Sub
Edit : pour être sûr de voir l'adresse dans le titre de la MsgBox :

Code:
Sub Test()
Dim f As Worksheet, plage As Range, c As Comment, a As String
Set f = Sheets("4 joueurs")
Set plage = f.[H10:M49]
For Each c In f.Comments
  a = c.Parent.Address(0, 0)
  If Not Intersect(plage, f.Range(a)) Is Nothing _
    Then MsgBox c.Text & vbLf & String(40, " "), , "Commentaire en " & a
Next
End Sub
A+
 
Dernière édition:
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Re-bonjour, bonjour, job75 😀,

...Edit : pour être sûr de voir l'adresse dans le titre de la MsgBox...

Il n'est pas permis de "liker" deux fois : dommage 🙁 !

Je le fais donc avec ces quelques mots 🙂.

A bientôt 🙂🙂

P. S. : Bonjour, Pierrot 😀
 
Dernière édition:
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Bonjour à tous,

sur la base du code de 00🙂...
Code:
Option Explicit
Sub Commentaires_dans_une_plage_repérer()
On Error Resume Next
MsgBox Sheets("4 joueurs").Range("H10:M49").SpecialCells(xlCellTypeComments).Address(0, 0)
End Sub

bon après midi
@+
 
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Re,

Merci chère 00 🙂

On peut aussi utiliser cette fonction VBA :

Code:
Function COMMENTAIRE(plage As Range)
Dim c As Comment, a As String
Application.Volatile
For Each c In plage.Parent.Comments
  a = c.Parent.Address
  If Not Intersect(plage, plage.Parent.Range(a)) Is Nothing _
  Then COMMENTAIRE = "Oui": Exit Function
Next
COMMENTAIRE = "Non"
End Function
Si l'on ajoute ou efface un commentaire, il faut appuyer sur F9 pour mettre à jour le résultat.

A+
 
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Merci à vous, 00, Job75 et Pierrot93 de se pencher sur mon cas

mais voilà, je pensais pouvoir y arriver avec vos réponses et je sèche encore

voilà le code complet de la feuille "Récap" où je fais des stats sur les parties jouées :

Code:
Private Sub Worksheet_Activate()
  Set f = Sheets("4 joueurs")
  ligne = 2
  For Each c In f.Comments
    adr = c.Parent.Address
    Cells(ligne, 1) = f.Cells(Range(adr).Row, 1)
    Cells(ligne, 2) = f.Cells(9, Range(adr).Column)
    temp = c.Text
    Cells(ligne, 3) = Mid(temp, InStr(temp, ":") + 1)
    ligne = ligne + 1
  Next c
End Sub
j'aimerais tester la présence de commentaires dans la zone H10:M49 de la feuille "4 joueurs" pour ne faire ces stats qu'avec les commentaires de la zone H10:M49

Merci à vous
 
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Re,

j'aimerais tester la présence de commentaires dans la zone H10:M49 de la feuille "4 joueurs" pour ne faire ces stats qu'avec les commentaires de la zone H10:M49

pour faire des stats, c'est un comptage qu'il te faut ??? peut être ceci....
On Error Resume Next
MsgBox Sheets(1).Range("H10:M49").SpecialCells(xlCellTypeComments).Count
 
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Re le fil

j'ai trouvé :

Code:
Set f = Sheets("6 joueurs")
Set plage = f.[H10:M49]

  ligne = 2
  For Each c In f.Comments
    adr = c.Parent.Address
    If Not Intersect(plage, f.Range(adr)) Is Nothing Then
    Cells(ligne, 1) = f.Cells(Range(adr).Row, 1)
    Cells(ligne, 2) = f.Cells(9, Range(adr).Column)
    temp = c.Text
    Cells(ligne, 3) = Mid(temp, InStr(temp, ":") + 1)
    ligne = ligne + 1
    End If
  Next c
End Sub
mais je ne sais pas pourquoi, si l'un de vous pouvez m'expliquer clairement ce que fait la ligne "If Not Intersect......
je lui en serais très reconnaissant...

Cordialement, Gérard
 
Dernière édition:
Re : Sélectionner une plage de cellules en VBA pour tester la présence de commentaire

Re, salut Pierrot,

@ Gérard : après 901 posts tu dois connaître la méthode Intersect non ?

Ici elle permet de savoir si la cellule du commentaire est dans la plage H10:M49.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
725
Réponses
7
Affichages
2 K
Retour