Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Profiler une macro Word.

12 réponses
Avatar
Cégé
Bonjour

J'ai un Word 2002 sur un XP Pro
Je désire "profiler" une énorme macro (env. 8k lignes !) VBA dont je dispose
du code dans un modèle .dot
Il faut faire des mesure de performance et tenter une optimisation.
Quel outil puis-je utiliser ?

J'ai téléchargé VB Watch 2 mais j'ai des problèmes d'installation (un ocx
non chargé) et je n'ai pas trouvé d'information sur VBA dans l'aide
(documents office).
Dois-je persévérer dans cette direction ?

Merci

-- Christian

10 réponses

1 2
Avatar
geo
Bonsoir

-----Message d'origine-----
Bonjour


Perso je ne sais aps ce que c'est "profiler".

[...]
(un ocx non chargé)


On eput essayer de trouver

Dois-je persévérer dans cette direction ?
Il y a la méthode de la préhistoire qui consiste à écrire

l'heure de passage à des points précis et des éléments
d'appéciation : compteur de boucle, emplacement sur le
document etc.

Bien sûr il y a des "recettes" : éviter les variables en
variant, limiter les numériques à la taille utile,
integer, long
éviter des nombres "flottants" quand on peut utiliser des
entiers.
etc etc.
M'enfin t'attends pas à des merveilles d'un langage
interprété.
Après c'est une question d'oganisation, ; lancer la amcro
le vendredi soir par exemple :-)

Ca tombe bien : bonne fin de semaine.

Avatar
Guy Moncomble
Bonjour à tous,
dans le message <bntslh$1k7$,

| Bonjour
|
| J'ai un Word 2002 sur un XP Pro
| Je désire "profiler" une énorme macro (env. 8k lignes !) VBA dont je
| dispose du code dans un modèle .dot
| Il faut faire des mesure de performance et tenter une optimisation.
| Quel outil puis-je utiliser ?
|
| J'ai téléchargé VB Watch 2 mais j'ai des problèmes d'installation (un
| ocx non chargé) et je n'ai pas trouvé d'information sur VBA dans
| l'aide (documents office).
| Dois-je persévérer dans cette direction ?

Non VB watch concerne VB, pas VBA !
J'ai comme un petit doute sur la version d'évaluation, vu le prix de la
version complète. Enfin je ne sais pas comment il peut fonctionner sans
instrumenter le code (de mon temps c'est comme cela que fonctionnaient
les produits de ce type, Verilog par exemple).
Cela dit Geo a raison, tu peux faire un minimum d'évaluation en stockant
par exemple dans des variables static la durée d'exécution de chaque
procédure. Rien que cela va t'occuper un moment. Et je ne te parle pas
de l'analyse et de l'interprétation des résultats.
--
A+

GMO MVP WORD
Avatar
Anacoluthe
Bonjour !

"Cégé" nous a écrit ...
J'ai un Word 2002 sur un XP Pro
Je désire "profiler" une énorme macro (env. 8k lignes !) VBA dont je
dispose du code dans un modèle .dot
Il faut faire des mesure de performance et tenter une optimisation.


Si je peux me permettre un avis très très très personnel, et
j'espère ne pas trop choquer mes petits camarades VBArtistes :

Une macro VBA de 8000 lignes, c'est pas sérieux.
VBA n'est certainement pas l'outil qu'il fallait utiliser.
Optimiser un tel code est à mourir de rire. Optimiser du vba !
On perdra beaucoup moins de temps en flanquant
tout à la poubelle et en repensant le développement.
Si l'application marche 'bien' ne modifiez rien, pensez
juste à son futur remplacement. Par la même occasion,
remplacez l'informaticien ou les informaticiens rigolos
qui vous ont bricolé ça :-)
J'avoue mourir d'envie de voir l'énormité de ces 8000 lignes ;-)

C'est un peu comme si je vous disais : j'ai construit dans mon
jardin un garage avec des 'Lego' , que me conseillez-vous
comme ciment pour que ma voiture soit à l'abri cet hiver ?

D'accord, d'accord je provoque ! :-) )))
Bon week-end à tous !

Anacoluthe
« La provocation est une façon de remettre la réalité sur ses pieds. »
- Bertolt BRECHT

Avatar
nuindacil
Bonsoir la compagnie,

Tiens, voilà les 3 macroteurs réunis... Alors, on se fait une petite
belote ?... Vous avez trouvé le 4e, on dirait !!! :-))))))))))))))

nuindacil
Club des AMIS

Anacoluthe a écrit:
Bonjour !

"Cégé" nous a écrit ...

J'ai un Word 2002 sur un XP Pro
Je désire "profiler" une énorme macro (env. 8k lignes !) VBA dont je
dispose du code dans un modèle .dot
Il faut faire des mesure de performance et tenter une optimisation.



