Lenteur à l'enregistrement : dû à une macro ? à la version d'Excel ?

Bonjour à tous,

Je travaille dans une petite société où tout (compta, gestion des stocks, etc.) se passe dans un seul et même fichier excel, qui contient une vingtaine de feuilles (taille actuelle 17 Mo). Je constate depuis peu que l'enregistrement de ce fichier prend de plus en plus de temps (plusieurs minutes).

J'avais déjà rencontré un problème similaire il y a deux ans, avant de me rendre compte qu'une de ses feuilles contenait d'innombrables cellules vides auxquelles étaient appliquée une mise en forme. J'avais supprimé ces cellules et tout était rentré dans l'ordre.

Jusqu'à cet automne, nous avons travaillé sous excel 2004 pour mac, mais nous avons dû changer en octobre un de nos vieux iMac (de 2007) pour un flambant neuf, qui tourne sous Sierra… et sur lequel excel 2004 ne tourne pas. Nous sommes donc passés à excel 2011 pour mac.

Aujourd'hui, nous nous retrouvons donc avec excel 2011 sur un vieil iMac et sur un tout récent, branchés en réseau.

Le fichier excel qui me pose problème est hébergé sur l'iMac le plus récent. C'est un fichier qui contient de nombreuses macro. Constatant qu'excel 2011 était difficile à utiliser au quotidien, j'ai dû arranger de nombreuses macro pour nous faciliter le travail. Il m'est difficile d'envoyer ce fichier sans faire parvenir d'informations "confidentielles", mais au besoin je peux envoyer des copies des macros ?

Voilà pour la configuration. Le problème maintenant :

