Mise en forme VBA - alterner ligne en gras et en non gras dans une même cellule

Mappie

XLDnaute Junior
Bonjour,

Je souhaite, à l'aide d'une macro, dans une cellule, concaténer les valeurs de plusieurs colonnes et écrire, à la suite, des commentaires, en sautant une ligne dans la même cellule.

Dans un souci de mise en page :
1) J’aimerai que la première ligne soit en gras et la seconde où j’écris mes commentaires manuellement, ne le soit pas.
2) Enfin, j’aimerais concaténer l’ensemble de mes commentaires dans une même cellule en sautant une ligne entre chaque commentaire en conservant cette mise en forme

Grâce à l’aide de plusieurs membres du forum, j’ai déjà les codes pour la concaténation, en revanche, je ne vois pas comment alterner une ligne en gras et une autre pas.

Je vous remercie par avance pour votre aide.
 

Pièces jointes

  • Test_Mise_En_Forme_Concatenation.xlsm
    23.4 KB · Affichages: 47

job75

XLDnaute Barbatruc
Re : Mise en forme VBA - alterner ligne en gras et en non gras dans une même cellule

Bonsoir Mappie,

Une seule macro suffit pour les commentaires et leur synthèse :

Code:
Sub Gras()
Dim col$, c As Range, s, i%, n%
col = "J"
Columns(col).Font.Bold = False
For Each c In Columns(col).SpecialCells(xlCellTypeConstants)
  s = Split(c, vbLf)
  i = 1
  For n = 0 To UBound(s)
    If n Mod 3 = 0 Then c.Characters(i, Len(s(n))).Font.Bold = True
    i = i + Len(s(n)) + 1
  Next
Next
End Sub
Bonne fin de soirée.

Edit : vous pouvez appeler cette macro à la fin de votre macro Comments_synthese.

Merci chère ânesse pour le Like :)

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Mise en forme VBA - alterner ligne en gras et en non gras dans une même cellule

Bonjour mappie, le forum,

Si le nombre de lignes des commentaires est quelconque utiliser :

Code:
Sub Gras()
Dim col$, c As Range, s, i%, n%
col = "J"
Columns(col).Cells.Font.Bold = False
On Error Resume Next 'à cause de la cellule fusionnée
For Each c In Columns(col).SpecialCells(xlCellTypeConstants)
  c.Characters(1, Len(Split(c, vbLf)(0))).Font.Bold = True
  s = Split(c, vbLf & vbLf)
  i = 1
  For n = 1 To UBound(s)
    i = i + Len(s(n - 1)) + 2
    c.Characters(i, Len(Split(s(n), vbLf)(0))).Font.Bold = True
  Next
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Test_Mise_En_Forme_Concatenation(1).xls
    69 KB · Affichages: 35

Mappie

XLDnaute Junior
Re : Mise en forme VBA - alterner ligne en gras et en non gras dans une même cellule

Bonjour job75,

Je vous remercie pour votre code, cela correspond exactement à ce que je recherchais!

Je suis à chaque fois surprise de l'aide apportée par les membres du forum! C'est vraiment très pratique...

Merci encore!

Bon après-midi.
 

job75

XLDnaute Barbatruc
Re : Mise en forme VBA - alterner ligne en gras et en non gras dans une même cellule

Re,

Je préfère ceci :

Code:
Sub Gras()
Dim col$, c As Range, s, i%, n%, s1
col = "J"
Columns(col).Cells.Font.Bold = False
For Each c In Columns(col).SpecialCells(xlCellTypeConstants)
  s = Split(c, vbLf & vbLf)
  i = 1
  For n = 0 To UBound(s)
    s1 = Split(s(n), vbLf)
    If UBound(s1) > -1 Then c.Characters(i, Len(s1(0))).Font.Bold = True
    i = i + Len(s(n)) + 2
  Next
Next
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 881
Membres
103 009
dernier inscrit
dede972