Feuille lourde (ou lente ?)

Y

yohan

Guest
Salut à tous, excellents excelliens !
Me revoici à profiter de votre science.
J'en avais déjà largement abusé il y a quelques semaines, alors que je mettais en place un planning informatisé pour mon boulot.
Ce planning marche, est opérationnel, et c'est grâce à vous. Merci ! (et désolé pour cette longue introduction...)
Mais il y a un un petit quelque chose qui me chagrine. Voici :
La feuille principale de mon classeur XL est très lente, et elle est de plus en plus lente à mesure que je la remplis.
Déjà, chez moi, avec mon Powerbook G4, elle n'est plus très vive, mais alors au boulot c'est carrément agaçant. Il faut souvent 10 secondes pour qu'une cellules sur laquelle j'ai cliqué soit sélectionnée... Vous comprendrez que ça l'utilisation du planning un peu compliquée.
J'ai mis une copie de ce planning sur mon Partage web (pas toujours disponible, je suis désolé...) :
http://m18.net81-66-191.noos.fr/
et il s'appelle Planning2004.xls. Dans le fichier, la feuille problématique est "Planning".
Si un des maîtres d'Excel parmi vous avait deux minutes pour ouvrir le fichier et localiser les raisons de la lenteur de mon planning, je lui serais d'une reconnaissance éternelle ;-)
Encore merci pour votre aide, pour le forum et pour la solidarité excellienne !!
Yohan
 
T

Temjeh

Guest
Salut Yohan

Beaucoup on déja eu ce prob et tout les conseils mon été inutiles du genre:
1-Désactiver l'affichage écran
Application.ScreenUpdating = False
en début de code, désactivera l'affichage écran pour la durée de la procédure

2-Désactiver le calcul automatique
Application.Calculation = xlManual
en début de code, désactivera de façon permanente le calcul automatique
donc ne pas oublier en fin de procédure de le rétablir par
Application.Calculation = xlAutomatic

3-Enlever les sélections inutiles (la sélection étant une opération trés lente)
plutôt que
Workbooks("monclasseur.xls").Activate
Sheets(1).Select
Range("A1").Select
Selection.Value = 1
il vaut mieux faire
Workbooks("monclasseur.xls").Sheets(1).Range("A1").Value = 1
qui donnera le même résultat sans sélection

4-Ne pas utiliser la méthode évaluate
[A1].Value=1
est entre 60 à 50% moins rapide que
Range("A1").Value=1
sur de nombreuses opérations de cellules, cela peut faire une différence notable.

5. Vérifier liaison

Imagine mon fichier avec 7 macros et pas d'image avait 10meg!!!!! après des mois de modification.

La seule facon ptêtre la plus rapide et la meilleur je pense car mon fichier a maintenant 540k seulement c'est:

Tu ouvres un nouveau classeur
Tu recopie tes macros
Tu refais ta mise en page
Et hop tout redeviens normal en dix minutes

A++

Temjeh
 
Y

yohan

Guest
Bonjour à tous,
Salut Temjeh, et merci pour ta réponse,
J'ai bien lu tous tes conseils, mais je ne les ai pas encore mis en pratique. En fait, mon classeur ne contient qu'une macro et qui ne sert qu'épisodiquement (à transvaser des données d'une feuille à l'autre quand je clique sur un bouton). Aussi je me dis que le problème doit peut-être venir d'ailleurs.
Néanmoins, je vais essayer d'inclure dans le code de ma macro les procédures que tu cites.
Si tu veux récupérer mon fichier, peut-être que ce sera plus clair pour toi...
Encore merci !
Bonne journée,
Yohan
 
S

Sylvain

Guest
bonjour,

le rapport joint réalisé avec l'utilitaire de Ti montre quelques raisons et en outre il y a des simplifications possibles :

Les formules du type =CHOISIR(JOURSEM(C1415;2);"Lundi";"Mardi";"Mercredi";"Jeudi";"Vendredi";"Samedi";"Dimanche")
sont inutiles, il suffit de laisser la date dans la cellule et de choisir un format de cellule / nombre / jjjj ce qui affichera le jour de la semaine sans aucune formule (ou jjj si on ne veut que les 3 premières lettres du jour).

Mais le gros du problème vient de la feuille Planning (à elle seule elle fait 1.5 mo) :
il y a beaucoup de formules et aussi beaucoup de formats conditionnels (qui sont aussi lourds qu'une formule mais comme ils sont déjà là les suppriper peut faire gagner du temps mais ne jouera pas sur la taille du fichier).

Plage utilisée (UsedRange) $A$1:$AU$1794
Nombre de cellules contenant une formule 20307
Nombre de formules différentes 161
Nombre de cellules contenant un format conditionnel 16146
Nombre de commentaires 2
Cellule contenant la plus longue formule $AU$993
- Nombre de caractères plus longue formule 238

Il n'y a pas vraiment de solution miracle en gardant la même façon de travailler. Peut-être que les formules sur la droite pourraient être placées les unes sous les autres pour pouvoir gagner quelques colonnes, mais ça restera marginal.

désolé.

A+
 
Y

yohan

Guest
Bonjour à tous,
Bonjour Sylvain, et merci beaucoup pour ta réponse,
En effet, c'est la feuille planning qui pose problème, mais c'est aussi le "cœur" du classeur, et c'est la raison pour laquelle j'ai du mal à l'alléger.
Notamment les mises en forme conditionnelles, qui sont "indispensables", du moins celles qui me permettent de savoir si une personne apparaît deux fois le même jour... Quant à celles concernant la pagination, à droite des tables de semaine, elles sont moins imporantes, mais j'ai bien peur que les supprimer ne résoudrait pas grand-chose.
Je vais déjà changer le mode d'affichage du jour de la semaine, comme tu me dis que ma formule est plus lourde qu'une mise en forme. C'est déjà une piste . Merci !
Nombre de cellules contenant une formule : 20307 !!! C'est dingue ! Je comprends qu'une manière d'écrire les formules un peu "poussive", lourde, ait de telles répercussions.
Merci pour ton aide, Sylvain !
Je vais tâcher d'améliorer le classeur pour le planning 2005, et ça va vite arriver ;-)
A +
Yohan
 

Statistiques des forums

Discussions
312 975
Messages
2 094 095
Membres
105 937
dernier inscrit
thibodu388