XL 2016 Demande de conseils VBA : de la fenêtre unique (XL 2010) au multifenêtres (XL 2016)

Guy_M

XLDnaute Occasionnel
Bonjour,

Jusqu'à Excel 2010, l'application ouvrait dans une seule fenêtre pour tous les classeurs (sauf action ou paramétrage particulier pour avoir plusieurs instances d'Excel). Depuis Excel 2013, chaque classeur est nativement ouvert dans sa fenêtre.
Avant, il était facile d'ajouter ou supprimer un menu avec une commande "CommandBars.ActiveMenuBar.Controls.Add..." ou "CommandBars.ActiveMenuBar.Controls(NomDuMenu).Delete".

Il était facile d’accélérer l'exécution de macro en mettant au début quelques lignes (pas toutes suivant les besoins)

VB:
Application.Visible = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

et en finissant normalement ou avec un "On Error Goto" par

VB:
Application.Visible = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True 'Débloque les évènements
Application.Calculation = xlAutomatic 'Rétablit le recalcul automatique
'On recalcule tous les classeurs ouverts
Application.Calculate

Maintenant, ça fonctionne toujours mais beaucoup moins bien.

Pour ce qui est des menus, j'ai compris que je dois utiliser l'objet Window mais je ne suis pas satisfait de ma façon d'accrocher un menu à un classeur (j'ai pas trouvé comment l'accrocher à une fenêtre, peut-être que je me trompe dans mon objectif, j'ai découvert récemment que windows.caption et wokbook.name c'est pas toujours équivalent).

Pour ce qui est de mon accélérateur, la sortie est laborieuse avec la création d'une fenêtre Excel vide. En quand il y en a plusieurs faut passer par le gestionnaire des tâches pour fermer Excel.

Jusqu'à présent, j'étais le seul concerné par mes macros et je m'accommodais de ces désagréments. Maintenant que je partage avec mes collègues ce n'est plus acceptable.

Je cherche donc à savoir comment vous faites pour gérer le mulitfenêtre, à comprendre le modèle objet avec les multifenêtres :
  • avec les menus par exemple ajouter/supprimer un menu à toutes les fenêtres, aux fenêtres d'un classeurs...
  • pour l’accélération, tous les trucs et astuces autour de "Visible", "ScreenUpdating", "DisplayAlerts", "EnableEvents", "Calculation" par exemple quel est l'équivalent efficace de "Application.Visible = False" que j'utilise en autre pour masquer les créations/ouvertures/fermetures de fichiers...
Je souhaite plus des explications que du code prêt à l'emploi.

Par avance, je vous remercie de vos réponses.
 

Discussions similaires

Réponses
2
Affichages
99

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG