Retour ligne différent dans cellule

Coco-31

XLDnaute Junior
Bonjour le forum,

Je me tourne encore une fois vers vous pour essayer d'écrire un code qui donnera un format différent à chaque ligne contenue dans une cellule.

j'ai des cellules dans lesquelles j'ai fait des retours lignes (Alt+Entrée) ou en activant les retours lignes automatiques.
Je voudrais donner une format différent à chaque ligne. Ce code met la première ligne en rouge et en gras et les lignes suivantes en bleu.
Est il possible d'ajouter un format pour la troisième voire la quatrième ligne

Sub Modif_Lig2()
Dim c As Range, i As Long
For Each c In [C3:C10]
c.Font.Bold = True
c.Font.ColorIndex = 3
i = InStr(c.Value, vbLf)
c.Characters(i + 1).Font.ColorIndex = 5
c.Characters(i + 1).Font.FontStyle = "Normal"
Next c
End Sub

je remercie tous ceux qui prennent le temps de répondre à nos demandes

Cordialement
Coco
 
Dernière édition:

James007

XLDnaute Barbatruc
Re : Retour ligne différent dans cellule

Bonjour Coco,

La première étape va constituer a avoir un compteur qui te permette de savoir combien de lignes tu auras à traiter ...
Code:
        For x = 1 To Len(c)
            Select Case Mid(c, x, 1)
                Case vbLf
                    compt = compt + 1
                Case Else
                     ' rien
            End Select
        Next
MsgBox compt

A +
 

Coco-31

XLDnaute Junior
Re : Retour ligne différent dans cellule

Bonjour James,

Je te remercie d'avoir pris le temps de repondre, mais je n'arrive pas à intégrer ou adapter ton code dans ma macro qui me met la procédure en erreur.
Certainement erreur de ma part.

Merci encore

Coco
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Retour ligne différent dans cellule

Bonjour Coco-31, James007,


Voici un essai :
VB:
Sub test()
Dim laCellule As Range, tabLignes() As Long, tmpStr() As String, i As Long, j As Long, tmp As Long
    
    Set laCellule = Range("A1")
    
    
    'récupérer dans un tableau la position du premier caractère de chaque ligne ainsi que le nombre de caractères de la ligne
    tmpStr = Split(laCellule.Text, vbLf)
    ReDim tabLignes(1 To UBound(tmpStr) + 1, 1 To 2)
    For i = LBound(tmpStr) To UBound(tmpStr)
        tmp = 0
        For j = LBound(tmpStr) To i - 1
            tmp = tmp + Len(tmpStr(j))
        Next j
        tabLignes(i + 1, 1) = tmp + 1 + i
        tabLignes(i + 1, 2) = Len(tmpStr(i))
    Next i
    
    'colorier la première ligne en rouge
    laCellule.Characters(tabLignes(1, 1), tabLignes(1, 2)).Font.Color = RGB(255, 0, 0)
    
    'colorier la deuxième ligne en vert
    laCellule.Characters(tabLignes(2, 1), tabLignes(2, 2)).Font.Color = RGB(0, 255, 0)
    
    'colorier la troisième ligne en bleu
    laCellule.Characters(tabLignes(3, 1), tabLignes(3, 2)).Font.Color = RGB(0, 0, 255)
    
End Sub
a+
 
Dernière édition:

Coco-31

XLDnaute Junior
Re : Retour ligne différent dans cellule

Bonjour Mromain,

Merci pour cette réponse parfaitement claire et marche nikel lorsque le retour ligne est manuel (Alt+Entrée)ce qui me convient parfaitement.
Par contre si on active le renvoi à la ligne automatiquement ce code ne marche plus, est il possible d'envisager une solution pour compléter cette discussion qui pourrait être intéressante et servir de référence.
En tout cas merci encore
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 923
Membres
103 676
dernier inscrit
Haiti