IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Respecter la mise en forme et concaténer


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Points : 17
    Points
    17
    Par défaut Respecter la mise en forme et concaténer
    Bonjour à toutes et à tous,

    Y aurait-il une bonne âme qui pourrait me venir en aide?

    J'esssaye de copier des valeurs d'une feuille ('FORMULAIRE' cells B6 et B7) en gardant leur mise en forme (gras/majuscule pour B6 et gras pour B7) et de les recopier dans une cellule d'une autre feuille qui contiendrait déjà du texte avant et après les dites cellules...

    Cela devrait donner ceci: 'Attendu que le nommé B6 b7 est convoqué...'

    La procedure VBA que j'ai trouvé à l'air de fonctionner sauf que TOUTE la cellule de destination change ...
    Je l'ai testée sur la meme feuille (ne sachant pas très bien comment dire, en VBA, comment copier vers une autre feuille qui s'appellerait 38.)

    La voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Private Sub CommandButton1_Click()
    With Worksheets("FORMULAIRE")
        .Range("g6") = .Range("b6") & " " & .Range("b7")
        Formater .Range("g6"), .Range("b6"), 0
        Formater .Range("g6"), .Range("b7"), Len(.Range("b6")) + 1
     
    End With
    End Sub
     
    Private Sub Formater(RngDest As Range, RngSce As Range, n As Integer)
    Dim d As Integer, i As Integer
    Dim Tb
     
    Tb = Split(RngSce)
    For i = 0 To UBound(Tb)
        d = d + 1
        With RngDest.Characters(d + n, d + n + Len(Tb(i))).Font
            .FontStyle = RngSce.Characters(d, 1).Font.FontStyle
            .Size = RngSce.Characters(d, 1).Font.Size
            .Color = RngSce.Characters(d, 1).Font.Color
            .Underline = RngSce.Characters(d, 1).Font.Underline
        End With
        d = d + Len(Tb(i))
    Next i
    End Sub
    En espérant que mes explications ont été le plus claires possible...

    Merci d'avance

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,
    Penses au balises code (bouton #) c'est plus lisible.

    Citation Envoyé par kerbe Voir le message
    J'esssaye de copier des valeurs d'une feuille ('FORMULAIRE' cells B6 et B7) en gardant leur mise en forme (gras/majuscule pour B6 et gras pour B7) et de les recopier dans une cellule d'une autre feuille qui contiendrait déjà du texte avant et après les dites cellules...
    Tu ne peux pas avoir dans une même cellule une partie en gras et l'autre non.
    Au temps pour moi

    Je l'ai testée sur la meme feuille (ne sachant pas très bien comment dire, en VBA, comment copier vers une autre feuille qui s'appellerait 38.)
    Il faut mettre la feuille devant le range:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Worksheets("38").Range("g6") = .Range("b6") & " " & .Range("b7")
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    Bonjour halaster08

    Pourtant, quand la b6 est en gras noire et la b7 en rouge et que je lance la macro , c'est copié en gardant la mise en forme...

    Mais quand j'y ajoute du texte avant (avec des &: "....." & ".....&) le tout prend la mise en forme (gras noir pour une partie et rouge pour le reste)...

    et le tout dans la même cellule.

    Essaye les lignes de code que j'ai copies, ells sont sûre!

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Voici ce que donne l'enregistreur de macro quand on s'amuse a modifier seulement une partie du texte d'une cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    ActiveCell.FormulaR1C1 = "testtest2"
        With ActiveCell.Characters(Start:=1, Length:=0).Font
            .Name = "Calibri"
            .FontStyle = "Normal"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        With ActiveCell.Characters(Start:=1, Length:=3).Font
            .Name = "Calibri"
            .FontStyle = "Gras"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
        With ActiveCell.Characters(Start:=4, Length:=2).Font
            .Name = "Calibri"
            .FontStyle = "Normal"
            .Size = 11
            .Strikethrough = False
            .Superscript = False
            .Subscript = False
            .OutlineFont = False
            .Shadow = False
            .Underline = xlUnderlineStyleNone
            .ThemeColor = xlThemeColorLight1
            .TintAndShade = 0
            .ThemeFont = xlThemeFontMinor
        End With
    Donc pour arriver a ton bonheur il faut je pense concaténer le texte de tes cellules, tout en comptant le nombre de caractère, et ensuite modifier le format morceau par morceau avec les paramètre start et length.
    A noter quand même que l'enregistreur donne beaucoup plus d'info que ce que tu as besoin, pour le gras par exemple ActiveCell.Characters(Start:=4, Length:=2).Font.FontStyle = "Gras" devrait être suffisant.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

Discussions similaires

  1. [XL-2003] concaténer sans perte de mise en forme
    Par pirot dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/12/2011, 23h13
  2. [XL-2003] Faire un copié collé en respectant la mise en forme
    Par Tober dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/05/2009, 12h59
  3. [A03] mise en forme de champs concaténés
    Par Novalis dans le forum IHM
    Réponses: 6
    Dernier message: 05/03/2009, 16h44
  4. Mise en forme concaténation
    Par Frenchguy dans le forum IHM
    Réponses: 4
    Dernier message: 16/07/2007, 11h13
  5. Affecter une valeur concaténée et mise en forme à un INPUT TEXT
    Par debie1108 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/06/2007, 08h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo