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 de Windows jusqu’à saturation de celle-ci. 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 = vbext_wt_CodeWindow Then 
            ' les fenetres de code
            Application.VBE.VBProjects(i).VBE.Windows(j).Close 
         End If 
      Next 
   Next 

   Exit Function 
End Function

Liste des constantes des fenêtres VBE

Valeur NumériqueConstante VBADescription
0vbext_wt_CodeWindowFenêtre de code
1vbext_wt_DesignerFenêtre de concepteur (UserForm)
2vbext_wt_BrowserExplorateur de projet
3vbext_wt_WatchFenêtre Espion
4vbext_wt_LocalsFenêtre Variables locales
5vbext_wt_ImmediateFenêtre Exécution immédiate
6vbext_wt_ProjectWindowFenêtre Projet
7vbext_wt_PropertyWindowFenêtre Propriétés
retrouvez toutes les options dans l’aide Microsoft

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 *