XL 2010 Formatage partiel du texte d'une cellule

pruvieros

XLDnaute Nouveau
J'ai deux cellules A1 et B1 contenant exactement le même texte, mais qui ne sont pas formatées pareil (bordures, taille de police, remplissage, etc.)
Je veux que B1 contienne les mêmes mots en gras que A1, sans modifier quoi que ce soit d'autre dans son formatage.

J'ai donc fait une boucle sur le texte de A1 pour détecter si chacune de ses lettres est en gras ou pas:

Code:
For i = 1 To Len([A1])

If [A1].Characters(i, 1).Font.Bold = True Then [B1].Characters(i, 1).Font.Bold = True

Next i

Ce code fonctionne, mais prend plusieurs secondes à s'exécuter lorsque le texte dans A1 devient un peu long (>200 lettres). Je voudrais donc l'optimiser.

Mon idée est de placer l'objet {A1].characters dans une variable, dans le but de détecter plus rapidement les lettres qui sont en gras.

J'ai donc créé l'objet [A1].characters


Code:
set [A1].characters

Mais comment puis-je accéder à la propriété "gras/pas gras" de cet objet?
J'aurais bien aimé obtenir un array dont la dimension soit le nombre de lettres de A1, et qui contiendrait un 1 pour chaque lettre en gras et un 0 pour chaque lettre qui n'est pas en gras... mais je n'y arrive pas!

Merci par avance pour vos lumières...

Pruvieros
 

pruvieros

XLDnaute Nouveau
Oui, mais je ne vois pas comment réappliquer toutes les caractéristiques de formatage de B1 sauf le bold...
A moins de faire une macro à rallonge, parce qu'il y a une grande quantité de formats (Remplissage, alignement, police, taille, bordures, etc.)
 

D.D.

XLDnaute Impliqué
En fait il faut stocker dans une autre cellule le format de B1 (ex: en A2).
Copier ensuite la cellule de A1 en B1.
Puis recopier le format de A2 en B1.
Quelque chose comme ca:
Code:
Sub YoMan()
    Range("B1").Copy
    Range("A2").PasteSpecial Paste:=xlPasteFormats
    Range("A1").Copy Destination:=Range("B1")
    Range("A2").Copy
    Range("B1").PasteSpecial Paste:=xlPasteFormats
    Range("A2").Clear
End Sub
C'est pas très propre, mais ca a l'air de marcher.
 

pruvieros

XLDnaute Nouveau
Effectivement, ça marche.
J'aurais préféré une solution qui ne nécessite pas de passer par une autre cellule de feuille de calcul, pour éviter d'écraser d'éventuelles infos que les utilisateurs saisiraient en A2 (c'est la cellule utilisée dans ton exemple) ou dans toute autre cellule...
 

Discussions similaires

Statistiques des forums

Discussions
312 191
Messages
2 086 051
Membres
103 108
dernier inscrit
Captain NRJ