XL 2016 VBA Remplacer caractères en cellule tout en conservant les formats de caractères au-delà de 255 caractères

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Dudu2

XLDnaute Barbatruc
Bonjour

Je me heurte à une limitation Excel VBA.
Pour remplacer des caractères en cellule tout en conservant leurs formats on ne peut pas utiliser la propriété .Value.
Il faut y aller avec .Characters.

Si la reconnaissance d'un caractère avec Cellule.Characters(i, 1).Text fonctionne quelque soit i et le nombre de caractères,
- Cellule.Characters(i, 1).Text = <caractère>
- Cellule.Characters(i, 1).Delete

- Cellule.Characters(i, 0).Insert
ne fonctionnent que si Cellule.Characters.Count <= 255 (et encore ! parfois seulement 254 !). Et sont TOTALEMENT inopérant au-delà.

Y a-t-il un moyen de contourner cette limitation ?
 

Pièces jointes

Dernière édition:
Solution
Bon, remplacer des caractères en cellule tout en conservant les formats n'a rien de simple !

- Pour les chaines de moins de 255 caractères, on peut taper directement dans les Cellule.Characters().Delete et .Insert pour faire la substitution de valeur, donc c'est assez rapide.

- Pour les chaines de plus de 255 caractères (y compris 255 caractères par précaution) il faut mémoriser les propriétés de chaque caractère avant de faire la substitution de valeur dans la cellule par remplacement dans le Cellule.Value puis ensuite restorer les 14 propriétés (12 en fait). de chaque caractère.
Comme il y a beaucoup de propriétés qu'on va chercher ou définir directement en...

Dudu2

XLDnaute Barbatruc
Bon, remplacer des caractères en cellule tout en conservant les formats n'a rien de simple !

- Pour les chaines de moins de 255 caractères, on peut taper directement dans les Cellule.Characters().Delete et .Insert pour faire la substitution de valeur, donc c'est assez rapide.

- Pour les chaines de plus de 255 caractères (y compris 255 caractères par précaution) il faut mémoriser les propriétés de chaque caractère avant de faire la substitution de valeur dans la cellule par remplacement dans le Cellule.Value puis ensuite restorer les 14 propriétés (12 en fait). de chaque caractère.
Comme il y a beaucoup de propriétés qu'on va chercher ou définir directement en cellules, ça prend pas mal de temps.
Sur certaines propriétés que j'ai renoncées à gérer (.ThemeColor & .Style), le simple Get ou Set de la propriété perturbe complètement la structure de la chaîne.
 

Pièces jointes

Dernière édition: