Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/12/2011, 17h48   #1
Candidat au titre de Membre du Club
 
Homme Raphael CORNIER-DELABROUILLE
Architecte technique
Inscription : avril 2008
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Raphael CORNIER-DELABROUILLE
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2008
Messages : 20
Points : 13
Points : 13
Par défaut VBA : lenteurs sous Office 2010/2003

Bonjour,
Je constate de nombreuses lenteurs de mes macros VBA écrite sous Word 2003 qui, une fois sous 2010, se retrouvent à ramer énormément.
Mon dernier exemple en date est la suppression de 100 feuilles de styles personnalisées qui sont détruites quasi instantanément sous Word 2003 alors que cela prend presque une minute par style sous Word 2010 (cela dure environ 4 minutes pour effacer les 100 styles sous Word 2003 alors que cela prend presque 4 heures sous Word 2010).

J'ai fait le test sur plusieurs postes avec Office 2010, Vista ou Windows Seven... Office 64 bits ou non... Et les macros vont bien plus vite sous Office 2003 que sous 2010...

Quelqu'un aurait-il une réponse sur l'énigme sur cette lenteur d'Office 2010 qui ralentit énormément toutes les macros, ou presque?
RafCorDel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 18h13   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 339
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 339
Points : 29 248
Points : 29 248
Salut,

Sans le code, difficile de dire ce qui pourrait coincer.

Je ne rencontre pas de problème de vitesse en ce qui concerne la vitesse d'exécution des macro sous 2010, même lorsqu'elles ont été écrite avec 2003.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2011, 18h28   #3
Candidat au titre de Membre du Club
 
Homme Raphael CORNIER-DELABROUILLE
Architecte technique
Inscription : avril 2008
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Raphael CORNIER-DELABROUILLE
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2008
Messages : 20
Points : 13
Points : 13
Citation:
Envoyé par Heureux-oli Voir le message
Salut,

Sans le code, difficile de dire ce qui pourrait coincer.


Hello Heureux-oli, ravi que tu me répondes, merci.
Je fais tourner ma macro en même temps sur la machine aussi n'ai-je pas le code dans l'immédiat mais il ressemble à ça:

Code :
1
2
3
4
5
6
dim i as integer
for i = activedocument.styles.count to 1 step -1
      if left(activedocument.styles(i).name, 4) = "bal_" then
                activedocument.styles(i).delete
      end if
next i
Je parcours tous les styles et s'il s'agit d'un style perso commencant par "bal_" alors le style est supprimé...
La macro s'arrête sur le Delete pendant bien plus d'une minute sous Word 2010 avant de passer au style suivant, alors que sous Word 2003 cela est résolu en quelques secondes...
Dans quelques minutes je pourrai te passer le code exact mais il n'y a rien de plus que des codes debug.print pour voir où j'en suis... et sinon l'instruction Name pour un style n'est pas exactement celle là sous VBA
RafCorDel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 19h56   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 339
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 339
Points : 29 248
Points : 29 248
Salut,

Pour en avoir le coeur net, j'ai fait un test avec ton code.

Il y a une erreur dans la propriété du style Name qui devient NameLocal en 2010.

Le code tourne en moins d'une seconde pour supprimer quelques styles.

Code :
1
2
3
4
5
6
7
8
9
10
11
 
Sub TestVitesse()
Dim i As Integer
For i = ActiveDocument.Styles.Count To 1 Step -1
      If Left(ActiveDocument.Styles(i).NameLocal, 4) = "bal_" Then
                ActiveDocument.Styles(i).Delete
                Debug.Print i
 
      End If
Next i
End Sub
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2011, 21h56   #5
Candidat au titre de Membre du Club
 
Homme Raphael CORNIER-DELABROUILLE
Architecte technique
Inscription : avril 2008
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Raphael CORNIER-DELABROUILLE
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2008
Messages : 20
Points : 13
Points : 13
J'ai lancé mon script à 13H28 et il en est à supprimer le style n°173, alors qu'il est 21H50, ...
Quelque soit la machine roulant sous Word 2010 ca rame de folie sur ce passage de suppression des styles.
Sous Word 2003 ca passe comme une lettre à la poste, pourtant.

