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

natorp

XLDnaute Accro
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
 

DoubleZero

XLDnaute Barbatruc
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 :D:D
 
Dernière édition:

job75

XLDnaute Barbatruc
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:

DoubleZero

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

Re-bonjour, bonjour, job75 :D,

...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 :D
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
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
@+
 

job75

XLDnaute Barbatruc
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+
 

natorp

XLDnaute Accro
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
 

Pierrot93

XLDnaute Barbatruc
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
 

natorp

XLDnaute Accro
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:

job75

XLDnaute Barbatruc
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+
 

natorp

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

Merci Job75

Au plaisir de te lire, Gérard
 

Discussions similaires


Haut Bas