Depuis la mise à jour 2408 (Build 16.0.17906 puis 16.0.17921) de Microsoft 365, de nombreux services financiers, bureaux d’études et cabinets comptables voient leurs macros VBA mettre plusieurs minutes à s’exécuter, rendant certains classeurs impossibles à fermer sans forcer l’application.
Ralentissement brutal d’Excel / VBA après la mise à jour d’août 2024
Problème constaté
- Macros jusqu’à 100 fois plus lentes ; code se fige souvent sur l’appel à des fonctions de manipulation de tableaux ou de dictionnaires.
- Fermeture des classeurs extrêmement longue (jusqu’à 90 s) ; parfois Excel reste bloqué en mémoire.
- Consommation RAM qui grimpe en continu : certains postes dépassent 6 Go avec un seul fichier ouvert ; symptômes typiques d’une fuite mémoire.
- Lag général : clics sans prise de focus, boîte de dialogue Enregistrement en cours interminable, autres applications Office ralenties.
À qui le bug s’applique ?
Toutes les éditions Microsoft 365 sur Canal Actuel (Current Channel)et Canal Entreprise Mensuel, qu’elles soient x86 ou x64. Les versions perpétuelles (Office 2019/LTSC 2021) plus anciennes ne sont pas touchées, mais Office 2024 LTSC Preview l’est partiellement.
Analyse technique : ce qui se passe en coulisse
Les premières analyses mémoire laissent penser à :
- Une régression dans le moteur VBA et/ou la pile COM introduite en 2408 ; les références internes aux objets seraient sous‑comptées.
- Une interaction anormale avec splwow64.exe (pont 32→64 bits du spouleur d’impression). De nombreux rapports montrent le processus réapparaître en boucle lorsqu’un classeur contient des éléments graphiques ou des impressions vers PDF.
- Des poignées GDI non libérées : l’outil Ressource Monitor révèle que le compteur
GDI Objects
d’Excel grimpe de façon linéaire au fil de l’exécution des macros, jusqu’à atteindre la limite de 10 000 objets, moment où Excel se fige. - Compilation répétée des modules VBA : les builds 17906/17921 recompilent parfois tout le projet à chaque appel à une procédure publique, ce qui multiplie la charge CPU.
Solutions et contournements validés par la communauté
Action | Détails | Efficacité |
---|---|---|
Revenir à la version 2407 (16.0.17830.20166) | Désactiver les mises à jour → Invite admin :cd %programfiles%\Common Files\Microsoft Shared\ClickToRun | ✅ Rétablit la fluidité ; expose toutefois à un retard de correctifs de sécurité. |
Installer le correctif de septembre | Build 16.0.17928.20156 (ou ultérieur tel que 2409 18.2409.1051.0) corrige officiellement la fuite mémoire. | ✅ Confirmé par plusieurs DSI depuis octobre 2024. |
Placer le fichier dans un emplacement approuvé | Options → Centre d’approbation → Emplacements approuvés ; évite les contrôles de charge dynamique des DLL COM marquées non fiables. | ✅ Gain sensible sur des macros « lourdes ». |
Contacter le support Microsoft 365 | Centre d’administration → Support → Nouvelle demande ; joindre un journal ETL. | ℹ️ Accélère la priorisation du correctif, utile pour un patch hors cycle. |
Désactiver/retarder les mises à jour auto | Fichier → Compte → Options de mise à jour → « Désactiver » ou « Reporter une mise à jour ». | 🛡️ Réduit le risque de régression future, surtout sur les postes critiques. |
Pas à pas : revenir proprement en 2407
- Fermer toutes les applications Office.
- Ouvrir l’Invite de commandes en mode administrateur.
- Arrêter les services C2R :
net stop clicktorunsvc
- Lancer la commande de rétro‑gradage (cf. tableau ci‑dessus).
- Redémarrer le PC, rouvrir Excel → vérifier le numéro de build : Fichier → Compte → Informations sur Excel.
Astuce : conservez le package .cab
téléchargé ; ainsi la restauration est instantanée au prochain incident.
Pas à pas : appliquer le correctif 2408/2409 sans attendre le déploiement massif
- Réactiver les mises à jour (même menu que ci‑dessus) puis cliquer sur Mettre à jour maintenant.
- Si le build proposé n’est pas ≥ 16.0.17928.20156 :
a) Ouvrir l’Invite admin.
b)officec2rclient.exe /update user updatetoversion=16.0.17928.20156
. - Relancer Excel et tester un fichier lourd ; surveiller le Gestionnaire des tâches : la RAM doit se stabiliser.
Checklist avant de relancer vos macros
- Désactiver
ScreenUpdating
,EnableEvents
et passer le calcul en manuel avant la boucle principale. - Libérer la mémoire :
Set obj = Nothing
,Erase Tableau
et exécuterApplication.GarbageCollect
(Office 2021+). - Vérifier les compléments COM : désactiver temporairement tout add‑in tiers pour isoler le coupable.
- Mettre à jour les pilotes d’imprimante ou définir une imprimante locale basique pour réduire les appels à
splwow64.exe
. - Segmenter le code : préférer plusieurs modules spécialisés plutôt qu’un seul module de 20 000 lignes.
- Profiter du correcteur de performances VBA (Ctrl+Break puis Éditeur VBA → Outils → Performances) pour repérer les points chauds.
FAQ rapide
Pourquoi une “simple” mise à jour mensuelle a‑t‑elle cassé mes macros ?
La branche 2408 a introduit une refonte interne du compilateur VBA visant à préparer l’arrivée de nouvelles fonctions. Une erreur de comptage de références COM a passé la validation interne car elle ne se manifeste qu’avec de très gros classeurs.
Quand un correctif définitif surviendra‑t‑il ?
Le correctif 17928 est considéré comme stable sur le Canal Actuel depuis novembre 2024. Les canaux Semi‑Annual recevront l’équivalent (Build 16.0.17928.20752) au Patch Tuesday de janvier 2025.
Le problème touche‑t‑il Office 2019 ou 2021 perpétuel ?
Non, car ces versions restent en Feature Pack 2108. Toutefois Office 2024 LTSC Preview a brièvement embarqué le même moteur ; les builds ultérieurs l’ont corrigé.
Meilleures pratiques pour l’avenir
- Activer un anneau pilote : un petit groupe d’utilisateurs teste chaque build avant diffusion généralisée.
- Exporter régulièrement la liste des numéros de version installés via Intune ou PowerShell pour détecter une dérive.
- Migrer progressivement les macros critiques vers Office Scripts ou .NET : performances plus prévisibles, débogage avancé.
- Automatiser la capture des journaux (
procmon
,etw
) lors des tests de non‑régression afin de fournir des traces robustes au support Microsoft. - Documenter la procédure de rollback sur le wiki interne pour réduire le temps de réaction lors du prochain incident.
Conclusion
La mise à jour 2408 a mis en lumière la dépendance de nombreux processus métiers à la stabilité du moteur VBA d’Excel. Grâce aux retours coordonnés des utilisateurs, Microsoft a publié un correctif rapide. En attendant, le rollback vers 2407 ou l’installation manuelle du build 17928 reste la voie la plus sûre pour restaurer vos performances et votre productivité.