Merci pour ton essai, mais j'aimerais bien savoir ce qui peut bloquer Word 2010.
Mon Document fait plus de 1000 pages A4 et certains des styles en question qui doivent être supprimés sont utilisés dans des paragraphes vides dans le document. Mais, quoi qu'il en soit, Word 2003 se débrouille bien plus rapidement, comme si la gestion des styles sous 2010 n'était plus du tout la même, comme s'il devait reconstruire tout le document parce qu'un style n'était plus là...
RafCorDel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 08h15   #6
Candidat au titre de Membre du Club
 
Homme Raphael CORNIER-DELABROUILLE
Architecte technique
Inscription : avril 2008
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Raphael CORNIER-DELABROUILLE
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2008
Messages : 20
Points : 13
Points : 13
Au final, ma macro aura mis :
- 01H18 sur un PC vieux de 6 ans avec Windows XP et Office 2003
- 12H44 sur un PC top de gamme avec Windows Seven et Office 2010.

Il y a quand même un petit malaise sachant que la supression des styles n'est pas du tout la seule tache de l'opération et qu'elle aura mis à elle seule moins de 5 minutes sous Office 2003 contre 07H20 sous Office 2010.




Que fait cette macro:
- elle charge une interface qui propose de choisir un fichier xml à traiter
- elle ouvre le fichier balisé Xml sélectionné
- elle applique des styles colorisé en fonction de la balise xml pour mieux voir le niveau de profondeur des balises et agir en conséquence
- elle applique des styles Word mis en forme en fonction du style couleur
- elle construit les tableaux Word avec les balises Tbl, Row et Cell
- elle supprime les styles couleur du document
- elle traite les tableaux par l'ajour de tabulation avec points de conduite
Au Final la supression des styles devrait être une formalité comparé aux autres traitements globaux et bien non, cela prend des heures et des heures sous Word 2010.
RafCorDel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 09h22   #7
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 339
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 339
Points : 29 248
Points : 29 248
Salut,

Tout ce que je peux te dire, c'est que pour supprimer quelques styles avec le code que tu nous as donné, ça n'a pas pris 1 seconde sous 2010 32 bits
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 19h18   #8
Candidat au titre de Membre du Club
 
Homme Raphael CORNIER-DELABROUILLE
Architecte technique
Inscription : avril 2008
Messages : 20
Détails du profil
Informations personnelles :
Nom : Homme Raphael CORNIER-DELABROUILLE
Âge : 40
Localisation : France

Informations professionnelles :
Activité : Architecte technique
Secteur : Communication - Médias

Informations forums :
Inscription : avril 2008
Messages : 20
Points : 13
Points : 13
Accepterais-tu que je t'envoie la macro complète avec un fichier traitable?
Car le test que tu as dû faire ne devait pas prendre en compte 1000 pages ni des styles utilisés?


Là, tu reverras forcément ta position si tu arrives à essayer sous Office 2003 puis sous 2010 qui est fichtrement beaucoup plus lent... à moins de faire des macros basiques.
RafCorDel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 17h17   #9
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Salut RafCorDel,

Je suis dans la lignée de Heureux-Oli et j'ai refais le test (en créant 150 styles dont la moitié seront à supprimer). C'est OK ==> du coup, j'ai testé avec du volume :
j'ai créé un fichier de 1200 pages (avec renvois, tableaux, dessins, TdM, index, styles persos...) avec les 150 styles et j'ai appliqué le style "bal_135" à 3071 paragraphes et le "bal_55" à 240 paragraphes (du coup, j'ai quelques styles "bal_55" avec exposant dans mon document. Puis j'ai lancé la macro

Code :
1
2
3
4
5
Sub TestVitessePourCreerLesStyles
    For aI = 1 To 150
        ActiveDocument.Styles.Add (IIf(aI Mod 2 = 0, "Bad", "bal_") & Trim(Str(aI)))
    Next
End Sub

Code :
1
2
3
4
5
6
7
Sub TestVitesse
   For aI = ActiveDocument.Styles.Count To 1 Step -1
        If Left(ActiveDocument.Styles(aI).NameLocal, 4) = "bal_" Then
            ActiveDocument.Styles(aI).Delete
        End If
    Next
End Sub
Résultat moins de 2 minutes sur un PC portable de 3 ans (hélas pas encore sinon il serait allé au rebut donc de 2,5 ans) avec Word 2007.

@+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h32.


 
 
 
 
Partenaires

Hébergement Web