Certaines parties d’Excel deviennent blanches ou grises lorsque vous exécutez du code VBA dans Excel 2013

Symptômes

Lorsque vous exécutez du code Microsoft Visual Basic pour Applications (VBA) dans Microsoft Excel 2013, des parties d’Excel peuvent apparaître blanches ou grises, selon votre thème Office. Il reste vide jusqu’à ce que le code se termine. Ce problème peut se produire si le code VBA effectue une ou plusieurs des actions suivantes dans une macro qui s’exécute suffisamment longtemps pour que l’utilisateur puisse voir les résultats avant la fin de la macro :

  • Sélectionner des cellules à plusieurs reprises
  • Insérer des feuilles
  • Mettre à jour ou ouvrir des volets office
  • Ajouter un classeur

Cause

Ce problème est dû aux modifications apportées dans Microsoft Office 2013 pour optimiser le nouveau moteur graphique.

Solution de contournement

  1. Utilisez ScreenUpdatingpour désactiver les mises à jour d’écran d’Excel afin de ne pas voir les modifications tant qu’elles sont désactivées. Cela peut également améliorer les performances de vos macros.

    Application.ScreenUpdating = False
    Workooks.Add
    Application.ScreenUpdating = True
    
  2. Si vous avez besoin de voir les modifications de l’écran, insérez une commande DoEvents après la ligne dans le code qui fait apparaître l’écran en blanc. L’utilisation de DoEvents avec parcimonie permet de maintenir les performances des macros.

    Workbooks.Add
    DoEvents
    

Statut

Il s’agit d’une limitation connue dans Excel 2013.

Remarque

Pour toutes les versions d’Excel, un effet similaire peut se produire dans les macros de longue durée lorsque Windows rend l’application blanche et marque qu’elle ne répond pas. Cela se produit parce qu’Excel ne répond pas à Windows pendant l’exécution de la macro. DoEvents vous aidera également dans ce scénario en permettant à Excel de répondre à Windows et de permettre à l’écran de l’application de récupérer.