Si je peux me permettre un avis très très très personnel, et
j'espère ne pas trop choquer mes petits camarades VBArtistes :

Une macro VBA de 8000 lignes, c'est pas sérieux.
VBA n'est certainement pas l'outil qu'il fallait utiliser.
Optimiser un tel code est à mourir de rire. Optimiser du vba !
On perdra beaucoup moins de temps en flanquant
tout à la poubelle et en repensant le développement.
Si l'application marche 'bien' ne modifiez rien, pensez
juste à son futur remplacement. Par la même occasion,
remplacez l'informaticien ou les informaticiens rigolos
qui vous ont bricolé ça :-)
J'avoue mourir d'envie de voir l'énormité de ces 8000 lignes ;-)

C'est un peu comme si je vous disais : j'ai construit dans mon
jardin un garage avec des 'Lego' , que me conseillez-vous
comme ciment pour que ma voiture soit à l'abri cet hiver ?

D'accord, d'accord je provoque ! :-) )))
Bon week-end à tous !

Anacoluthe
« La provocation est une façon de remettre la réalité sur ses pieds. »
- Bertolt BRECHT




Avatar
Geo
Bonjour Anacoluthe,

Permets moi de ne pas être d'accord avec toi.
Je viens de compter, j'ai un ensemble de macros de 6500 lignes, lignes
commentaires et blanches comprises, je te l'accorde, mais sans toutes
les autres que j'utilise au travail et les "bidouilles" que l'on fait
occasionnellement ou pour le forum..
Comme c'est pour traiter des documents word, je ne vois pas en quoi
j'aurais pu le programmer, si ce n'est en vba.

Bonne fin de semaine
Avatar
Guy Moncomble
Bonjour à tous,
dans le message ,

| Si je peux me permettre un avis très très très personnel, et
| j'espère ne pas trop choquer mes petits camarades VBArtistes :
|
| Une macro VBA de 8000 lignes, c'est pas sérieux.
| VBA n'est certainement pas l'outil qu'il fallait utiliser.
| Optimiser un tel code est à mourir de rire. Optimiser du vba !
| On perdra beaucoup moins de temps en flanquant
| tout à la poubelle et en repensant le développement.
| Si l'application marche 'bien' ne modifiez rien, pensez
| juste à son futur remplacement. Par la même occasion,
| remplacez l'informaticien ou les informaticiens rigolos
| qui vous ont bricolé ça :-)
| J'avoue mourir d'envie de voir l'énormité de ces 8000 lignes ;-)

C'est un avis très partagé Une macro ne devrait pas dépasser une page,
soit environ 63 lignes. Allez disons deux pages et l'on n'en parle plus.
Sinon c'est de la mauvaise programmation impossible à maintenir
correctement. J'avoue que j'ai **une** macro qui fait 400 lignes, mais
elle est totalement linéaire et se contente d'insérer du texte. Il
n'empèche j'aurais du la découper aussi. Tiens d'ailleurs je vais le
faire tout de suite.
Quant à l'optimisation du code VBA, bien sûr que c'est possible, c'est
tout de même un langage assez propre. D'ailleurs les exemples ne
manquent pas, comme :

- ne pas utiliser, quand c'est possible, les références directes à des
objets, très coûteuses en temps d'exécution, dans des boucles
- ne pas écrire de macro. Ouh là, çà c'est de l'optimisation (:-))
--
A+

GMO MVP WORD
Avatar
Geo
Bonsoir Guy et Anacoluthe,


C'est un avis très partagé Une macro ne devrait pas dépasser une
page,

soit environ 63 lignes.


Je fais amende honorable, je n'avais pas attaché
d'importance au "une macro".


--

A+

Avatar
Anacoluthe
Hello la compagnie AMIS ou non !
(Anti Macroteurs Inutilement Superfétatoires - © JièL )

"Cégé" nous a écrit ...
J'ai un Word 2002 sur un XP Pro
Je désire "profiler" une énorme macro (env. 8k lignes !) VBA



Merci à Geo et Guy de réagir à la provoc
(Nuindacil, elle, elle se marre ! ;-) )

Nous sommes donc en gros d'accord : 'une' macro de 8000 lignes
c'est très probablement du top-délire.

Néanmoins, et c'est Guy qui m'y a fait penser avec sa macro
'linéaire' , on peut imaginer se retrouver avec une macro de
cette taille. Oui, tout simplement si on utilise à tour de bras
l'enregistreur de macros pour produire un long document d'une
traite ou en mettant bout à bout des macros enregistrées.
Une telle macro s'apparente alors plus à un script et il est
certain qu'elle mérite d'être optimisée tant l'enregistreur
produit un code lourd, redondant, peu performant :-(

Le conseil souvent donné en vba : utilisez le plus souvent
possible l'enregistreur de macros pour apprendre, pour
tester, pour retrouver des objets, des méthodes ou propriétés,
mais laissez-le tomber complètement dès que vous souhaitez
écrire vos macros :-)

