Marquer un caractère précis dans une chaine de caractères

ghaisse

XLDnaute Nouveau
Bonjour à tous,
Voici mon problème.
J'ai 2 cellules texte que je souhaite concaténer, mais en les séparant d'un pipe "|".
Pour pouvoir visualiser l'endroit précis de la concaténation , je souhaite appliquer un format de police gras, taille 10 de couleur rouge (par exemple) uniquement sur le caractère pipe.

Autre possibilité qui m'intéresserait :
Dans ma cellule concaténée, appliquer un format de police différent pour chacun des 2 textes concaténés.

Est-ce réalisable à l'aide de fonctions Excel ou en VBA ?
Merci pour l'aide que vous pourrez m'apporter.
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Marquer un caractère précis dans une chaine de caractères

Bonjour

voici un code à adapter

Code:
Sub toto()
nbre1 = Len(Range("A1"))
nbre2 = Len(Range("B1"))
Range("C1") = Range("A1") & "|" & Range("B1")
With Range("C1")
    .Characters(Start:=1, Length:=nbre1).Font.ColorIndex = 4
    .Characters(Start:=nbre1 + 1, Length:=1).Font.ColorIndex = 3
    .Characters(Start:=nbre1 + 1, Length:=1).Font.FontStyle = "Gras"
    .Characters(Start:=nbre1 + 2, Length:=nbre2).Font.ColorIndex = 5
End With

End Sub
 

vbacrumble

XLDnaute Accro
Re : Marquer un caractère précis dans une chaine de caractères

Bonjour tous


Pour jouer un peu plus avec les With :)
(et sans la permission de Pascal :D)

Code:
Sub toto()
nbre1 = Len([A1]): nbre2 = Len([B1])
With [C1]
    .Value = [A1] & "|" & [B1]
    .Characters(1, nbre1).Font.ColorIndex = 4
        With .Characters(nbre1 + 1, 1).Font
            .ColorIndex = 3
            .FontStyle = "Gras"
        End With
    .Characters(nbre1 + 2, nbre2).Font.ColorIndex = 5
End With
End Sub

A+
 

LPandre

XLDnaute Impliqué
Re : Marquer un caractère précis dans une chaine de caractères

Super ces codes, mais comment faire la boucle si on a plusieurs cellules à concatener du genre xx lignes , par ce qu'en plus le nombre de lignes peut varier !

Par avance merci.

@+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Marquer un caractère précis dans une chaine de caractères

re

tu peux adapter ainsi

Code:
Sub toto()
Nbreligne = range("A65536").end(xlup).row
for x = 1 to NbreLigne
nbre1 = Len(Range("A" & x))
nbre2 = Len(Range("B" & x))
Range("C" & x) = Range("A" & x) & "|" & Range("B" & x)
With Range("C" & x)
    .Characters(Start:=1, Length:=nbre1).Font.ColorIndex = 4
    .Characters(Start:=nbre1 + 1, Length:=1).Font.ColorIndex = 3
    .Characters(Start:=nbre1 + 1, Length:=1).Font.FontStyle = "Gras"
    .Characters(Start:=nbre1 + 2, Length:=nbre2).Font.ColorIndex = 5
End With
Next

End Sub
 

vbacrumble

XLDnaute Accro
Re : Marquer un caractère précis dans une chaine de caractères

Re



En bouclant


Code:
Sub totoboucle()
'modif suite remarques de PascalXLD
Dim Nbreligne as Long, i as long
Nbreligne = Range("A65536").End(xlup).row
For i = 1 To Nbreligne
With Cells(i, 3)
    .Value = Cells(i, 1) & "|" & Cells(i, 2)
    .Characters(1, Len(Cells(i, 1))).Font.ColorIndex = 4
        With .Characters(Len(Cells(i, 1)) + 1, 1).Font
            .ColorIndex = 3
            .FontStyle = "Gras"
        End With
    .Characters(Len(Cells(i, 1)) + 2, Len(Cells(i, 2))).Font.ColorIndex = 5
End With
Next
End Sub

edit: désolé pour la collision

A+
 
Dernière édition:

PascalXLD

XLDnaute Barbatruc
Modérateur
Re : Marquer un caractère précis dans une chaine de caractères

Re

De rien pour la collision

Perso je préfère récuperer le nombre de ligne en début de macro
Car si je ne me trompe pas à mettre le [A65536].End(xlUp).Row dans la boucle tu recalcules à chaque tour la dernière ligne et cela n'est pas très optimisé
 

CelluleVide

XLDnaute Occasionnel
Re : Marquer un caractère précis dans une chaine de caractères

Bonjour a tous,

Ci-joint une petite macro qui permet de choisir le mot et la couleur du coloriage.

Bidouillée a partir des infos de merveilleux forum...

A+
 

Pièces jointes

  • Colormot.xls
    46 KB · Affichages: 102
  • Colormot.xls
    46 KB · Affichages: 110
  • Colormot.xls
    46 KB · Affichages: 105

ghaisse

XLDnaute Nouveau
Re : Marquer un caractère précis dans une chaine de caractères

Je vous remercie pour votre aide précieuse.

Les 2 solutions que vous m'avez proposées sont très efficaces.

CelluleVide, comment intégrer cette macro dans mon classeur de macro perso.xls pour pouvoir l'utiliser dans n'importe quel fichier ?
J'ai créé un nouveau module dans mon classeur Perso.xls. J'y ai collé le code du module du fichier colormot.xls, mais ça ne fonctionne pas quand je veux lancer la macro dans un autre fichier que colormot.xls

Je ne l'ai pas précisé, mais je travaille avec Excel 2003.
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 893
Membres
103 982
dernier inscrit
krakencolas