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 :

Formatage d'une partie d'une chaine de caractères


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 146
    Par défaut Formatage d'une partie d'une chaine de caractères
    Bonjour,
    Je ne réussis pas à trouver la manière simple d'attribuer le Gras à une portion de chaine alphanumérique...
    (Texte8="Mouvement achat effectué par FL , le #DC . Concerne #Object)

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Texte8 = ActiveCell.Value
    Texte8 = Replace(Texte8, "#DC", Date)    'Renseigne la date courante dans le Texte 8.
    Texte8= Replace(Texte8, "#Object, transformateur)   'Renseigne l'Object,
    C'est bien uniquement le mot "Transformateur" qui devra être affiché en caractères Gras...

    Merci beaucoup pour votre aide éventuelle.

    Max.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    dans cette idée ?

    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
    Sub ioi()
    Dim Chaine As String
     
    Chaine = "transformateur"
     
    With ActiveCell
     
        .Offset(1, 0).Value = Replace(.Value, "#Object", Chaine)
     
        With .Offset(1, 0)
            .Characters(InStr(1, .Value, Chaine), Len(Chaine)).Font.Bold = True
        End With
     
    End With
     
    End Sub
    On prend la valeur de la cellule active
    On remplace #Object par transformateur et on écrit le résultat dans la cellule du dessous
    Ensuite :

    - on détecte l'endroit où commence le mot transformateur (Fonction Instr)
    - on calcule la longueur de transformateur (Fonction Len)
    - on met en gras (Propriété Font.Bold) la portion de cellule (Propriété Characters) calculée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 146
    Par défaut
    Merci bien pour votre rapide réponse.

    C'est tout à fait la fonctionnalité recherchée..

    (Il n'est donc apparemment possible d'effectuer cette opération sans utiliser une cellule "tampon" ?)

    Bien cordialement.

    Max.

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pour répondre à ta dernière question, peux-tu nous préciser ce que tu vas faire de ta phrase après le remplacement et la mise en gras du mot ?

    ton exemple est basé sur un variable contenant cette phrase ... et on ne voit pas ce que tu vas en faire après (et où tu vas restituer cette phrase)

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    une solution certe non conventionelle mais une solution tout de meme
    avec ce principe tu pourrais meme les faire toute d'un coup
    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
    Sub test()
    replacetransformateur ActiveSheet.Cells(1, 1)
    End Sub
    Function replacetransformateur(cel)
        Dim elem
        With CreateObject("htmlfile")
            .body.innerhtml = "<table><tr><TD>" & Replace(cel.Value, "transformateur", "<span>transformateur</span>") & "</TD></tr></table>"
           Set elem = .getelementsbytagname("span")(0)
           elem.Style.fontweight = "Bold"
                    If .parentWindow.clipboardData.setData("Text", .body.innerhtml) Then
                Application.ScreenUpdating = False
                      cel.Parent.Activate
                      cel.Select
                    cel.Parent.Paste
                End If
            End With
        End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    (Il n'est donc apparemment possible d'effectuer cette opération sans utiliser une cellule "tampon" ?)
    Si, tu peux formater directement dans la 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
     
    Sub Test()
     
        Dim Texte As String
     
        Texte = "transformateur"
     
        With ActiveCell
     
            .Value = Replace(ActiveCell, "#DC", Date)
            .Value = Replace(ActiveCell, "#Object", Texte)
            .Characters(InStr(1, ActiveCell.Value, Texte), Len(Texte)).Font.Bold = True
     
        End With
     
    End Sub
    Hervé.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. [RegEx] Retourner une array sur une partie de la chaine
    Par absurdsystem dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2010, 16h03
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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