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

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

  • test.xlsm
    22.6 KB · Affichages: 2
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

  • VBA Remplacer caractères en cellule tout en conservant les formats.xlsm
    29.8 KB · Affichages: 2
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes