[VBA / Excel]Ajouter texte dans cellule sans changer sa couleur
Résolu/Fermé
A voir également:
- Vba ecrire du texte dans une cellule
- Dans le texte, un seul mot a réellement été écrit en lettres capitales (majuscules). quel est ce mot ? ✓ - Forum Word
- Excel si cellule contient texte alors ✓ - Forum Excel
- Excel si cellule contient texte alors 1 ✓ - Forum Excel
- Erreur 1004 vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
2 réponses
ccm81
Messages postés
10543
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 mars 2023
2 336
31 mars 2015 à 17:30
31 mars 2015 à 17:30
OK, alors, il faut stocker les couleurs de chaque caractère avant la maj
Cdlmnt
Const coulss = 3
Public Sub essai()
Dim s As String, ls As Long, ss As String, lss As String, cel As Range
Dim tcoul(), k As Long
Set cel = Selection
s = cel.Value
ls = Len(s)
ss = InputBox("donner un texte")
lss = Len(ss)
ReDim tcoul(1 To ls + lss)
For k = 1 To ls
tcoul(k) = cel.Characters(k, 1).Font.ColorIndex
Next k
For k = ls + 1 To ls + lss
tcoul(k) = coulss
Next k
cel.Value = s & ss
For k = 1 To ls + lss
cel.Characters(k, 1).Font.ColorIndex = tcoul(k)
Next k
End Sub
Cdlmnt
ccm81
Messages postés
10543
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
18 mars 2023
2 336
31 mars 2015 à 16:26
31 mars 2015 à 16:26
Bonjour,
il te faut peut être récupérer la couleur de la première partie et l'appliquer aussi au résultat
exemple
Cdlmnt
il te faut peut être récupérer la couleur de la première partie et l'appliquer aussi au résultat
exemple
Const coulss = 3
Public Sub essai()
Dim s As String, ls As Long, couls As Long, ss As String, lss As String, cel As Range
Set cel = Selection
s = cel.Value
couls = cel.Font.ColorIndex
ls = Len(s)
ss = InputBox("donner un texte")
lss = Len(ss)
cel.Value = s & ss
cel.Characters(1, ls).Font.ColorIndex = couls
cel.Characters(ls + 1, lss).Font.ColorIndex = coulss
End Sub
Cdlmnt
Salut ccm81,
Merci, cela marche dans certains cas.
Le problème est que le rajout de texte d'une certaine couleur se fait dans une boucle en fonction de conditions et que l'objectif est que seules certaines parties soit d'une certaine couleurs : Par exemple si on a 4 mots à rentrer on veut peut être (en fonction de boucles if) que 2 soient en rouge, 2 en noirs et peut être en alterné (j'aurais du le préciser dans ma question)
Au moment où on rajouterait donc du texte on pourrait se retrouver dans le cas où la cellule comporte déjà plusieurs mots de différentes couleurs.
Je pensais qu'il y aurait peut être un moyen de désactiver le fait que la cellule prenne automatiquement la couleur des caractères rajoutés.
Cordialement,
Merci, cela marche dans certains cas.
Le problème est que le rajout de texte d'une certaine couleur se fait dans une boucle en fonction de conditions et que l'objectif est que seules certaines parties soit d'une certaine couleurs : Par exemple si on a 4 mots à rentrer on veut peut être (en fonction de boucles if) que 2 soient en rouge, 2 en noirs et peut être en alterné (j'aurais du le préciser dans ma question)
Au moment où on rajouterait donc du texte on pourrait se retrouver dans le cas où la cellule comporte déjà plusieurs mots de différentes couleurs.
Je pensais qu'il y aurait peut être un moyen de désactiver le fait que la cellule prenne automatiquement la couleur des caractères rajoutés.
Cordialement,
2 avril 2015 à 15:52
Désolé pour la réponse tardive, ça m'a pris pas mal de temps à proprement l'intégrer dans ma macro de base mais la méthode fonctionne très bien et ne rallonge pas trop le temps de fonctionnement.
Merci beaucoup !