Une lenteur pas permise

Bonsoir.

Sur excel 2010 je n'arrive plus à travailler correctement. En effet, dès que je mets une formule, j'ai un temps d'attente avant que je puisse re-sélectionner une cellule.

A côté de la barre de zoom (tout en bas à droite) j'ai le temps de voir ce message:

Calcul: (1 processeur(s)): 0%

Avec le pourcentage qui défile tellement lentement qu'on en a envie de jeter son ordinateur par la fenêtre.

Je pense que le problème est que je travaille avec un très gros fichier (2,2Mo en xlsx ce qui donne environ 7Mo si je l'enregistre en xls)

Comment puis-je accélérer les calculs?

Pour une formule toute simple, le temps d'attente doit être de une seconde.

Pour une formule matricielle, le temps d'attente passe à 5 secondes environs. Et pour ce qui est des macros, le temps à dû tripler depuis l'augmentation de la taille du fichier.

Deuxième question: Est-ce que si j'avais de la mémoire vive en plus, le problème se résorberait ?

Dans tous les cas, je vous remercie des réponse que vous pourriez m'apporter.

PS: Il est bien évident que si je pouvais diminuer la taille du fichier, je le ferais. Cette solution n'est donc pas envisageable.

Bonsoir,

Tu peux mettre en calcul sur manuel au lieu de automatique

dans les macros ou dans les options, ou les 2

Quant au poids du fichier, est-tu sûr d'être optimisé ?

Amicalement

Claude

Bonsoir Claude.

En effet, avec les calculs en manuels, ça va déjà un peu plus vite (ou un peu moins lentement). C'est une option que je vais garder pour l'instant.

Pour ce qui est de l'optimisation du fichier, c'est sans doute là que le bât blesse:

Voici le détail.

J'ai une cinquantaine de feuilles => Interdiction de les supprimer

J'ai beaucoup de tableaux => Je peux en supprimer certains, mais je ne suis pas convaincu de gain de place.

Une dizaines de filtres que je ne préfère pas supprimer sauf en dernier recours

Beaucoup de couleurs

Quelques images (trois ou quatre)

... Et un gros paquet de macros qui me servent toutes mais qui doivent pouvoir s'améliorer vu le peu d'expérience que j'ai en la matière.

Est ce que le problème peut venir de là ?

Merci.

re,

Est ce que le problème peut venir de là ?

7 Mo, c'est beaucoup trop gros pour un fichier (à mon avis)

Sans connaitre le contenu ni ce que çà fait, c'est plutôt le genre "usine à gaz"

Tu peux essayer d'analyser avec ce fichier joint

tu trouveras peut-être l'explication

Amicalement

Claude

2'129mammouth-rapide-v6.zip (39.98 Ko)

Re.

Je gagne 80Ko sur le fichiers, mais c'est vrai que grâce à ton programme, je constate quelques incohérences sur les 5 dernières feuilles que j'ai créées: L'utilisation de toutes les colonnes. Je vais voir comment supprimer tout ça.

Pour ce qui est du programme, c'est le fichier de l'employé du mois que j'ai posté dans l'item "Application" de ce site.

Mais j'y ai apporté beaucoup de modifications (une grosse dizaine).

En théorie, c'est normal que ça fasse "usine à gaz" car ça reprends la synthèse de tous les employés de l'entreprise avec un archivage de données etc...

Ca fonctionnait bien jusque là et je n'avais pas constaté d'alourdissement anormal du fichiers lorsque je l'enregistrais.

Ca à tout de même l'air de mieux fonctionner pour l'instant.

Je laisse le post ouvert encore un peu le temps pour voir comment les modifications apportées se comportent.

Merci beaucoup.

re,

L'utilisation de toutes les colonnes

tu veux dire 16000 colonnes ? pas étonnant que çà mouline !

vois aussi du coté

  • des formats personnalisés
  • bordures cellules (utiliser de préférence le quadrillage standard sans bordures)

Claude

Je suis déjà de retour.

J'ai fais le ménage avec le dégraisseur du mamouth.

Le fichier est passé de 2,2Mo à 1,98Mo. En gros, il n'y a pas énormément de changements même s'il y avait tout de même des âneries.

Etrangement, le fichier était à peu près bien reparti mais j'ai de nouveau le problème.

J'ai relancé l'analyse et là, la macro a mis 20 min pour faire la synthèse.

Je commence à douter que ce soit à cause du volume du fichier. Y aurait-il autre chose?

  • Problème de mémoire vive?
  • Problème d'ordinateur ?
  • un composant infecté ?
  • Autre chose ?

Je vous joints la synthèse du fichier. Peut-être verrez-vous des choses anormales.

214synthese.xlsx (15.77 Ko)

Bonjour à tous,

Je ne vois pas vraiment d'anomalies dans l'analyse

c'est quoi ces feuilles P1 à P35 ? et les 11 objets dans chacune ?

voir si possibilité de regrouper toutes ces feuilles sur une seule BDD

sinon pour les formules :

en début de macro

Application.Calculation = xlCalculationManual

en fin de macro

Application.Calculation = xlCalculationAutomatic

si besoin de calculer au milieu de macro

Calculate

Amicalement

Claude

Bonjour Claude, forum.

c'est quoi ces feuilles P1 à P35 ? et les 11 objets dans chacune ?

Ce sont les feuilles des employés. Je les aient anonymisées. Quant aux 11 objets, ce sont des cases à cocher, image de l'enseigne, une ouverture pour word, et des indications pour les instructeurs.

voir si possibilité de regrouper toutes ces feuilles sur une seule BDD

J'ai déjà une bdd. Tous les noms des employés sont regroupés avec la synthèse de leur évaluation. Un double-clique sur le nom me permet d'accéder à la feuille de l'employé pour obtenir les détails ou modifications à apporter. Je ne doit pas modifier cette partie là. C'est celle que les instructeurs utilisent tous les jours.

Bref, je commence à être désabusé.

PS: Je garde encore le calcul manuel car il me permet d'attendre un peu moins, mais j'ai peur de ne pas pouvoir le garder éternellement. Ca fonctionnera pour les maj que je dois encore apporter.

Si d'autre idées, je suis preneur. Sinon, je clôturerai le post.

Merci encore.

Bonjour

Je ne sais pas (pas vu) si le sujet a été abordé, les macros évènementielles ?

Bonjour Banzai64

Merci de te pencher sur le problème.

Peux tu m'en dire plus sur les macros évènementielles?

En principe, pour éviter qu'elles s'amorcent à chaque clique, j'ai mis ce code (avec Range("D3") variable bien sur) :

If Not Application.Intersect(Target, Range("D3")) Is Nothing Then

Mais j'en ais aussi à l'activation ou désactivation de feuilles. La plupart du temps, c'est pour remettre les formules en place lorsqu'il y a une ligne de supprimée. Ca m'évite d'avoir des problèmes de #REF! dans les cellules

Y a-t-il autre chose dont on doit faire attention parce que c'est vrai que des macros, j'en ai au moins une sur chaque feuille

Voici des exemples de macros contenues dans le fichier:

Private Sub Worksheet_Activate()
 Sheets("équipe").Select
 Range("B3").Select
 ActiveCell.FormulaR1C1 = "=IF(noms!R[3]C[-1]=0,"""",noms!R[3]C[-1])"
 Range("B3").Select
 Selection.AutoFill Destination:=Range("B3:B55"), Type:=xlFillDefault
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim com As String
Dim com2 As String
Dim celact As Range

mydate = Sheets("Connexion").Range("A2").Value
com = Sheets("Connexion").Range("C2").Text
com2 = Format(Sheets("Connexion").Range("A2"), "long date")

If Not Application.Intersect(Target, Range("E6:E66")) Is Nothing Then
ActiveCell.ClearComments
ActiveCell.AddComment "Cellule modifiée par " & Chr(10) & "........" & _
com & "....." & Chr(10) & " Le " & com2

End If
End Sub

Merci.

salut à vous

suggestion différente de la réparation du fichier actuel, pour faire redémarrer un fichier qui marchait et qui soudainement ne marche plus :

ouvrir un nouveau fichier

et , depuis celui qui ne marche plus, faire un copier/coller des données puis des formules, puis des macros

en testant le bon fonctionnement du nouveau fichier à diverses étapes (et en enregistrant chaque étape sous un nouveau nom, ce qui permet de revenir rapidement en arrière)

c''est long, des fois ça marche

mais ça ne garantit pas les pannes futures

courage

bgrvfe

Re

A première vue ce ne sont pas les macros évènementielles qui sont en cause

Suis les conseils de Jmd

pour la 1ere macro événementielle, une idée pour la simplifier

Private Sub Worksheet_Activate()
  With Range("B3")
    .FormulaR1C1 = "=IF(noms!R[3]C[-1]=0,"""",noms!R[3]C[-1])"
    .AutoFill Destination:=Range("B3:B55"), Type:=xlFillDefault
  End With
End Sub

Mais je répète la lenteur ne semble pas venir de ces macros

Bonsoir jmd. (Et "re" pour Banzai64)

jmd: A défaut d'autres solutions "accessible pour mon niveau" je vais tenter la démarche du copier coller.

C'est parti pour quelques heures de travail ce soir. Je vous tiens au courant.

Merci une nouvelle fois.

Banzai64: Il se peut que, tant qu'à faire de refaire le fichier (ou du moins sa recopie), je poste plusieurs macros à simplifier. La première que tu m'a transmise en fera partie. Merci bien.

Re

Suis pas le seul (heureusement) à t'aider à trouver une solution

Comme je suis en 2003 (XL pas l'année ) il y aura des simplifications qui ne me seront pas accessibles

Mais sur cet excellent forum (ha zut on a dit : pas de pub) tu trouveras de l'aide

Bon courage

Bonsoir à tous,

Banzai64,

Attention à ton code modifié, il s'agit de la feuille "équipe" à préciser,

personnellement, j'aurais supprimer ce Private Sub et laisser ces petites formules

surtout que c'est activé à chaque changement de feuille et que certaines macros

bouclent sur une trentaine de feuilles.

A éviter aussi les ".Select" qui ralentissent énormément.

Amicalement

Claude

Bonsoir

Bonsoir Claude

Dans un private Sub Worksheet_Activate()

Généralement on traite la feuille activée c'est pour cela que j'ai proposé cette modification

Mais comme tout est possible

Remarque pertinente

Bonne soirée

Bonsoir,

La macro Private Sub Worksheet_Activate() concerne uniquement la feuille "équipe" ou d'autres feuilles de ton fichier ?

La macro Private Sub Worksheet_Change(ByVal Target As Range) est dans la feuille "connexion" ?

Autre chose, dans la macro worksheet_change, tu as deux variables :

Dim celact As Range --> elle sert à quoi ?

mydate n'est pas déclarée

Amicalement

Re à tous.

J'aimerai beaucoup supprimer les calculs intégrés à la macro mais dès lors que je supprime une ligne, toutes les lignes d'en dessous ne se repèrent plus et j'obtiens une erreur REF! C'est pour cela que je relance les calculs à l'activation des feuilles. c'est une précaution.

Maintenant, quit à refaire le fichier (j'en bave), je pense qu'il serait plus judicieux d'intégrer ces calculs au moment où je supprime les lignes par macros.

Pour ce qui est d'éviter les "Select", je pense maintenant pouvoir le faire. J'ai commencé à écrire ce fichier sans rien connaitre au fonctionnement des macros et je passais donc par l'enregistreur de macros. C'est aussi pour ça que je demandais si les macros pouvaient à voir avec le problème de rapidité.

Pour ce qui est de la feuille "équipe", c'est bien celle-ci qui était concernée, mais également sur celle-ci que le code était rentré.

Claude: Qu'entends-tu par cela?

personnellement, j'aurais supprimer ce Private Sub et laisser ces petites formules

surtout que c'est activé à chaque changement de feuille et que certaines macros

bouclent sur une trentaine de feuilles.

Edit Dan. Bonsoir.

La macro Private Sub Worksheet_Activate() concerne uniquement la feuille "équipe" ou d'autres feuilles de ton fichier ?

Je ne suis pas sur de comprendre. Pour moi, elle est uniquement dans la feuille "équipe" du fait que j'ai écrit dans le code de cette feuille. Maintenant, s'il faut faire une autre déclaration pour préciser que ça ne doit travailler QUE lorsque cette feuille est activée, je ne l'ai pas fait.

La macro Private Sub Worksheet_Change(ByVal Target As Range) est dans la feuille "connexion" ?

Non, cette macro est dans toutes les feuilles des 35 employés. Cela me permet de faire un suivi sur les modifications que font les instructeurs. Dès qu'il y a une modif, un commentaire se met dans la cellule changeante avec le nom de la dernière personne connectée.

com est le nom de la personne

com2 est la date de connexion

celact et mydate ne servent pas. J'ai oublié de les effacer après avoir fait des essais si je me souviens.

re,

Je voulais simplement attirer l'attention que si (entre guillemets)

dans tes macros, tu fait appel à cette feuille "équipe", ce Private Sub sera activé

et que ce n'est pas cette formule sur 30 lignes qui pénalise.

Maintenant, je n'ai pas en tête le projet, à ce stade il faut tout envisager.

Courage !

Claude

Rechercher des sujets similaires à "lenteur pas permise"