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

Macros et VBA Excel Discussion :

Concaténation en conservant le format [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Par défaut Concaténation en conservant le format
    Bonjour,
    J'espère que quelqu'un pourrait me donner des conseils pour résoudre un problème en vba sous excel 2007.

    En fait je développe une macro excel qui lance une requête Sql et récupère des données d'une base de donnée, je nomme la feuille de résultat : "extract"
    après je compare la feuille "extract"avec une autre feuille "follow_up" afin de mettre cette dernière à jour.

    J'ai un soucis de concaténation des cellules tout en gardant le format, je m'explique :
    feuille(1).cells(1,1) = A;B;C (avec B en bold)
    feuille(2).cells(1,1) = D (en rouge)

    J'aimerai bien concaténer les deux cellules pour avoir:
    feuille(3).cells(1,1) = A;B;C;D (tel que B est tjrs en Bold, et D en rouge)

    J'arrive pas a conserver le format des valeurs à l’intérieur de la cellule quand je fais un copy/paste ( je sais comment garder le format de la cellule entière mais pas des valeurs spécifiques)

    Est-ce que quelqu'un aura une idée pour résoudre ce problème?

    Merci d'avance!!

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Rayan,

    Regarde la méthode

    qui te permettra de modifier la police d'une sous-chaîne de caractères.

    Utile, notamment si l'on veut faire précéder un numéro de téléphone (ou fax, ou mail, ou site...) d'un caractère spécial.

    Salut à nouveau,

    Le code suivant génère la concaténation des cellules en colonnes A et B vers la colonne C de toutes les lignes d'une feuille, en respectant les polices.

    (à adapter)

    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
    Option Explicit
     
    Public Sub ESSAI()
     
    Dim sh As Worksheet
    Dim dern As Integer
    Dim l As Byte
    Dim a As Byte, b As Byte
    Dim i As Byte, j As Byte
     
    Set sh = Worksheets(1)
     
    With sh
        dern = .Cells(.Rows.Count, 1).End(xlUp).Row
        For l = 1 To dern
            a = Len(.Range("A" & l))
            b = Len(.Range("B" & l))
            .Range("C" & l).Value = .Range("A" & l) & .Range("B" & l)
            For i = 1 To a
                With .Range("C" & l).Characters(i, 1).Font
                    .Bold = sh.Range("A" & l).Characters(i, 1).Font.Bold
                    .Name = sh.Range("A" & l).Characters(i, 1).Font.Name
                    .Color = sh.Range("A" & l).Characters(i, 1).Font.Color
                End With
            Next i
            For j = a + 1 To a + b
                With .Range("C" & l).Characters(j, 1).Font
                    .Bold = sh.Range("B" & l).Characters(j - a, 1).Font.Bold
                    .Name = sh.Range("B" & l).Characters(j - a, 1).Font.Name
                    .Color = sh.Range("B" & l).Characters(j -a, 1).Font.Color
                End With
            Next j
        Next l
    End With
     
    Set sh = Nothing
     
    End Sub
    Reprends-bien ce code ligne par ligne, et reviens si nécessaire.

  3. #3
    Membre confirmé
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Par défaut
    Merci Marcel !!!!
    J'ai adapté le code à mon projet et ça marche parfaitement!

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut concaténation
    Salut Rayan,

    Si le code est effectif, alors tant mieux.

    Ce dont je voudrais être sûr, c'est qu'aucune question ne subsiste quant aux différentes instructions qui le composent, pour toi-même, ou quelque lecteur que ce soit.

    Certes, je ne suis ni un mercatog, un Didier ou un Fring, mais le but du forum est d'amener les différents inscrits à maîtriser au mieux VBA Excel. Pour ce faire, il y a 2 méthodes incontournables : la recherche et les questions.

    Je reste donc à votre disposition.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Concaténer colonne d'une table en conservant le format
    Par joyeux_lapin13 dans le forum Macro
    Réponses: 10
    Dernier message: 17/06/2011, 17h14
  2. Réponses: 2
    Dernier message: 03/04/2009, 14h13
  3. Réponses: 2
    Dernier message: 22/10/2008, 15h36
  4. Concaténer 2 chaine de format différent
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/09/2008, 15h40
  5. Réponses: 1
    Dernier message: 14/05/2007, 03h08

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