Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1471 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Mise en forme d'un morceau de texte d'un commentaire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mise en forme d'un morceau de texte d'un commentaire

n°1240319
Pingouin34
Nunux rulezzzz
Posté le 07-11-2005 à 13:20:12  profilanswer
 

Yop,
 
J'ai fait une p'tite appli excel en VBA et je voudrais rajouter un commentaire (bon, ça c'est bon) avec des couleurs différents pour certains mots du texte.
Je m'explique, ce comment permet de lister les valeurs de différentes cellules, et je voudrais une couleur par ligne.
 
Voilà déjà mon bout de code :
 

Code :
  1. *snip*
  2.     Set db = OpenDatabase(Worksheets("Accueil" ).lblCheminBase.Caption)
  3.     Set rs = db.OpenRecordset("SELECT entrees.id, entrees.date_debut, entrees.date_fin, " & _
  4.                               "applis.code, applis.nom, " & _
  5.                               "entrees.incident, entrees.resume " & _
  6.                               "FROM entrees, applis " & _
  7.                               "WHERE entrees.appli=applis.id " & _
  8.                               "ORDER BY entrees.date_debut DESC, entrees.id DESC;", dbReadOnly)
  9.    
  10.     i = 0
  11.    
  12.     With rs
  13.         If Not .BOF Then .MoveFirst
  14.         While Not .EOF
  15. *snip, je détaille pas, mais en gros 'strActions = strActions + nouvelle ligne'*               
  16.                 With .Cells(OFFSETY + i, OFFSETX + 4).AddComment
  17.                     .Visible = False
  18.                     .Text strActions
  19.                 End With
  20.                
  21.             End With
  22.             i = i + 1
  23.             .MoveNext
  24.         Wend
  25.     End With


---------------
Nicolede @ Illidan (drood spé aspirine)
mood
Publicité
Posté le 07-11-2005 à 13:20:12  profilanswer
 

n°1242165
dahlo
Posté le 09-11-2005 à 13:40:54  profilanswer
 

A la place de la sieste, par curiosité, un petit bout de code, à adapter.
Tout s'articule sur .Characters(start, length)
La méthode adoptée consiste à se créer un tableau de position de caractères de fin de ligne contenus dans le texte du commentaire à traiter puis, après avoir affecté ce dit commentaire à la cible, modifier la couleur aux lignes définies par le tableau.
Ici une méthode pseudo bistre est utilisée.
La modification de couleur peut très bien être faite sur un mot, voir une bibliothèque de mots, qui seraient contenus dans le texte commentaire à traiter. Genre: déficit an-1 en rouge et gras et demandes d'augmentation de salaire en vert (espoir)  :lol: ...                
 
 

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
'***


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Mise en forme d'un morceau de texte d'un commentaire

 

Sujets relatifs
Lire les 188 derniers octets d'un fichier texte en VB6.0erreur insertion gros bloc de texte dans mySQL
OnMouseOver sur texte dans un tableaumise en forme de texte
flux xml et mise en pageBatch remplacement de texte
Modifier la nième ligne d'un fichier textecomment convertir du texte en numérique
Plus de sujets relatifs à : Mise en forme d'un morceau de texte d'un commentaire


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR