XL 2016 Mise En Forme d'un commentaire de cellule

TooFatBoy

XLDnaute Barbatruc
Bonjour,

J'ai créé une petite macro qui modifie la MEF du commentaire d'une cellule quand je double-clique sur ladite cellule.
Mais il y a un petit souci...

Quand je double-clique sur une cellule dont le commentaire n'a pas encore été mis en forme par ma macro, la macro plante lors de la tentative de changement de couleur du commentaire. J'arrête alors la macro.
A partir de là, à chaque fois que je double-clique de nouveau sur la même cellule, la macro ne plante plus sur cette cellule.

Autre bizarrerie : lorsque la macro plante c'est sur une tentative de changement de couleur du texte du commentaire, mais le message d'erreur concerne la taille de la police de caractères...
MsgErreur.png



Question subsidiaire : est-il possible de changer la couleur de fond du commentaire ?
 

Pièces jointes

  • MEF_commentaire.xlsm
    22.6 KB · Affichages: 22
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Je ne comprends pas vraiment pourquoi, mais je constate que si j'ajoute quelques lignes, ça ne plante plus !?! :oops:
Je suis donc toujours preneur d'informations.

Au final ça me donne ceci :
Code:
Sub MEF_Commentaire_2(MaCellule As Range)
'
    If MaCellule.Comment Is Nothing Then Exit Sub

    MonTexte = MaCellule.Comment.Text
    Separation = InStr(1, MonTexte, ":" & Chr(10))
    Auteur = Trim(Left(MonTexte, Separation - 1)) & " :"
    MonComment = Right(MonTexte, Len(MonTexte) - Separation - 1)
    MonTexte = Auteur & Chr(10) & MonComment


    If MaCellule.Comment Is Nothing Then MaCellule.AddComment
    MaCellule.Comment.Text Text:=MonTexte

    AuteurDeb = 1
    AuteurNbCar = Len(Auteur)
    AuteurFin = AuteurDeb + AuteurNbCar - 1

    CommentDeb = AuteurFin + 2
    CommentNbCar = Len(MonComment)
    CommentFin = CommentDeb + CommentNbCar - 1

'    MaCellule.Comment.Shape.BackColor = RGB(127, 127, 255)

' ====================================================================
' Sans ces lignes, ça plante !...
' --------------------------------------------------------------------
    With MaCellule.Comment.Shape.TextFrame.Characters(Start:=1, Length:=Len(MaCellule.Comment.Text)).Font
        .Color = RGB(127, 127, 127)
        .Size = 8
        .Bold = False
        .Italic = True
    End With
' ====================================================================

    With MaCellule.Comment.Shape.TextFrame.Characters(Start:=AuteurDeb, Length:=AuteurNbCar).Font
        .Color = RGB(127, 127, 127)
        .Size = 8
        .Bold = False
        .Italic = True
    End With

    With MaCellule.Comment.Shape.TextFrame.Characters(Start:=CommentDeb, Length:=CommentNbCar).Font
        .Color = RGB(0, 0, 255)
        .Size = 10
        .Bold = True
        .Italic = False
    End With

    With MaCellule.Comment.Shape
        .Line.Style = msoLineSingle                 ' Type de trait (ex. : msoLineSingle)
        .Line.DashStyle = msoLineSolid              ' Type de pointillés (ex. : msoLineSolid)
        .Line.Weight = 2                            ' Épaisseur (ex. : 2)
        .Line.ForeColor.RGB = RGB(255, 0, 0)        ' Couleur (ex. : RGB(255, 255, 217))
    End With

    MaCellule.Comment.Shape.AutoShapeType = msoShapeRoundedRectangle
    MaCellule.Comment.Shape.TextFrame.AutoSize = True

End Sub
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bon, ben ça répond déjà à la question subsidiaire.
Grâce à toi je peux changer la couleur de fond du commentaire ! 😍😍😍

Code:
Range("A1").Comment.Shape.Fill.ForeColor.SchemeColor = 47      'Orange

ou pour ceux qui, comme moi, préfèrent le RGB :
Code:
MaCellule.Comment.Shape.Fill.ForeColor.RGB =RGB(255, 204, 153)     'Orange
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Alors, j'ai regardé la v1, mais hélas elle ne répond pas à ma question :
pourquoi ma macro plante-t-elle au premier passage (alors qu'elle ne plante pas aux passages suivants) ?

Et du coup j'ajoute une nouvelle question : est-ce que ça fait pareil chez toi ???
 

TooFatBoy

XLDnaute Barbatruc
En tâtonnant je me suis rendu compte que, dans les lignes de code qui permettaient de ne pas avoir de plantage de la macro, la ligne avec l'instruction Size suffit.
Code:
    With MaCellule.Comment.Shape.TextFrame.Characters(Start:=1, Length:=Len(MaCellule.Comment.Text)).Font
'        .Color = RGB(127, 127, 127)
        .Size = 8
'        .Bold = False
'        .Italic = True
    End With

Mais ça ne répond toujours à la question... 😭
Probablement un petit bug.
 

Deadpool_CC

XLDnaute Accro
Bonjour

j'ai pas pris la peine de faire le copier/coller pour tester : donc pas de réponse.
Par contre dans ton code cette ligne sert à rien

VB:
If MaCellule.Comment Is Nothing Then MaCellule.AddComment

=> si pas de commentaire, t'es déjà sorti de ta sub quelques lignes au dessus ... lol
 

patricktoulon

XLDnaute Barbatruc
Bonjour
apriori il n'y a aucune raison sauf que pour ce qui sont déjà en place tu a du faire une erreur au depart
le premier bloc with le fait un size

donc tu a du mettre un font.size incohérent au départ

puisque quand je ré enregistre le ficher et le réouvre l'erreur ne se reproduit plus

petite question c'est quoi l'intéret de refaire le theme a chaque fois ?
 

Discussions similaires