Bonjour,
Tout d’abord, mille mercis par avance à ceux qui se pencheront sur ma question.
Mon souhait est d’harmoniser le formatage de tous les commentaires d’une feuille Excel (police et alignement du texte, couleur de fond et encadrement, dimension et position).
Voici mon code :
Sub zHarmoFormatCommentaires()
Dim commentaire As comment
' But : harmoniser le format de tous les commentaires de la feuille active
Dim haut As Single, gauche As Single, hauteur As Single, largeur As Single
For Each commentaire In ActiveSheet.Comments
With commentaire
'1°) coordonnées spatiales de la cellule mère
With .Parent.MergeArea
haut = .Top: gauche = .Left: hauteur = .Height: largeur = .Width
End With
'2°) mise en forme
With .Shape
'a) fond vert pâle
With .Fill
.ForeColor.RGB = RGB(224, 255, 192): .Solid: .Transparency = 0.15
End With
'b) cadre gris clair
With .Line
.ForeColor.RGB = RGB(128, 128, 128): .Weight = 0.5
End With
With .TextFrame
'c) police Calibri 9 pt
With .Characters.Font
.Name = "Calibri": .Size = 9: .ColorIndex = 0: .Bold = False
End With
'd) alignement à droite et en haut
.HorizontalAlignment = xlRight: .VerticalAlignment = xlTop
'e) taille ajustée au texte
.AutoSize = True
End With
'3°) position relativement à la cellule mère
.Top = haut + hauteur / 2: .Left = gauche + largeur + hauteur / 2
End With
End With
Next commentaire
MsgBox "C'est terminé !"
End Sub
Deux erreurs surviennent :
1°)
pour :
With commentaire.Shape.Fill
...
End with
2°)
pour :
With commentaire.Shape.TextFrame
...
End With
Seule la partie finale fonctionne :
With commentaire.Shape
...
'3°) position relativement à la cellule mère
.Top = haut + hauteur / 2: .Left = gauche + largeur + hauteur / 2
End With
Avant de rédiger cette question, j’ai parcouru le forum et lu plusieurs discussions qui traitent de ce sujet ; mais les différentes solutions exposées – et décrites comme fonctionnelles – aboutissent toutes, dans mon cas, aux erreurs citées plus haut.
Quant à la fonction d’enregistrement des macros, elle ne permet pas d’écrire ce type d’action.
Précision : cette macro fonctionnait sur Excel 2011 (v 14.1.0) ; mes soucis sont apparus il y a quelques années avec Excel 16.39 (sur Mac avec macOS entre 10.13 High Sierra et 15.4 Sequoia).
Très bonne journée à tous...