Citation :
'***
Crit_FLgn = vbLf 'dans le shape commentaire, terminaison naturelle
'de fin de ligne sauf la dernière...
Modulo = 2 'style pseudo bistre
Coul_F_Com = RGB(250, 250, 245) 'couleur de remplissage shape commentaire
Coul_Lgn_Imp = RGB(10, 70, 60) 'couleur N°ligne impaire vs Modulo
Coul_Lgn_Pair = RGB(139, 61, 38) 'couleur N°ligne paire vs Modulo
Crit_Chaine = "couleurs différentes" 'mumuse sur chaîne
'Target à passer en paramètre de procédure
Cible = "A1"
'texte d'essais. Variable à passer en param de procédure
Mon_Text = Crit_FLgn & "Présentation de commentaire" & Crit_FLgn _
& "J'ai fait une p'tite appli excel en VBA" & Crit_FLgn & _
"et je voudrais rajouter un commentaire (bon, ça c'est bon)" & Crit_FLgn & _
"avec des couleurs différentes pour certains mots du texte." & Crit_FLgn & _
"Je m 'explique, ce comment permet de lister les valeurs de différentes cellules" _
& Crit_FLgn & "et je voudrais une couleur par ligne." & vbLf _
& vbLf & "Voilà déjà mon bout de code :"
'***
'init du commentaire pour le terminer avec Crit_FLgn afin de prendre en compte
'la position de fin du texte dans le Tabl_Pos_Crit_Lgn (split)
Mon_Text = Mon_Text & Crit_FLgn
Pos = InStr(1, Mon_Text, Crit_FLgn, vbTextCompare)
Pos_Crit_Lgn = "0" 'voir plus loin 'Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) + 1'
Do While Pos > 0
Pos_Crit_Lgn = Pos_Crit_Lgn & "," & Pos 'Positions csv
Pos = InStr(Pos + 1, Mon_Text, Crit_FLgn, vbTextCompare)
Loop
Tabl_Pos_Crit_Lgn = Split(Pos_Crit_Lgn, ",", -1, vbTextCompare)
'retire Crit_FLgn ajouté précédemment dans le texte du commentaire
'pour les besoins du split avant de l'affecter au shape comment
Mon_Text = Left(Mon_Text, Len(Mon_Text) - 1)
'Fin init, traite le commentaire
With Range(Cible)
'efface le commentaire s'il existe sinon error
On Error Resume Next
.Comment.Delete
'désactive tout handler d'erreur de cette procédure
On Error GoTo 0
'affecte le commentaire à cible
.AddComment (Mon_Text)
'sélectionne l'objet Shape de cible
.Comment.Visible = True 'obligé
.Comment.Shape.Fill.ForeColor.RGB = Coul_F_Com
.Comment.Shape.Select
'Met en forme l'objet shape commentaire
With Selection
.HorizontalAlignment = xlLeft
.VerticalAlignment = xlTop
.Orientation = xlHorizontal
.AutoSize = True
'formate des lignes de texte de l'objet shape
Cpt_Lgn_Vide = 0
For Num_Lgn = LBound(Tabl_Pos_Crit_Lgn) + 1 To _
UBound(Tabl_Pos_Crit_Lgn)
'lgn courante vide ?
If Mid(Mon_Text, _
Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) + 1, _
Val(Tabl_Pos_Crit_Lgn(Num_Lgn)) _
- Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) - 1) _
<> "" Then
With .Characters(Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) + 1, _
Val(Tabl_Pos_Crit_Lgn(Num_Lgn)) _
- Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) - 1).Font
.Name = "Times New Roman"
.FontStyle = "Normal"
.Size = 10
'.Strikethrough,.Superscriptn,.Subscript,.OutlineFont
'.Shadow,.Underline ...
'style pseudo bistre sur les lignes de texte de l'objet texte
If (Num_Lgn + Cpt_Lgn_Vide) Mod Modulo = 0 Then
macoul = Coul_Lgn_Pair
Else
macoul = Coul_Lgn_Imp
End If
.Color = macoul
End With
'pour m'amuser
'couleurs psychédéliques sur une chaîne Crit_Chaine
Lgn_Test = Mid(Mon_Text, Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) _
+ 1, Val(Tabl_Pos_Crit_Lgn(Num_Lgn)) _
- Val(Tabl_Pos_Crit_Lgn(Num_Lgn - 1)) - 1)
Pos = InStr(1, Lgn_Test, Crit_Chaine, vbTextCompare)
If Pos > 0 Then
For k = Tabl_Pos_Crit_Lgn(Num_Lgn - 1) + Pos To _
Tabl_Pos_Crit_Lgn(Num_Lgn - 1) + Pos + _
Len(Crit_Chaine)
.Characters(k, 1).Font.Color = Coul_F_Com - k * 2000
Next k
End If
Else
'correction bistre pour ligne vide
Cpt_Lgn_Vide = Cpt_Lgn_Vide + 1
End If
Next Num_Lgn
End With
'libère l'affichage
.Comment.Visible = False
End With
'***
|