Microsoft 365 Difficulté avec la concatenation en conservant la mise à forme

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

cissemk

XLDnaute Nouveau
Bonjour
Est qu'il y a une methode ou code qui permet de concatener des textes en conservant une mise en forme conditionnelle? C'est pour un tableau
tres grand donc manuellement c est pas optimal. Exemple j'extrais quelques lignes de ce tableau

ALGERIA
BENIN
BOTSWANA
BURKINA FASO
BURUNDI
CAMEROON
CAPE VERDE
Je veux avoir le texte avec Algeria, Benin, Botswana, Burkina Faso, Burundi, Cameroon. Merci,
 
Bonjour
Est qu'il y a une methode ou code qui permet de concatener des textes en conservant une mise en forme conditionnelle? C'est pour un tableau
tres grand donc manuellement c est pas optimal. Exemple j'extrais quelques lignes de ce tableau

ALGERIA
BENIN
BOTSWANA
BURKINA FASO
BURUNDI
CAMEROON
CAPE VERDE
Je veux avoir le texte avec Algeria, Benin, Botswana, Burkina Faso, Burundi, Cameroon. Merci,
Bonjour,

Je me demande si c'est possible de concaténer des texte en gardant par exemple "l'italique" ou le "gras" sans passer par VBA...
P.
 
Bonjour Le forum
Est qu'il y a une methode ou code = VBA OUI (code)
  • Formules Excel (=A1&B1) → la mise en forme (gras, couleurs, polices) est perdue, seul le texte est récupéré.
  • VBA Excel → on peut récupérer la mise en forme partiellement (par ex. RichText pour les cellules)
  • Code ci-dessous établis pour etre facilement maintenable pour un débutant et l'agrémenter par la suite.
VB:
Sub ConcatenerAvecFormatsCorrects()
    Dim rng As Range, cell As Range
    Dim cible As Range
    Dim texte As String
    Dim pos As Long
    Dim mots() As String
    Dim formats() As Font
    Dim i As Long, n As Long
 
    ' Définir plage source et cible
    Set rng = Range("A1:A7")
    Set cible = Range("B1")
    cible.Clear
 
    ' Compter combien de cellules non vides
    n = 0
    For Each cell In rng
        If Len(cell.Value) > 0 Then n = n + 1
    Next cell
 
    If n = 0 Then Exit Sub
 
    ' Redimensionner tableaux
    ReDim mots(1 To n)
    ReDim formats(1 To n)
 
    ' 1er passage : stocker texte + formats
    i = 0
    For Each cell In rng
        If Len(cell.Value) > 0 Then
            i = i + 1
            mots(i) = cell.Value
            Set formats(i) = cell.Font
        End If
    Next cell
 
    ' Construire le texte complet
    texte = Join(mots, ", ")
    cible.Value = texte
 
    ' 2e passage : appliquer formats aux segments
    pos = 1
    For i = 1 To n
        With cible.Characters(Start:=pos, Length:=Len(mots(i))).Font
            .Bold = formats(i).Bold
            .Italic = formats(i).Italic
            .Color = formats(i).Color
            .Name = formats(i).Name
            .Size = formats(i).Size
            .Underline = formats(i).Underline
        End With
        pos = pos + Len(mots(i)) + 2 ' +2 pour la virgule + espace
    Next i
End Sub
 
Dernière édition:
- 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

Retour