VBA : Fermeture en cascade des fenêtres de code

Mes développements me confrontent souvent à des applications volumineuses où le code prend une place importante. Dans ce cas, et tant que l’application n’est pas compilée (mde / accde), l’éditeur Visual Basic ou VBE (Alt-F11) ouvre toutes les fenêtres de code y compris celles des bibliothèques non compilées ou non protégées.

Ce comportement se produit également lors de l’exécution de l’application même si l’éditeur VBA n’est pas ouvert. Cela encombre la pile GDI jusqu’à saturation. J’ai donc créé un bout de code pour refermer les fenêtres de code.

Public Function CloseAllVbeWindows() 
' Auteur : Fabrice CONSTANS MVP 
' Ferme toutes les fenêtres du VBE 
' permet de réduire les handles GDI et d'éviter la saturation mémoire. 

   Dim i As Integer 
   Dim j As Integer 
   On Error Resume Next 
   For i = 1 To Application.VBE.VBProjects.Count 
      For j = 1 To Application.VBE.VBProjects(i).VBE.Windows.Count 
         If Application.VBE.VBProjects(i).VBE.Windows(j).Type = 0 Then 
            '_ 'Or Application.VBE.VBProjects(i).VBE.Windows(j).Type = 6 Then 
            ' les fenetres de code + la fenetre projet 
            Application.VBE.VBProjects(i).VBE.Windows(j).Close 
         End If 
      Next 
   Next 

   Exit Function 
End Function

Vous pouvez appeler cette procédure après le chargement de votre application ou sur une macro AutoKeys.

Bonne utilisation !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *