Microsoft Word :Temps mis pour ombrer une table

Fermé
JeanTibar - 4 sept. 2018 à 16:57
 Utilisateur anonyme - 5 sept. 2018 à 05:06
Bonjour,
j'aime bien dans une grande table ombrer une ligne sur deux, cela la rend plus lisible.

Le code est simple en Word basic :

For ii = 1 To nRows Step 2
sTbl.Rows(ii).Select: Selection.Shading.BackgroundPatternColor = wdColorGray25
Next

où, évidemment, sTbl est la table, et nRows son nombre de lignes.

Sauf que cela prend un temps horrible, dès que la table est grande : 103 sec si nRows=2000, 224 sec si NRows=3000, avec un PC rapide (I5-3570, Office 2007 sous Windows 8.1).
Et c'est encore plus si on ne masque pas la repagination, et la mise à jour de l'écran !


En comparaison, la même chose en Excel est très rapide, avec un code pourtant plus complexe :

For ii = 1 To nRows Step 2
Rows(ii).Select
With Selection.Interior
.Pattern = xlSolid : .PatternThemeColor = xlThemeColorDark1
.ThemeColor = xlThemeColorDark1: .TintAndShade = -0.14996795556505
.PatternTintAndShade = -0.14996795556505
End With
Next

il faut , avec nRows=3000, 0,2sec pour ombrer le tableau, 1000 fois moins qu'en Word !

A la limite, il est plus rapide de faire démarrer Excel par le macro, d'y transférer le tableau, de l'ombrer, de retransférer le résultat dans Word, et de fermer Excel ! Mais c'est évidemment une solution bizarre...
Quelqu'un peut-il m'aider à accélérer cet ombrage en restant dans Word ?
A voir également:

2 réponses

Raymond PENTIER Messages postés 58662 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 24 septembre 2024 17 200
4 sept. 2018 à 22:59
Non : c'est ainsi que ça marche.
Et pourquoi vouloir défoncer une porte ouverte ?
C'est inutile d'écrire une macro, puisque le travail est déjà fait !
1
Utilisateur anonyme
Modifié le 5 sept. 2018 à 05:30
Bonjour,
A tout hasard, et si vous avez une version ancienne d'Excel, vous pourriez essayer ceci :
Sélectionner la plage concernée, aller sur format/mise en forme conditionnelle, saisir dans "la formule est : "
=mod(ligne();2)
puis aller dans "format", toujours dans mise en forme conditionnelle, et choisir la couleur désirée.
Astuce trouvée il y a fort longtemps sur Internet, gardée dans un coin de mon ordinateur et jamais utilisée...
Cordialement,
Alain
0