Concaténer en gardant mise en forme conditionnelle

Bonjour à tous,

débutante en VBA je découvre ce forum, une mine d'or !!

Je cherche à concaténer des données tout en conservant le format, j'ai réussi à m'en sortir grâce à une réponse d'eriiic de mars.

Toute fière d'avoir réussi à adapter le code à mon cas, je le test sur mes valeurs réelles, et là je découvre que VBA ne reconnait pas le format issu d'une mise en forme conditionnelle ...

Mon problème : je veux concaténer des données issue d'une extraction d'un logiciel, et je souhaite garder la mise en gras qui se fait via la mise en forme conditionnelle .

Si vous quelqu'un à une idée ...

Merci beaucoup !( grâce à vous j'ai déjà bien progressé !)

Voici le code que j'ai :

Sub test()
    Dim ch  As String
    Dim i, lg As Long
    Dim cel As Range

    Selection.SpecialCells(xlCellTypeVisible).Select

        For Each cel In Selection

            ch = ch & cel.Value & Chr(10)
            [j1].Value = ch
        Next cel

        For Each cel In Selection

            lg = Len(cel)

            With [j1].Characters(i + 1, i + lg).Font
                .Color = cel.Font.Color
                .Bold = cel.Font.Bold
                .Italic = cel.Font.Italic
            End With

            i = i + lg + 1

        Next cel

End Sub
28test.xlsm (15.92 Ko)

Bonjour,

tu devrais utiliser la balise Code (bouton en haut quand tu édites ton post) et indenter ton code que ce soit plus agréable à lire (=+ de réponses).

Parce que là personne n'a envie de lire...

Sur une MFC il faut utiliser la condition que tu y as mise.

Par exemple : en gras si la 3ème cellule à droite = 0

Dans le code tu testes cette 3ème cellule à droite et tu mets en gras si =0

eric

bonsoir,

une manière de faire, faire le même test que dans la mise en forme conditionnelle.

Sub test()
    Dim ch  As String
    Dim i, lg As Long
    Dim cel As Range

    Selection.SpecialCells(xlCellTypeVisible).Select

        For Each cel In Selection

            ch = ch & cel.Value & Chr(10)
            [j1].Value = ch
        Next cel

        For Each cel In Selection

            lg = Len(cel)

            With [j1].Characters(i + 1, i + lg).Font
                .Color = cel.Font.Color
                If Val(cel) > Range("F2") Then .Bold = True Else .Bold = False
                .Italic = cel.Font.Italic
            End With
            i = i + lg + 1
        Next cel

End Sub

Bonjour à tous les deux,

merci de m'avoir répondu.

Eriiic, lorsque j'appuie sur le bouton code, j'obtiens

. Je ne vois pas comment garder la mise en forme de mon code ...

h2So4, ça fonctionne super. Par contre je ne comprends pas pourquoi la fonction val retrouve la valeur de la première cellule concaténée et non de la deuxième. Ça me va pour cette fois mais c'est au cas où j'ai besoin de mettre la condition sur la seconde

J'avais contourné le problème par

  • mettre mes cellules en couleur par MFC
  • filtrer selon la couleur
  • sélectionner les cellules visible et les mettre en gras
  • annuler le filtre

Mais ta solution me plait mieux !!

Bonne journée !

Bonjour,

Eriiic, lorsque j'appuie sur le bouton code, j'obtiens

. Je ne vois pas comment garder la mise en forme de mon code ...

il faut le sélectionner avant de cliquer sur le bouton.

eric

APN a écrit :

h2So4, ça fonctionne super. Par contre je ne comprends pas pourquoi la fonction val retrouve la valeur de la première cellule concaténée et non de la deuxième. Ça me va pour cette fois mais c'est au cas où j'ai besoin de mettre la condition sur la seconde

en effet c'est une solution de facilité après avoir vu que la valeur qui t'intéressait se trouvait en début de chaine, si tu veux la seconde, il fautdra utiliser une autre technique (combinaision instr +mid ou right voire split ...)

val convertit en nombre la valeur trouvée en début de chaine alphanumérique (en s'arrêtant au premier caractère qui n'est pas 0123456789-+.)

Encore merci à vous deux !

1 : je sais maintenant poster du code un peu plus lisible

2 : j'ai résolu mon problème, et j'ai même compris la solution !!

Bonne journée

APN

Rechercher des sujets similaires à "concatener gardant mise forme conditionnelle"