temps d'éxécution différent entre excel 2010 et 2007

loureed

XLDnaute Junior
Bonjour à tous,

une petite question : j'ai une application avec macro sous excel 2007.
Une des macros fait un ajout de ligne + trie alphabétique sur 200 feuilles.

Sous excel 2007 elle met environ 12 secondes, mais sous excel 2010 elle met presque 3 minutes !

A quoi cela peut-il être du ?

Je ne me suis pas penché sur les ordis, mais ils sont récents tous les deux.

2010 a-t-il des fonctions de "contrôle" qui tournent en arrière plan ?

Merci de votre réponse

A bientôt

Loureed
 

Staple1600

XLDnaute Barbatruc
Re : temps d'éxécution différent entre excel 2010 et 2007

Bonsoir à tous

Je ne me suis pas penché sur les ordis, mais ils sont récents tous les deux.
Et nous, on se penche sur quoi ?
On ne connait pas ton code VBA et on a pas à disposition un fichier exemple joint à ta discussion pour faire des tests sur nos pc respectifs.
A défaut de ces élements et en hommage à Jacky Quatz, je vais donc me pencher sur les plus belles années de ma vie ;)
Juste une mise au point
Sur les plus belles images de ma vie
Sur les clichés trop pâles d'une love-story
Sur l'état d'âme d'une femme sans alibi
Qui rêve toute ses nuits
Juste une mise au point
Pour un petit clin d'œil de survie
Pour tous les fous, les malades de l'amour,
Pour toutes les victimes du romantisme, comme moi,
Juste un p'tit clin d'œil, une mise au point.
 

loureed

XLDnaute Junior
Re : temps d'éxécution différent entre excel 2010 et 2007

Bonsoir,

Ma question est simple : avez-vous déjà eu ce type de résultat ? une macro "compatible" avec excel 2007 et 2010, mais qui est plus longue à s'exécutée sur 2010 par rapport à 2007.
Depuis je me suis penché sur les ordis, excel est installé sur un celeron 2.5Ghz sous window7 et le 2007 est installé sur un pentium 2020 m de 2.4 GHz, les deux sont double cœurs je crois.

Pour ce qui est du fichier, il faudrait que le travail avant pour enlever quelque trucs...
Mais la question est la même, connaissez vous des "contrôles" actifs sous 2010 qui pourraient ralentir le déroulement d'une macro

Merci

Loureed
 

MJ13

XLDnaute Barbatruc
Re : temps d'éxécution différent entre excel 2010 et 2007

Bonjour Lou Reed, JM

Tu peux déjà voir avec une boucle de plusieurs millions en mesurant le temps que met la macro entre les 2 versions.

Fait le test et dit nous. Pense aussi à nous mettre le code VBA de ton test :).
 

Staple1600

XLDnaute Barbatruc
Re : temps d'éxécution différent entre excel 2010 et 2007

Bonsoir à tous, MJ13 ;)

Lewis Alan Reed
Nous sommes déjà deux à demander à voir ton code VBA
Tu attends qu'on soit trois pour enfin publier ton code VBA sur le forum ?
(à défaut de joindre un fichier exemple simplifié)
 

loureed

XLDnaute Junior
Re : temps d'éxécution différent entre excel 2010 et 2007

ci dessous une partie du code avec quelque commentaires et l'endroit où se trouve la différence de temps d'exécution de la macro.

With Application
' on enlève la mise à jour de l'écran
.ScreenUpdating = False
' on enlève la surveillance événementielle
.EnableEvents = False
' on enlève le calcul automatique
.Calculation = xlManual
End With


' nombre de feuilles dans le classeur
nb_feuille = Worksheets.Count

' nombre de feuille autre que fiche de suivi personnel
nb_feuille_sys = [nb_feuilles_system] ' récupération direct d'une valeur de cellule nommée


' on scan toutes les feuilles " personnel " ' actuellement il y en a 178
For j = (nb_feuille_sys + 1) To nb_feuille

' on sélectionne la feuille
Sheets(j).Select

1 Rows(ligne_op_ajoutee).Copy ' ligne_op_ajoutee correspond à la ligne où je dois inserrer la nouvelle
2 ici => Rows(ligne_op_ajoutee).Insert Shift:=xlDown ' on insert une ligne

' on sélectionne la colonne I et on inscrit l'intitulé de l'opération
Sheets(j).Cells(ligne_op_ajoutee, 9).Value = op_a_ajouter ' op_a_ajouter correspond a un intitulé entré par l'utilisateur

' on sélectionne les cases de j22 à n22 et on efface les données éventuelles
Cells(ligne_op_ajoutee, 10).ClearContents
Cells(ligne_op_ajoutee, 11).ClearContents
Cells(ligne_op_ajoutee, 11).FormulaR1C1 = "=IF(RC10="""","""",RC10)" ' on inscrit une formule

' on reclasse toutes les opérations par ordre croissant
Range("A" & [décalage] + 2 & ":M" & [décalage] + [nb_opérations] + 1).Select ' lecture direct de valeur de cellules nommées décalage et nb_d'opération
ActiveWorkbook.Worksheets(j).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(j).Sort.SortFields.Add Key:=Range("I" & [décalage] + 2 & ":I" & [décalage] + [nb_opérations] + 1) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(j).Sort
.SetRange Range("A" & [décalage] + 2 & ":M" & [décalage] + [nb_opérations] + 1)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

' on boucle toutes les lignes qui contiennes des opérations qui doivent être apparentes et on cache le reste (ces opérations sont différentes d'un personnel
' a un autre c'est en fonction des qualifications de chacun
Range("AB" & [décalage] + 2 & ":AB" & [nb_opérations] + [décalage] + 2).Value = Range("W" & [décalage] + 2 & ":W" & [nb_opérations] + [décalage] + 2).Value
Range("AB" & [décalage] + 2 & ":AB" & [nb_opérations] + [décalage] + 2).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True

Next ' feuille "personnel" suivante​

c'est à "ici" que la différence se fait entre 2010 et 2007 : lors d'une exécution pas à pas dans VBA pour passer de la ligne 1 à 2 sous 2007 ça prend le temps d'appuyer
sur la touche F8, et sous 2010 il faut environ 2 secondes ! donc 1à2 secondes x 178 = 200 à 350 secondes = soit entre 3 et 5 minutes. hors sous 2007 il faut entre 8 et 12 secondes !
 

loureed

XLDnaute Junior
Re : temps d'éxécution différent entre excel 2010 et 2007

OUPSSS !
avec le décalage le code à pris une drole d'allure donc la où il y a un 1 et un 2 avec le repère =>ici est l'endrois où entre 2007 et 2010 il y a une différence de temps....

Merci encore à VOUS DEUX (seulement ;-) ) de vos réponses

Loureed

NB : Loureed en 1 mot... ceci dit il y a un rapport avec The Velvet Underground, ;-)
 

Staple1600

XLDnaute Barbatruc
Re : temps d'éxécution différent entre excel 2010 et 2007

Re


Tant qu'on aura pas un fichier exemple (ne serait-ce qu'un fichier avec 4 ou 5 feuilles au lieu des 178) et la procédure VBA entière, on ne peut pas faire de tests sur nos PC.
Donc on risque de palabrer en supputant ou de supputer en palabrant mais au bout du compte tu ne seras guère plus avancé. ;)
 
Dernière édition:

loureed

XLDnaute Junior
Re : temps d'éxécution différent entre excel 2010 et 2007

Autre info :

la fiche personnel contient un tableau avec une colonne d'intitulé d'opération, une colonne date d'exécution, une date de renouvellement, une durée de validité, une date de péremption et toute une série de colonne afin de faire apparaitre la ligne en fonction de différente qualification... c'est le pourquoi de la copie de ligne afin de conserver les formules.
Les mises en formes ont été optimisées.
 

loureed

XLDnaute Junior
Re : temps d'éxécution différent entre excel 2010 et 2007

une correction à faire sur le fichier !!!!!
sur la feuille "Système" mettre 6 au lieu de 178 au niveau du nombre de fiche de suivi de personnel !!!!
Sinon certaines macros vont buguer !!!!

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat