Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Mise En Forme d'un commentaire de cellule

  • Initiateur de la discussion Initiateur de la discussion TooFatBoy
  • 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 !

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...



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

Pièces jointes

Dernière édition:
Je ne comprends pas vraiment pourquoi, mais je constate que si j'ajoute quelques lignes, ça ne plante plus !?! 😳
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:
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:
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 ???
 
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.
 
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
 
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 ?
 
- 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
4
Affichages
131
Réponses
1
Affichages
83
Réponses
4
Affichages
97
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…