Depuis cet automne, je constate que l'enregistrement de ce fichier est extrêmement lent, il faut plusieurs minutes. La blague est que quand j'utilise ce fichier sur le vieil iMac (alors qu'il est hébergé sur le plus récent), l'enregistrement se fait à une vitesse tout à fait raisonnable. Quand je l'utilise sur l'iMac récent, c'est un véritable enfer, excel reste bloqué à enregistrer pendant un temps infini.

La question que je me pose est donc où chercher pour résoudre ce problème :

  • s'agit-il d'un problème venant de notre version d'excel ?
  • ou bien s'agit-il d'un problème venant de nos macros ? (j'ai dû apprendre le VBA il y a deux ans pour enrichir ce fichier que je n'ai pas créé, et il est tout à fait possible que j'aie commis des erreurs). Comme j'ai dû toucher à un grand nombre de macros cet automne, je n'arrive pas à savoir laquelle pourrait être en cause – le problème demeure même si je supprime toutes les macros du fichier d'ailleurs.

J'ai essayé toutes sortes de solutions (redémarrer les ordinateurs, ouvrir les fichiers sans activer les macros, supprimer les macros, changer le nom ou l'emplacement du fichier). J'ai eu parfois l'impression qu'une manip résolvait le problème, mais quand le problème venait à se représenter quelques jours plus tard et que je refaisais ladite manip, cela ne fonctionnait pas.

J'ajoute ces deux points qui me paraissent mystérieux :

  • parfois, tout redevient normal. Il semble que ce soit peu à peu, à force d'enregistrements successifs, que l'enregistrement prenne plus de temps.
  • autre chose : parfois, le phénomène s'inverse, l'enregistrement se fait à vitesse normal sur le nouvel iMac, et très lentement sur l'ancien. Je suppose donc que cela ne vient pas de tel ou tel pareil.

J'espère que tout cela a été à peu près clair et je vous remercie par avance pour tout élément que vous pourrez m'apporter pour y voir un peu plus clair.

Bonsoir

-s'agit-il d'un problème venant de notre version d'excel ?

Non je ne pense pas

-ou bien s'agit-il d'un problème venant de nos macros ? (j'ai dû apprendre le VBA il y a deux ans pour enrichir ce fichier que je n'ai pas créé, et il est tout à fait possible que j'aie commis des erreurs). Comme j'ai dû toucher à un grand nombre de macros cet automne, je n'arrive pas à savoir laquelle pourrait être en cause – le problème demeure même si je supprime toutes les macros du fichier d'ailleurs.

Je ne pense pas non plus mais ce serait intéressant de voir le fichier et les codes associés.

-parfois, tout redevient normal. Il semble que ce soit peu à peu, à force d'enregistrements successifs, que l'enregistrement prenne plus de temps.

Avez-vous déjà essayé de fermer votre fichier et excel puis de réouvrir votre fichier pour voir si la lenteur subsiste. Assez bizarrement j'ai déjà constater cela et la solution de fermer excel apportait plus de rapidité

Cordialement

Avez-vous déjà essayé de fermer votre fichier et excel puis de réouvrir votre fichier pour voir si la lenteur subsiste. Assez bizarrement j'ai déjà constater cela et la solution de fermer excel apportait plus de rapidité

Bonjour,

Merci pour votre réponse.

Malheureusement, la lenteur arrive sur plusieurs jours, et les ouvertures et fermetures de fichiers ne changent pas grand chose (pas plus que les fermeture d'excel, redémarrages d'ordinateurs, vidages de cache, etc.)

Si cela peut vous éclairer, je vous envoie en pièce jointe une copie du code des macro que j'ai créées juste après le passage sous Mac Sierra : cette version a vu disparaître les flèches de défilement haut bas à droite des fenêtres, or les feuilles de notre fichier ont souvent un volet supérieur figé, et nous avons souvent besoin de caler telle ou telle ligne sous le volet supérieur. C'était quasiment impossible à faire sous Sierra, donc j'ai bricolé des macros, un peu dans l'urgence en utilisant des formules telles que : Application.Goto Selection, True et une recherche avec .find (que je ne maîtrise pas du tout)

Sub caler_ligne()

Application.Goto Selection, True

End Sub

Sub caler_ligne_mep()

ligne_a_afficher = Range("ligne").Value

Cells(ligne_a_afficher, 4).Select

Application.Goto Selection, True

End Sub

Sub caler_ligne_et_num()

Application.Goto Selection, True

ligne_select = Selection.Row

Cells(4, 1).Value = ligne_select

End Sub

Sub caler_ligne_et_num_paiements()

Dim num_facture, ligne_facture As Integer

num_facture = InputBox("Numéro de facture", "quel est le numéro de la facture ?")

ligne_facture = Worksheets("Paiements 2011").Range("B:B").Find(what:=num_facture, LookIn:=xlValues).Row

Cells(ligne_facture, 1).Select

Application.Goto Selection, True

Cells(3, 2).Value = ligne_facture

End Sub

Je vais aussi réfléchir à une façon de pouvoir supprimer du fichier les infos confidentielles afin de pouvoir le charger sur le forum, mais il est si compliqué d'usage (un peu comme une maison à laquelle on rajoute peu à peu des pièces, selon le besoin et dans l'urgence, et c'est tout mal foutu et si on ne le pratique pas depuis des années, on n'y comprend rien (je l'ai constaté)).

En tout cas, merci déjà d'avoir pris la peine de lire mon premier message (et celui-ci!)

Re

A la lecture des codes, j'ai l'impression que ce programme a été réalisé sur une version d'excel datant de 2001 voire avant

Dans ce code Sub caler_ligne_et_num_paiements(), ces deux lignes peuvent être supprimées

Cells(ligne_facture, 1).Select
Application.Goto Selection, True

Pour les deux autres codes, ils sont, je pense, appelés depuis d'autres codes non présents ici.

Cordialement

Bonjour Dan,

Re

A la lecture des codes, j'ai l'impression que ce programme a été réalisé sur une version d'excel datant de 2001 voire avant

Le programme a dû être réalisé sur excel 2004 pour mac. Le peu de VBA que je connais vient de ce que j'ai compris des codes du fichier. On est ensuite passé directement d'excel 2004 à excel 2011.

J'ai fais quelques expérience en fin d'aprem, j'ai réussi à faire que le fichier s'enregistre à nouveau en quelques secondes seulement, voici comment :

  1. J'ai fait une copie du fichier de départ en xlsm (son format de base)
  • À partir de cette copie, j'ai exporté tous les modules de macros dans un dossier
  • Puis j'ai ouvert le fichier original et j'ai supprimé tous les modules vba
  • J'ai fermé le fichier et quitté excel

à ce stade, si je rouvre le fichier, que je fais une modif et enregistre, ça prend toujours un temps infini.

  • Je réouvre le fichier et je l'enregistre en xlsx

Maintenant l'enregistrement se fait en quelques secondes.

  • Je reprends le fichier, l'enregistre au format xlsm et réimporte les macros

L'enregistrement reste rapide.

Tout va bien en apparence ; mais j'avais déjà réussi à faire cette espèce remise à zéro (un peu aux hasard des manipulations). Peu à peu, à force d'utilisation, l'enregistrement s'était ralenti. Je vais essayer de voir ce qui se passe dans les prochains jours.

Est-ce qu'il est possible que certaines méthodes (je ne sais pas pourquoi, mais je soupçon que quelque chose ne va pas Application.GoTo ) stockent des données qui encombrent le fichier, malgré les fermetures d'applications et les redémarrages ?

Cordialement,

Paul

Bonsoir Pauk

En lisant votre message je confirme qu'il vaut en tout cas mieux de fonctionner avec les extensions XLSM. Cela je l'ai constaté chez moi..

Il y a plusieurs choses qui m'interpellent mais avant de me prononcer il faudrait que je vois comment fonctionne le fichier.

Là je ne vois pas le pourquoi de GO TO et des Select.

J'ai tenté de reproduire le code chez moi mais je ne comprends pas certaines lignes qui, à première vue ne servent pas ou que l'on pourrait enlever. Mais prudence à ce stade...

Une règle que je me suis faite sous MAC, c'est d'être le plus pur possible dans ce que l'on fait. Excel Mac n'accepte pas les "crasses" que excel windows laisse et que l'on ne voit souvent pas. Avec Excel 2011 cela va mieux, mais avec 2004 il fallait parfois réécrire toutes les lignes

Une chose à éviter ce sont les espaces dans les lignes (surtout si l'on fait un copier-coller venant d'un fichier excel windows). C'est parfois déconcertant que Excel VBA signale un souci et l'utilisateur ne voit pas le pourquoi...

Et savoir ce qu'excel fait réellement à l'arrière plan est de l'impossible.

Pour votre souci le mieux de voir le fichier afin que je vois comment vous fonctionnez

Cordialement

Rechercher des sujets similaires à "lenteur enregistrement macro version"