Note: The other languages of the website are Google-translated. Back to English

Comment concaténer des colonnes de cellules et conserver la couleur du texte dans Excel?

Comme nous le savons tous, lors de la concaténation ou de la combinaison de colonnes de cellules en une seule colonne, le formatage des cellules (tel que la couleur de la police du texte, le formatage des nombres, etc.) sera perdu. Cet article, je vais vous présenter quelques astuces pour combiner les colonnes de cellules en une seule et conserver la couleur du texte aussi facilement que possible dans Excel.

Concaténer les colonnes de cellules et conserver la couleur de la police du texte avec le code VBA


Concaténer les colonnes de cellules et conserver la couleur de la police du texte avec le code VBA

Pour terminer cette tâche dans Excel, le code VBA suivant peut vous rendre service, procédez comme suit:

1. Maintenez le ALT + F11 clés pour ouvrir le Microsoft Visual Basic pour applications fenêtre.

2Cliquez sur insérer > Moduleet collez le code suivant dans le Fenêtre du module.

Code VBA: concaténer les colonnes de cellules et conserver la couleur du texte:

Sub MergeFormatCell()
'Updateby Extendoffice
    Dim xSRg As Range
    Dim xDRg As Range
    Dim xRgEachRow As Range
    Dim xRgEach As Range
    Dim xRgVal As String
    Dim I As Integer
    Dim xRgLen As Integer
    Dim xSRgRows As Integer
    Dim xAddress As String
    On Error Resume Next
    xAddress = ActiveWindow.RangeSelection.Address
    Set xSRg = Application.InputBox("Please select cell columns to concatenate:", "KuTools For Excel", xAddress, , , , , 8)
    If xSRg Is Nothing Then Exit Sub
    xSRgRows = xSRg.Rows.Count
    Set xDRg = Application.InputBox("Please select cells to output the result:", "KuTools For Excel", , , , , , 8)
    If xDRg Is Nothing Then Exit Sub
    Set xDRg = xDRg(1)
    For I = 1 To xSRgRows
        xRgLen = 1
        With xDRg.Offset(I - 1)
            .Value = vbNullString
            .ClearFormats
			.NumberFormat = "@"
            Set xRgEachRow = xSRg(1).Offset(I - 1).Resize(1, xSRg.Columns.Count)
            For Each xRgEach In xRgEachRow
                .Value = .Value & Trim(xRgEach.Value) & " "
            Next
            For Each xRgEach In xRgEachRow
                xRgVal = xRgEach.Value
                With .Characters(xRgLen, Len(Trim(xRgVal))).Font
                .Name = xRgEach.Font.Name
                .FontStyle = xRgEach.Font.FontStyle
                .Size = xRgEach.Font.Size
                .Strikethrough = xRgEach.Font.Strikethrough
                .Superscript = xRgEach.Font.Superscript
                .Subscript = xRgEach.Font.Subscript
                .OutlineFont = xRgEach.Font.OutlineFont
                .Shadow = xRgEach.Font.Shadow
                .Underline = xRgEach.Font.Underline
                .ColorIndex = xRgEach.Font.ColorIndex
                End With
                xRgLen = xRgLen + Len(Trim(xRgVal)) + 1
            Next
        End With
    Next I
End Sub

3. Puis appuyez F5 clé pour exécuter ce code, et une boîte de dialogue s'affiche pour vous rappeler de sélectionner la plage de données que vous souhaitez combiner avec la couleur du texte, voir capture d'écran:

4. Et puis cliquez OK, une autre boîte de dialogue est apparue, veuillez sélectionner les cellules dans lesquelles vous souhaitez afficher les résultats combinés, voir capture d'écran:

5. Puis clique OK bouton, les colonnes ont été concaténées sans perdre la couleur du texte comme illustré ci-dessous:


Les meilleurs outils de productivité de bureau

Kutools for Excel Résout la plupart de vos problèmes et augmente votre productivité de 80 %

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2021 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (12)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Ce code fonctionne très bien. Mais comment ajouter un espace avant ou après le texte ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Cette méthode fonctionne bien, jusqu'à ce que xRgLen soit supérieur à 255.
Il semble que ce paramètre est un octet :-(
Comment cette limitation peut-elle être dépassée ?
Ce commentaire a été minimisé par le modérateur sur le site
Fantástica la macro de concatenar cadena de texto conservando formato de origen. Dans mon cas, aucune fonction avec F5, pero en la pestaña macro, modificar y opciones me permite entrar el modo de ejecucion with CTRL+letra and funciona de maravilla. Merci beaucoup.
Ce commentaire a été minimisé par le modérateur sur le site
Habria manera de hacerlo con números ?
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour le code.
Si le texte a "( )", par exemple "tomate (tomates)". Cela ne fonctionne pas aussi bien. Y a-t-il quelque chose à modifier pour travailler avec "( ) " ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Rah,
Comment ca va? Si le texte contient "( )", nous n'avons pas besoin de modifier le code VBA. Veuillez voir la capture d'écran, le texte "tomate (tomates)" peut être combiné avec succès avec d'autres colonnes de cellules en une seule colonne. J'espère que cela peut vous aider.
Sincèrement,
Mandy
Ce commentaire a été minimisé par le modérateur sur le site
merci pour le code!
Peut-il être automatiquement mis à jour la colonne de concaténation en cas de modification?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Kathy,
Désolé, pour le moment, il n'y a pas de bon moyen de le faire, vous devez réexécuter le code après avoir modifié le contenu de la cellule. 😂
Merci !
Ce commentaire a été minimisé par le modérateur sur le site
D'accord, merci pour votre réponse
Ce commentaire a été minimisé par le modérateur sur le site
5. Remarque : Si les données à combiner incluent des nombres, le code macro ne peut pas fonctionner correctement.

Cependant, si vous insérez du code :
.NumberFormat = "@"
(après:
.ClearFormats
) entre 24 et 25 numéros de ligne, peut-être que ça marche.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, Mariusz
Merci beaucoup pour votre commentaire, ça marche bien. Nous avons mis à jour le code dans cet article.
Merci encore! 👍
Ce commentaire a été minimisé par le modérateur sur le site
Je t'en prie! J'aime 🥰 les conseils très différents et intéressants sur ce site.
Il n'y a pas encore de commentaires postés ici

Nous suivre

Copyright © 2009 - www.extendoffice.com. | Tous les droits sont réservés. Alimenté par ExtendOffice. | | Plan du site
Microsoft et le logo Office sont des marques commerciales ou des marques déposées de Microsoft Corporation aux États-Unis et / ou dans d'autres pays.
Protégé par Sectigo SSL