Sortons maintenant du cas de l'enregistreur, et penchons-nous
sur la programmation d'applications pour Word. Geo nous dit :
Comme c'est pour traiter des documents word, je ne vois pas
en quoi j'aurais pu le programmer, si ce n'est en vba.


Pas trop d'accord. À partir d'une certaine taille d'application,
il ne faut plus considérer l'application 'dans Word'
avec son interface, ses fenêtres (Userform), ses boutons,
ses automatismes de toutes sortes tout ça en VBA,
non, il faut concevoir 'Word dans' l'application.
Et ça change tout. Une grosse application utilisant Word
se développe avec d'autres outils qui n'auront aucune
peine à piloter Word en utilisant les mêmes objets, méthodes
et propriétés que nous connaissons bien en vba.

VBA est un langage facile pour l'utilisateur, peu rigoureux,
peu structuré. Cette facilité se paye par un code non
optimisé et par une faiblesse à la maintenance. C'est logique
et universel en programmation. VBA, 'VB pour Applications'
il faut comprendre 'pour utiliser des applications' et
pas vraiment 'pour faire des applications' !

Je dispose probablement comme vous de plusieurs centaines de
lignes de 'briques logicielles' vba qui facilitent la vie
dans Word. Ces macros ne dépassent jamais quelques dizaines
de lignes et mes 'applications' rarement plus d'une ou deux
dizaines de macros. Au delà, et tout particulièrement s'il
s'agit d'applications distribuées (rien à voir avec les
applications que l'on peut faire pour soi ou pour le (la)
collègue du bureau d'à coté !) je maintiens qu'il faut
penser autrement le développement.

Bonne journée

Anacoluthe
« La provocation est une façon de remettre la réalité sur ses pieds. »
- Bertolt BRECHT


Avatar
Geo
Bonsoir à tous

Comme c'est pour traiter des documents word, je ne vois pas
en quoi j'aurais pu le programmer, si ce n'est en vba.


Pas trop d'accord. À partir d'une certaine taille d'application,
il ne faut plus considérer l'application 'dans Word'
avec son interface, ses fenêtres (Userform), ses boutons,
ses automatismes de toutes sortes tout ça en VBA,
non, il faut concevoir 'Word dans' l'application.


Si on part là dessus on va y passer la fin de l'année,
ça tombe bien il n'y a plus que deux mois. :-)

Tout dépend des contraintes, dans mon cas je pars d'un document word
que je restructure entièrement.
Pas de userForms, pas de boutons, heureusement car la compatibilité
avec le Mac ne serait pas gagnée.

C'est un peu comme quand on explique à quelqu'un que ce serait mieux
s'il avait word 2002 ou Excel ou Acces, que sais-je ?
S'il n'a pas le choix (ou les moyens) c'est peine perdue.


Bonne fin de semaine


Avatar
Cégé
"Anacoluthe" a écrit dans le message news:

Bonjour !

"Cégé" nous a écrit ...
J'ai un Word 2002 sur un XP Pro
Je désire "profiler" une énorme macro (env. 8k lignes !) VBA dont je
dispose du code dans un modèle .dot
Il faut faire des mesure de performance et tenter une optimisation.


Si je peux me permettre un avis très très très personnel, et
j'espère ne pas trop choquer mes petits camarades VBArtistes :

Une macro VBA de 8000 lignes, c'est pas sérieux.


Remarques

-C'est l'ensemble du code. Il y a plusieurs fonction et une seule macro
"visible" genre "main()".
-Je n'en suis pas l'auteur...
-J'ai dit "énorme".

VBA n'est certainement pas l'outil qu'il fallait utiliser.


Je le pense aussi.

Optimiser un tel code est à mourir de rire. Optimiser du vba !


Ca c'est con : VBA est un langage comme un autre.

On perdra beaucoup moins de temps en flanquant
tout à la poubelle et en repensant le développement.
Si l'application marche 'bien' ne modifiez rien, pensez
juste à son futur remplacement. Par la même occasion,
remplacez l'informaticien ou les informaticiens rigolos
qui vous ont bricolé ça :-)


C'est un client (prestigieux).

J'avoue mourir d'envie de voir l'énormité de ces 8000 lignes ;-)
C'est un peu comme si je vous disais : j'ai construit dans mon
jardin un garage avec des 'Lego' , que me conseillez-vous
comme ciment pour que ma voiture soit à l'abri cet hiver ?

D'accord, d'accord je provoque ! :-) )))
Bon week-end à tous !

Anacoluthe
« La provocation est une façon de remettre la réalité sur ses pieds. »
- Bertolt BRECHT


"Culture = confiture" disait ma Grand mère.

Merci quand même pour ces conseils avisés.

-- Christian


1 2