Changer le format des commentaires avec VBA

Le
Emile63
Bonjour Í  tous,
Je souhaite changer les formats des commentaires uniquement de la zone sélectionnée (s'il y en a) mais ça n'a pas l'air de fonctionner :-(
Je vous remercie d'avance pour votre aide,
--
Sub ChangerFormatsSélection ()
For Each C In ActiveSheet.UsedRange.Cells
With C
If .Comment Is Nothing Then
.Comment.Shape.OLEFormat.Object.Font.Name = "Tahoma"
.Comment.Shape.OLEFormat.Object.Font.Size = 11
.Comment.Shape.TextFrame.AutoSize = True
End If
End With
Next C
End Sub
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
db
Le #26569155
Le 02/03/2021 Í  10:16, Emile63 a écrit :
Bonjour Í  tous,
Je souhaite changer les formats des commentaires uniquement de la zone sélectionnée (s'il y en a) mais ça n'a pas l'air de fonctionner :-(
Je vous remercie d'avance pour votre aide,
-----------------------------------------------------------------
Sub ChangerFormatsSélection ()
For Each C In ActiveSheet.UsedRange.Cells
With C
If .Comment Is Nothing Then

If not .Comment is Nothing ?
db
Emile63
Le #26569158
Le Tuesday, March 2, 2021 Í  10:42:01 AM UTC+1, db a écrit :
Le 02/03/2021 Í  10:16, Emile63 a écrit :
Bonjour Í  tous,
Je souhaite changer les formats des commentaires uniquement de la zone sélectionnée (s'il y en a) mais ça n'a pas l'air de fonctionner :-(
Je vous remercie d'avance pour votre aide,
-----------------------------------------------------------------
Sub ChangerFormatsSélection ()
For Each C In ActiveSheet.UsedRange.Cells
With C
If .Comment Is Nothing Then

If not .Comment is Nothing ?
db

Merci DB pour ta judicieuse remarque ;)
L'idée c'est qu'il ne s'arrête pas sur les cellules (dans la sélection) qui n'ont pas de commentaires.
J'ai corrigé - If Not ... - Mais le "If" n'est pas pris en compte :(
-----------------------------------------
For Each C In Selection
If Not C.Comment Is noting Then
With C.Comment.Shape
.OLEFormat.Object.Font.Name = "Tahoma"
.OLEFormat.Object.Font.Size = 12
End With
End If
Next C
Brat'ac
Le #26569157
Emile63 avait énoncé :
Le Tuesday, March 2, 2021 Í  10:42:01 AM UTC+1, db a écrit :
Le 02/03/2021 Í  10:16, Emile63 a écrit :
Bonjour Í  tous,
Je souhaite changer les formats des commentaires uniquement de la zone
sélectionnée (s'il y en a) mais ça n'a pas l'air de fonctionner :-( Je
vous remercie d'avance pour votre aide,
----------------------------------------------------------------- Sub
ChangerFormatsSélection () For Each C In ActiveSheet.UsedRange.Cells
With C
If .Comment Is Nothing Then

If not .Comment is Nothing ?
db

Merci DB pour ta judicieuse remarque ;)
L'idée c'est qu'il ne s'arrête pas sur les cellules (dans la sélection) qui
n'ont pas de commentaires. J'ai corrigé - If Not ... - Mais le "If" n'est pas
pris en compte :( -----------------------------------------
For Each C In Selection
If Not C.Comment Is noting Then
With C.Comment.Shape
.OLEFormat.Object.Font.Name = "Tahoma"
.OLEFormat.Object.Font.Size = 12
End With
End If
Next C

Bonjour,
Pour info un site intéressant avec une page entière qui traite des
commentaires
http://boisgontierjacques.free.fr/
Emile63
Le #26569170
Le Tuesday, March 2, 2021 Í  11:04:57 AM UTC+1, Brat'ac a écrit :
Emile63 avait énoncé :
Le Tuesday, March 2, 2021 Í  10:42:01 AM UTC+1, db a écrit :
Le 02/03/2021 Í  10:16, Emile63 a écrit :
Bonjour Í  tous,
Je souhaite changer les formats des commentaires uniquement de la zone
sélectionnée (s'il y en a) mais ça n'a pas l'air de fonctionner :-( Je
vous remercie d'avance pour votre aide,
----------------------------------------------------------------- Sub
ChangerFormatsSélection () For Each C In ActiveSheet.UsedRange.Cells
With C
If .Comment Is Nothing Then

If not .Comment is Nothing ?
db

Merci DB pour ta judicieuse remarque ;)
L'idée c'est qu'il ne s'arrête pas sur les cellules (dans la sélection) qui
n'ont pas de commentaires. J'ai corrigé - If Not ... - Mais le "If" n'est pas
pris en compte :( -----------------------------------------
For Each C In Selection
If Not C.Comment Is noting Then
With C.Comment.Shape
.OLEFormat.Object.Font.Name = "Tahoma"
.OLEFormat.Object.Font.Size = 12
End With
End If
Next C

Bonjour,
Pour info un site intéressant avec une page entière qui traite des
commentaires
http://boisgontierjacques.free.fr/

Bonjour Brat'ac ,
Je me suis effectivement inspiré de ce site (que j'ai dans mes favoris), mais c'est le "if" en cas de non commentaire que je ne maÍ®trise pas.
Sauf erreur, Boisgontier le résout avec "On Error", mon souci c'est que si je sélectionne une grande quantitée de cellules (Í  la souris), j'aimerais gagner du temps en évitant celles qui n'ont pas de commentaires, avec un "if"..
Je ne sais pas si je me suis bien expliqué, j'espère avoir été compréhensible. ;)
Encore merci pour votre aide,
Bonne journée
MichD
Le #26569176
Le 02/03/21 Í  04:16, Emile63 a écrit :
Bonjour Í  tous,
Je souhaite changer les formats des commentaires uniquement de la zone sélectionnée (s'il y en a) mais ça n'a pas l'air de fonctionner :-(
Je vous remercie d'avance pour votre aide,
-----------------------------------------------------------------
Sub ChangerFormatsSélection ()
For Each C In ActiveSheet.UsedRange.Cells
With C
If .Comment Is Nothing Then
.Comment.Shape.OLEFormat.Object.Font.Name = "Tahoma"
.Comment.Shape.OLEFormat.Object.Font.Size = 11
.Comment.Shape.TextFrame.AutoSize = True
End If
End With
Next C
End Sub


Bonjour,
Tu adaptes le nom de l'onglet de la feuille "Feuil1" et l'adresse de la
plage o͹ les commentaires doivent avoir un format différent
(Range("A1:A10"))
'----------------------------------------
Sub test()
Dim C As Comment, Cel As Range
With Worksheets("Feuil1")
For Each C In .Comments
Set Cel = .Range(C.Parent.Address)
If Not Intersect(Cel, .Range("A1:B10")) Is Nothing Then
With C.Shape.OLEFormat.Object
.Font.Color = vbWhite
.Font.Size = 12
.Interior.Color = vbRed
.AutoSize = True
End With
End If
Next
End With
End Sub
'----------------------------------------
MichD
MichD
Le #26569194
Tu adaptes le nom de l'onglet de la feuille "Feuil1" et l'adresse de la
plage o͹ les commentaires doivent avoir un format différent
(Range("A1:A10"))
'----------------------------------------
Sub test()
Dim C As Comment, Cel As Range
With Worksheets("Feuil1")
   For Each C In .Comments
        Set Cel = .Range(C.Parent.Address)
        If Not Intersect(Cel, .Range("A1:B10")) Is Nothing Then
            With C.Shape.OLEFormat.Object
                .Font.Color = vbWhite
                .Font.Size = 12
                .Interior.Color = vbRed
                .AutoSize = True
            End With
        End If
    Next
End With
End Sub
'----------------------------------------

Une autre version, légèrement différente :
Il arrive que le dernier caractère soit "Chr(10)" et que la commande
"Autosize" ne fasse pas le travail comme désiré Í  cause de ce caractère:
'-------------------------------------------
Sub test()
Dim C As Comment, G As String
With Worksheets("Feuil1")
For Each C In .Comments
If Not Intersect(.Range(C.Parent.Address), .Range("A1:B10")) Is
Nothing Then
With C.Shape.OLEFormat.Object
.Font.Color = vbWhite
.Font.Size = 12
.Interior.Color = vbRed
If Right(.Text, 1) = Chr(10) Then
G = Left(.Text, Len(.Text) - 1)
End If
C.Text G
.AutoSize = True
End With
End If
Next
End With
End Sub
'-------------------------------------------
MichD
Emile63
Le #26574120
Le Tuesday, March 2, 2021 Í  4:28:49 PM UTC+1, MichD a écrit :
Tu adaptes le nom de l'onglet de la feuille "Feuil1" et l'adresse de la
plage o͹ les commentaires doivent avoir un format différent
(Range("A1:A10"))
'----------------------------------------
Sub test()
Dim C As Comment, Cel As Range
With Worksheets("Feuil1")
For Each C In .Comments
Set Cel = .Range(C.Parent.Address)
If Not Intersect(Cel, .Range("A1:B10")) Is Nothing Then
With C.Shape.OLEFormat.Object
.Font.Color = vbWhite
.Font.Size = 12
.Interior.Color = vbRed
.AutoSize = True
End With
End If
Next
End With
End Sub
'----------------------------------------

Une autre version, légèrement différente :
Il arrive que le dernier caractère soit "Chr(10)" et que la commande
"Autosize" ne fasse pas le travail comme désiré Í  cause de ce caractère:
'-------------------------------------------
Sub test()
Dim C As Comment, G As String
With Worksheets("Feuil1")
For Each C In .Comments
If Not Intersect(.Range(C.Parent.Address), .Range("A1:B10")) Is
Nothing Then
With C.Shape.OLEFormat.Object
.Font.Color = vbWhite
.Font.Size = 12
.Interior.Color = vbRed
If Right(.Text, 1) = Chr(10) Then
G = Left(.Text, Len(.Text) - 1)
End If
C.Text G
.AutoSize = True
End With
End If
Next
End With
End Sub
'-------------------------------------------
MichD

Bonjour MichD,
Désolé pour le délai, j'ai dÍ» résoudre d'autre problèmes entretemps :-)
Merci pour tes propositions!
J'ai adapté ta dernière proposition et j'ai deux questions.
Au niveau de la localisation, je n'ai pas bien compris le fonctionnement de Intersect..
Mon souhait étant de corriger l'ensemble des commentaires de la feuille active (J'ai corriger: With ActiveSheet)

Sub UniformiserCommentaires()
Dim C As Comment, G As String
With ActiveSheet
'With Worksheets("Feuil1")
For Each C In .Comments
If Not Intersect(.Range(C.Parent.Address), .Range("A1:Z1000")) Is Nothing Then ' Ici j'ai agrandi la zone de recherche..
'Ne pourrais-t'on pas faire une zone de sélection Í  la souris, plutÍ´t qu' en dur dans la procédure
With C.Shape.OLEFormat.Object
.Font.Name = "Tahoma"
.Font.Color = vbBlack
.Font.Bold = True
.Font.Size = 10
.Interior.Color = RGB(255, 255, 204)
If Right(.Text, 1) = Chr(10) Then
G = Left(.Text, Len(.Text) - 1)
End If
' C.Text G ' Cette ligne plante la macro, je l'ai désactivée et la procédure s'éxécute convenablement. Mais Í  quoi sert-elle?
' Ne devrait-elle pas se situer juste en dessus du End if ?
.AutoSize = True
End With
End If
Next
End With
End Sub
En te souhaitant une très bonne journée,
Emile
MichD
Le #26574148
Bonjour,
Pour l'ensemble des commentaires d'une feuille, oublie cette ligne de
code et le End If plus bas.
'----------------
If Not Intersect(.Range(C.Parent.Address), .Range("A1:Z1000"))
end if
'----------------
Avec "Activesheet", la macro peut traiter les commentaires de n'importe
quelle feuille. Il faut alors s'assurer que la bonne feuille est active
avant de lancer la macro.
Pour la feuille entière, la macro se lirait comme suit :
'--------------------------
Sub test()
Dim C As Comment, G As String
With ActiveSheet
For Each C In .Comments
With C.Shape.OLEFormat.Object
.Font.Color = vbWhite
.Font.Size = 12
.Interior.Color = vbRed
If Right(.Text, 1) = Chr(10) Then
G = Left(.Text, Len(.Text) - 1)
End If
C.Text G
.AutoSize = True
End With
Next
End With
End Sub
'--------------------------
MichD
Poster une réponse
Anonyme