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)
et en finissant normalement ou avec un "On Error Goto" par
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 :
Par avance, je vous remercie de vos réponses.
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...
Par avance, je vous remercie de vos réponses.